|
|
1
16
您基本上需要看三个选项: 1)在iis6(WindowsServer2003/2003 r2)中托管:在这种情况下,您只能托管HTTP协议,而不能托管其他协议。这本身就是一个很大的限制,您不能将nettcp用于内部网场景。 2)iis7/was中的主机托管(vista,server 2008):这在支持的协议方面为您提供了更多的选择,而且主机托管环境一开始看起来像是一个胜利者。 3)自托管:在这种情况下,完全取决于您如何做您需要做的事情来托管和运行您的服务。 如果你暂时放弃选项1(如果你只有iis6可用,我会一直使用自托管),那么它就只剩下iis7而不是自托管了。 iis7为您提供“按需激活”,例如,您的服务代码始终不在内存中,但在请求进入时将被加载和实例化。那是一个优点。 另一方面,在iis7/was中托管会使您无法指定自己的端点-端点,因此服务地址是“myservice.svc”文件所在的虚拟目录-句点。您不能以任何方式、形状或形式更改。 自我托管看起来可能需要很多工作,但它确实给了你最好的灵活性:你可以根据自己的喜好选择协议,你可以按照自己的喜好建立自己的寻址方案,并且你可以完全控制在什么时候完成。如果需要对主机服务做一些额外的工作,您可以引入自己的自定义服务主机,等等。 除非你只是在玩一点WCF,否则我总是推荐并投票支持自托管-如果你需要让WCF服务一直运行,在Windows NT服务(这是生产环境的最佳解决方案)内,如果你正在开发/调试,你完全可以将WCF服务托管在控制台应用程序中,你可以n在您的闲暇时间启动和停止。 因此,长话短说:最后,如果你真的想控制正在发生的事情,我总是推荐自我托管。 这个 可以 一旦微软推出了新的“都柏林”服务器插件——可能是在2010年初.NET 4发布后的某个时候——就要改变它了——但这还为时过早。 希望这有帮助。 马克 |
|
|
2
6
我更喜欢自己托管的服务(Windows服务)。也就是说,无论走哪条路,都有正当理由。 有一些 valuable articles in MSDN regarding different WCF hosting strategies . 这里是一个 good summary of why you might choose to use IIS 作为您的服务主机。 |
|
3
3
我想说,如果没有iis7,除了使用iis的基于HTTP的端点之外,您不能承载任何东西。因此,您很可能希望自我托管以获得灵活性。 对于您的数据考虑,任何服务都可以使用状态进行编码,以便缓存数据等。 多个请求将要求您使用WCF并发。要在服务主机上设置属性:
WCF是一只大野兽,我建议你看看JuvalLowy的书以及其他你能接触到的东西,你一天也学不到。 |
|
|
4
1
也许有点离题,但它确实涉及到了第四个方面。 如果您最终选择了自托管,并且需要尽可能“针对端点进行配置”,那么您可能需要查看 Managed Services Engine .MSE是由Microsoft Services创建的开放源码产品,允许您虚拟化服务。基本上,它是一个wcf主机,使用自己存储库中的元数据公开服务。一些功能包括:支持服务的并行版本控制、启用/禁用服务上的操作的能力、将操作映射到端点的能力、将策略应用到操作的能力。 我不确定它是否适合您的需要,但值得一看——特别是如果您需要非常可配置的话。 |