WCF学习111
WCF的基础ABC和Endpoint,对于常见的场景如果这么多的组合显然也很复杂,实际的应用中根据具体的场景选择对应的方式
图书”Programming WCF Services”(WCF服务编程) 对这个组合进行了详细的总结,如下:
【对于WCF的基础知识可以参阅图书或其他资料】
绑定和安全场景
绑定
局域网场景
互联网
B2B 场景
匿名场景
无安全场景
BasicHttpBinding
No
No
Yes
No
Yes
NetTcpBinding
Yes
Yes
No
Yes
Yes
NetPeerTcpBinding
No
No
No
No
Yes
NetNamedPipeBinding
Yes
No
No
No
Yes
WSHttpBinding
No
Yes
Yes
Yes
Yes
WSFederationHttpBinding
No
No
No
No
WSDualHttpBinding
No
Yes
Yes
Yes
Yes
NetMsmqBinding
Yes
No
No
Yes
Yes
安全场景特性
特性
局域网场景
互联网
B2B 场景
匿名场景
无安全场景
Transport
Yes
No
No
No
No
Message
No
Yes
Yes
Yes
No
Service authentication
Windows
Ceritificate
Ceritificate
Ceritificate
No
Client authentication
Windows
ASP.NET
Ceritificate
No
No
Authorization
Windows
ASP.NET
No/ASP.NET
No
No
Impersonation
Yes
No
No
No
No
实现参考
该书描述了一个基于声明的框架类库,使用这个库可以方便的建立以上不用场景的应用,基于这个我实现了一个demo的演示,通过这个过程对WCF有了比较深入的了解,对于小组人员的入门和快速使用比较有用。
demo下载地址: http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/ProgWCF.rar
详细运行参考代码中的Readme.txt 和注释
Intranet
Transport保护
使用tcp绑定
windows集成的安全
Internet
只能使用Message形式的保护,需要数字证书
tcp wsHttp绑定
使用Membership进行安全认证
Anoymous
使用Message形式的保护,需要数字证书
tcp wsHttp绑定
None
消息不保护
http tcp wsHttp绑定
B2b
BasicHttpBinding WSHttpBinding WSDualHttpBinding
参考:Programming WCF Services [ISBN: 978-0-596-80548-7]
对WCF的使用进行分类的介绍,实际开发完成涉及到部署的问题,根据如下的资料参考实际情况选择部署方式
部署方式:自承载、IIS承载和Appfabric承载
IIS服务承载
使用svc扩展实现,如下配置
<add path="*.svc"
verb="*"
type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false" />
</httpHandlers>
如何使IIS能够承载net.tcp等其他协议
两步配置:
网站绑定加上net.tcp
支持的协议增加net.tcp
然后添加的svc服务自动就支持了http和net.tcp绑定
手动设置无svc文件的服务
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
<serviceActivations>
<!--无svc的服务,须在IIS中net.tcp协议才能启用-->
<add relativeAddress="demo.svc" service="WCfSvc.DemoWcf" />
</serviceActivations >
</serviceHostingEnvironment>
<services>
<service name="WCfSvc.DemoWcf">
<!--多个终结点的不同协议支持-->
<endpoint address="ws" binding="wsHttpBinding" name="http" contract="Contracts.ICarRentalService"/>
<endpoint binding="basicHttpBinding" name="http" contract="Contracts.ICarRentalService"/>
<endpoint binding="netTcpBinding" name="tcp" contract="Contracts.ICarRentalService"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors
Hosting的选择
根据以上的表选择适合的部署方式即可
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息