WCF服务,寄宿在Winform窗体中,项目中的性能问题,急需人才给点点子

这个问题很紧急,希望知道的朋友能够告诉我,或者来视频或语音交流也在所不惜,因为我这方面的经验实在是太缺乏了...

说下项目的具体环境:

1. Andirons前端点菜,基于IPad的点菜系统

2. WCF后台服务(很简单的WCF服务,就使用了一下ServiceHost开启下服务,发布一下定义的接口)

 

说下我的问题:

1. 10台IPad同时提交菜单,会出现卡死的现象(这个卡死就是反应时间太长,隔个半天才有反应)

(当时我的猜测是后台窗体是单线程操作,会出现排队等待的现象,是否应该使用异步(多线程)来做)

这种问题是否是并发问题,该怎么解决呢?

 

2. 如果WCF服务开的时间长了,那么Andirons端在调用的时候会出现延迟的情况

(为什么服务的开的时间越久,Andirons端调用的反应也会越来越慢)

Service重启之后,速度就会非常的快,这到底是什么原因呢?

 

3. 对于第一个问题,如果每个跟数据库交互的方法都要用异步来做,编程困难会不会很大

 

下面是我的AppConfig文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="LoggingManager" type="Transight.Common.Logging.LoggingManagerSection,Transight.Common.Logging"/>
    <section name="DBAccessBroker" type="Transight.Common.DBAccessBroker.DBAccessBrokerSection,Transight.Common.DBAccessBroker"/>
    <section name="MessageBusService" type="Transight.Common.MessageBus.Transports.TransportSettings,Transight.Common.MessageBus.Transports"/>
  </configSections>
  <system.serviceModel>
    <services>
      <service name="Transight.POS.FrontendService.JsonService.Operations" behaviorConfiguration="FrontendService">
        <endpoint
          address="" binding="basicHttpBinding"  bindingConfiguration="httpBinding_Config"
          contract="Transight.POS.FrontendService.Contracts.IJsonOperation" >
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/FrontendWebService/"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="FrontendService">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="httpBinding_Config" maxReceivedMessageSize="2147483647"   maxBufferSize="2147483647" messageEncoding="Text"
          sendTimeout="00:10:00">
          <security mode="None"></security>
          <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647"/>
        </binding>
      </basicHttpBinding>
    </bindings>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
  </system.serviceModel>
  <LoggingManager>
    <Loggings>
      <add LoggingName="Default" LoggingEntity="FileLogging" LogFilePath="c:\Log" LogSeparateByLevel="true" LogFileName="Transight.POSV4.Logs"/>
      <!--<add LoggingName="PluginRuntime" LoggingEntity="FileLogging" LogFilePath="c:\Log" LogSeparateByLevel="true" LogFileNamee="Transight.POSV4.Logs" LogSource="PluginRuntime"/>
      <add LogSource="PrintingMgr" LoggingName="PrintingMgrLog" LoggingEntity="FileLogging" LogFilePath="c:\Log" LogSeparateByLevel="true" LogFileName="Transight.POSV4.Logs"/>
      <add LogSource="PrintingJob" LoggingName="PrintingJobLog" LoggingEntity="FileLogging" LogFilePath="c:\Log" LogSeparateByLevel="true" LogFileName="Transight.POSV4.Logs"/>-->
    </Loggings>
  </LoggingManager>
  <DBAccessBroker>
    <DBAccess FullName="Transight.Common.DBAccess.SQLDBAccess" Namespace ="Transight.Common.DBAccess"/>
    <DBConnections>
      <add ConfigFile="C:\CommonConfig.xml" ConnStringNode="ConnStr" IsConnStrEncrypted="false" SystemName="Tablet" IsServer="false"/>
    </DBConnections>
  </DBAccessBroker>
  <MessageBusService ServiceAddress="net.tcp://192.168.23.50:8787/MessageBusService" />
</configuration>
互换的青春
浏览 933回答 22
22回答

胡子哥哥

对。可以 放在console中。

蓝山帝景

这个好像不现实了,项目已经做的快好了,现在该宿主会很麻烦的!

至尊宝的传说

@程序猿就是我: 是不是 宿主 有何 ui 进行交互的地方呢?按理说 开几个 是没有问题的哦。本来 就是多线程哦。除非 有共享资源哦。

海绵宝宝撒

@無限遐想: 宿主 改 一下。怎么会麻烦呢?你直接在program理,直接启动就好了。不要调用窗体。加一个console.readline()

翻翻过去那场雪

@無限遐想: 哪有这么容易就能改变啦,因为这个窗体里面还有一些操作!

慕尼黑8549860

1,把配置拿出来看看,并发10个不算什么。 2,说明程序写的有问题,有资源没释放或者内存泄露的情况,很有可能数据库连接用完没释放。 3,推测点菜什么的数据量不大,逻辑也不耗时,没必要异步。 4,如上,另外用个非UI线程用来跑host

MYYA

你想看AppConfig文件吗?

Cats萌萌

配置文件已经贴上去了,求指教!

慕莱坞森

@arg: 谢谢你啊,我会认真看文章的,有问题我再联系你啊!

ibeautiful

寄宿在IIS吧,自寄宿的EXE,默认都是单线程处理的。。。。。。。。。。。。 所以越来越慢。。。。。。。。。
打开App,查看更多内容
随时随地看视频慕课网APP