【框架】——WCF

来源:互联网 发布:2017网络最火歌曲 编辑:程序博客网 时间:2024/05/16 01:48

概念:

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架。

    WCF 的基本概念是以契约(Contract) 来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。

契约:

    客户端调用服务端的数据,服务,操作,消息等信息时,双方都应提前制定好合约,以实现安全调用。若没有契约,则表明不予调用。

    契约分成了四种:

    数据契约(Data Contract):制定双方沟通时的数据格式。

    服务契约(Service Contract),制定服务的定义。

    操作契约(Operation Contract),制定服务提供的方法。

    消息契约(Message Contract),制定在通信期间改写消息内容的规范。

格式:

如:操作契约:

[Operation Contract]

ITOO中:

namespace ITOO.ExamEvalQueryResult.Contract{     [ServiceContract]//服务契约    public interface IQueryResultService    {         [OperationContract]//操作契约         string Test();                  [OperationContract]//操作契约         List<AssessScore> QueryAssessScoreByPage(string strConditions, int pageSize, int pageIndex, out int total);         }
    若在此段代码没有[OperationContract]这些契约,在客户端运行时就无法调用此方法。


协议绑定:

    由于 WCF 支持了HTTP,TCP,Named Pipe,MSMQ,Peer-To-Peer TCP 等协议,而 HTTP 又分为基本 HTTP 支持 (BasicHttpBinding) 以及 WS-HTTP 支持 (WsHttpBinding),而 TCP 亦支持 NetTcpBinding,NetPeerTcpBinding 等通信方式,因此,双方必须要统一通信的协议,并且也要在编码以及格式上要有所一致。

格式:

如:

<!-- 设定服务系结的资讯 -->
<services>
<service name=" CalculatorService" >
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" />
</service>
</services>
ITOO中:

      <!--角色服务-->      <endpoint address="http://192.168.22.242:7054/AuthorityRoleManageService.svc?wsdl" binding="wsHttpBinding" bindingConfiguration="WsHttpBinding_Default" contract="ITOO.AuthorityRoleManage.Contracts.IAuthorityRoleManageService" name="WsHttpBinding_Services" />     

总结:

今天敲框架的时候遇到一个错误:


    至少需要一个操作,那就是说IQueryResultService里没有写方法喽,打开一看,确实是空的,于是开始在IQueryResultService中添加方法,结果问题依旧没有解决。

    通过一系列的查找、尝试,发现真正的原因其实是:没有写[Operation Contract],没有这个契约,及时这里有方法,也调不到啊......


1 0
原创粉丝点击