C#-中间层的WCF托管

我们正在为我们的应用程序套件开发一个新的中间层.我们希望用C#重写业务逻辑和数据访问层,因为它们当前在VB6中并通过COM发布.

我们试图确定的是如何使中间层对不同的客户可用.我们将使用WCF进行此操作,并且我们决定将使用各种绑定来满足每个不同客户端的需求,包括用于桌面应用程序的netTcpBinding,net.Tcp和/或命名管道本地运行或在网络内的计算机上运行的Internet应用程序的绑定,以及外部Web API的某种HTTP绑定.

我们试图决定的是如何托管我们的服务.似乎我要说的大多数地方都是IIS,但是,如果它在Windows Service下,则似乎可以从BLL / DAL部分获得更好的性能,并且@marc_s似乎在这里经常建议自我托管.那么,我们是否将它托管在IIS下,服务之下或某种混合形式下,也许在IIS中托管一个瘦服务作为HTTP终结点,并通过net.tcp或命名管道绑定使用主服务?分离出来可以在需要时进行物理分离,并允许IIS关闭,这仍将为那些访问其发布的终结点的客户端保持服务运行状态.

另外,可伸缩性和可靠性又如何呢?这样,两个托管环境之间有很大区别吗?

我意识到有很多与此类似的问题,但是我一直无法找到我一直在寻找的信息,因此,指向更具体帮助的链接以及答案都是可行的.

解决方法:

阅读此答案似乎表明,基于接受自己编写主机的开销,marc_s倾向于使用自我托管:

IIS WCF service hosting vs Windows Service

IIS免费为您提供了很多东西.我想说,事先考虑一下这不是一个坏主意,但是没有什么比测量性能指标更好的方法来获得关于最适合您的解决方案的冷酷事实.

尝试使用IIS,如果确实如此,请创建自己的主机.在IIS中运行它并不昂贵,而且网络上有一些调优技巧.

更新:在marc_s发表评论后发布了此内容.我原则上同意,但是自己做托管可能无济于事. IIS在某种程度上是开箱即用的,它具有局限性-您可能从未遇到过的局限性.

我不确定此反馈的相关性,但是我们使用IIS为我们的应用程序托管.NET Remoting对象.目前,它正在经历相当多的性能指标收集过程,以准备由于新客户而将比例提高近10倍.对于我们来说,IIS还没有被认为值得担心.人们唯一遇到的问题是它是通过HTTP(对于我们来说是IIS的较旧版本)进行的,因此与TCP相比,消息量更大.

更新:这篇MSDN文章涉及自托管,并讨论了一些要考虑的问题:

http://msdn.microsoft.com/en-us/library/bb332338.aspx#msdnwcfhc_topic3

上一篇:PRINCE2有用吗?


下一篇:HTTP 协议 Host 请求头的作用