【前言】
最近在接触soa的时候接触了一下wcf,想想以前接触的Web service主要利用http和soap协议使用商业数据在web上传输。通过web调用web service可以执行从简单的请求道复杂的上午的任何功能。而wcf是支持多种的协议,目前更加主流的一种架构!
【内容】
wcf的基本概念:以契约(contract)来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务必须要有这些合约接口派生并实现。
合约的组成:
1.数据契约(Data Contract):定制双方沟通的数据格式。
2.服务契约(Service Contract):服务的定义。
3.操作契约(Operation Contract):服务提供的方法。
4.消息契约(Message Contract):通信期间改写信息内容的规范
协议绑定:
绑定是一个制定好的通道栈,包含了协议通道,传输通道和编码器。从功能上看,一个绑定继承了通信模式,可靠性,安全性,事务传播和互操作性等设置。
绑定的基本设置:
在wcf程序中,有两种方式来设置绑定:1.在代码中绑定;2.在配置文件中绑定(更常用)
举例在配置文件中:
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<system.serviceModel>
<services >
<service name="WinformHello.HelloService" behaviorConfiguration="TestBehavior" >
<host>
<!--基本地址-->
<baseAddresses>
<add baseAddress="http://localhost:8080/hello"/>
</baseAddresses>
</host>
<!--终结点三要素,其中bing是和address有关的,但是contract是和定义的接口服务有关的-->
<endpoint address="" //地址:上面已经定义过了,就不需要再定义了。
binding="basicHttpBinding" //绑定
contract="WCFserviceDemo.Ihelloservice"> //契约
</endpoint>
</service>
</services>
<!--允许访问-->
<behaviors>
<serviceBehaviors>
<behavior name="TestBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
wcf支持:http,tcp,Named Pipe,MSMQ,Peer-To-Peer Tcp等协议
wcf的优势:
特性 | WebService | .NetRemoting | Enterprise Services | WSe | MSMQ | WCF |
具有互操作性服务 | 支持 |
|
|
|
| 支持 |
.net到.net的通信 |
| 支持 |
|
|
| 支持 |
分布式事务 |
|
| 支持 |
|
| 支持 |
支持WS标准 |
|
|
| 支持 |
| 支持 |
消息队列 |
|
|
|
| 支持 | 支持 |
1.统一性。
2.互操作性
3.安全与可信赖
4.兼容性
【总结】
其实wcf就是SOA架构一种体现,wcf主要通过契约定义了一致的接口,可以让用户统一的访问。当然我们本文主要是讲了一些基础的东西,在社么情况下使用哪一种绑定,还需要我们根据实践的经验去分析!希望本文可以你有帮助!
感谢您的时间!