• 推荐
  • 评论
  • 收藏

WCF学习111

2022-11-01    2861次浏览
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

clip_image002

支持的协议增加net.tcp

clip_image004

然后添加的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的选择

clip_image006

根据以上的表选择适合的部署方式即可

原文地址:https://www.cnblogs.com/Leo_wl/p/1966690.html