【发布时间】:2009-06-20 18:57:27
【问题描述】:
我正在使用 WCF 和 NetTCP 服务编写企业级应用程序。我最初出于好奇选择了 NetTCP,但后来确定它对我来说是最佳选择,因为由于涉及的数据处理量,我可以拥有需要 5 个多小时才能返回结果的调用服务。
我目前生成服务的方式是一个多步骤的过程。我有一个配置部分(使用 System.Configuration),它指定了一些默认内容(端口号、连接客户端的服务器名称、是否启用 HTTP 以及 NetTCP 等),并且在下面有一个“服务”集合它。例如,这是一个基本的样子:
<serverConfiguration tcpListenerPortNumber="60000" httpGetEnabled="true" httpListenerPortNumber="6000" serverName="localhost" retryEnabled="true" retryInterval="5" maxRetryAttempts="3">
<services>
<add virtualDirectory="Service1" applicationName="Service1" assembly="SampleService" type="SampleService.Service1" />
</services>
</serverConfiguration>
基本上这里发生的事情是我的 Windows 服务启动并查看
我遇到的“问题”是这个应用程序托管了大约 20 个服务,并且所有服务都需要 15-20 秒才能启动并运行。我做了线程和 AppDomain 部分以将其降低到该值(过去每个服务都按顺序打开时需要一分钟以上),但在我看来,这实际上可以快得多。
有人有什么建议吗? Google Bing 有大量用于托管一项服务的示例,但我在现实世界的应用程序中没有找到太多的示例(遗憾的是,“Hello World”对最终用户没有吸引力)。如果您当前通过 Windows 服务和 NetTCP 托管多个服务,您是如何做到的?
【问题讨论】:
-
它需要比这更快吗?如果它每天只启动一次,那么这就是每天 20 秒。时间不长。
-
它主要是在调试过程中速度较慢,所以这是我试图挤出性能的主要领域。服务本身将无限期运行(当然要减去重启等)。
标签: wcf multithreading windows-services appdomain nettcpbinding