菜鸟眼中的WCF(2)—服务协定

在上一篇文章中简单的对WCF进行了讲解并做了一个简单的实例,那么今天就继续对它进行解析——服务协定的初探。

说到协定大家肯定不陌生,只要参加了工作就一定会签订各种协定,比如合同的签订,我们就是其中的一方,按着这个双方签订的合同来工作,它授予你什么权限,你就有什么权限,不能做本职外的工作。各位想一想这个合同的协议,像不像我们这里说的服务协定?是啊,服务协定其实没啥了不起的,刚才签下合作协议的个人和公司分别叫做“客户端”和“服务器”。

服务协定告诉客户端,哪些方法你可以调用,哪些数据类型你可使用,至于公不公开接口让你调用,就完全取决于服务器端如何定义服务协定了。就下来就通过实例来体会一些协议的意义所在。

一、实例一

比如下面这个协定:

<span style="font-size:18px;">[ServiceContract]
public interfaceIServiceA
{
    [OperationContract]
    int AddInt(int a, int b); 

    [OperationContract]
    double AddDouble(double a, double b); 

    float AddFloat(float a, float b);
} 

实现该协定:

public classMyService : IServiceA
{
    public int AddInt(int a, int b)
    {
        return a + b;
    } 

    public double AddDouble(double a, doubleb)
    {
        return a + b;
    } 

    public float AddFloat(float a, floatb)
    {
        return a + b;
    }
} </span>

大家可以猜一下,在客户端中生成的代码中,哪你能看到哪些方法,哪些方法将看不到?上面的服务协定中,我们定义了三个方法,其中前两个是带了操作协定OperationContractAttribute的,而AddFloat方法是没有用标注为协定的。那么,生成的客户端代码会如何呢?

是不是少了一个方法呢?对啊,就是少了AddFloat,还记得吗?我们上面的代码中,AddFloat方法是没有标注为操作协定的。

二、实例二优化对比

现在我们为AddFloat加上操作协定,如下所示。

public interfaceIServiceA
{
    [OperationContract]
    int AddInt(int a, int b); 

    [OperationContract]
    double AddDouble(double a, double b); 

    [OperationContract]
    float AddFloat(float a, float b);
} 

这时候,看看在客户端能看到多少个方法。是否发现方法都可以显示了。

三、总结

通过以上的实例我们会发现,如果定义了操作协定OperationContract,那么这个方法就可以被客户端调用,反之相反。这就提醒我们服务协定一定要结合项目的需求来设置,让它发挥最大的价值。

时间: 2024-11-05 16:30:09

菜鸟眼中的WCF(2)—服务协定的相关文章

菜鸟眼中的WCF(1)

WCF这个被热捧的话题,一直的身边被小伙伴们提起,那么它到底是何方神圣呢?接下来就让我们来从整体上认识一下吧! 一.是什么? Windows CommunicationFoundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windows通讯的 .netRemoting,WebService,Socket的机制,并融合有Http和Ftp的相关技术. 是Windows平台上开发分布式应用最佳的实践方式. 简单的归结为四大部

【WCF全析(一)】--服务协定及消息模式

上周微软开发布会说.NET支持完全跨平台和并开放Core源码的新闻,让我们顿时感到.NET要迎来它的春天.虽然早在几年前.NET就能开发Android和IOS,但是这次的跨平台把Linux都放到了微软战略之中,以后的.NET Developer就可以使用Vs开发Linux应用了,Developer又有了新的选择,从微软的战略转型也可以看出互联网已经步入到了新的模式,以后不再是PC的时代,移动互联和云时代已经到来. 最近做项目时使用到了WCF,项目把数据层和程序层进行了分割,相互之间的数据传输使用

从零开始学WCF(2):设计和实现服务协定

消息 消息是一个独立的数据单元,它可能由几个部分组成,包括消息正文和消息头 服务 服务是一个构造,它公开一个或多个终结点,其中每个终结点都公开一个或多个服务操作 终结点 终结点是用来发送或接受消息(或执行这两种操作)的构造. 终结点包括: 一个定义消息可以发送到的目的地的位置(地址 Address) 一个描述消息应如何发送的通信机制的规范(绑定 Binding) 对于可以在该位置发送或接受(或两者皆可)的一组消息的定义(服务协定)该定义还描述了可以发送何种消息. WCF服务作为一个终结点集合向外

WCF基础之设计和实现服务协定

本来前面还有一个章节“WCF概述”,这章都是些文字概述,就不“复制”了,直接从第二章开始. 当然学习WCF还是要些基础的.https://msdn.microsoft.com/zh-cn/hh148206这个就是“原文”了,喜欢WCF的可以自己去下载. WCF简单术语: 消息:消息是一个独立的数据单元,主要由消息头和消息正文组成,入门的时候我对它的理解简单说:发送一个消息,就是调用了一个方法,具体的以后再说. 服务:服务说简单点就是终结点的集合. 终节点:即包含我们所谓的WCF的ABC三要素的接

WCF 设计和实现服务协定

WCF 术语:? 消息 – 消息是一个独立的数据单元,它可能由几个部分组成,包括消息正文和消息头.? 服务 – 服务是一个构造,它公开一个或多个终结点,其中每个终结点都公开一个或多个服务操作.? 终结点 – 终结点是用来发送或接收消息(或执行这两种操作)的构造. 终结点包括一个定义消息可以发送到的目的地的位置(地址).一个描述消息应如何发送的通信机制规范(绑定)以及对于可以在该位置发送或接收(或两者皆可)的一组消息的定义(服务协定)- 该定义还描述了可以发送何种消息. – WCF 服务作为一个终

【架构之路之WCF全析(一)】--服务协定及消息模式

上周微软开发布会说.NET支持完全跨平台和并开放Core源码的新闻,让我们顿时感到.NET要迎来它的春天.虽然早在几年前.NET就能开发Android和IOS,但是这次的跨平台把Linux都放到了微软战略之中,以后的.NET Developer就可以使用Vs开发Linux应用了,Developer又有了新的选择,从微软的战略转型也可以看出互联网已经步入到了新的模式,以后不再是PC的时代,移动互联和云时代已经到来. 最近做项目时使用到了WCF,项目把数据层和程序层进行了分割,相互之间的数据传输使用

WCF初探-14:WCF服务协定

前言: 在前面的文章中,我们定义的服务协定上都会有一个ServiceContract的特性来修饰,这是因为服务契约的实现要靠ServiceContractAttribute 属性定义,然后使用一个或多个类(或接口)方法中的 OperationContractAttribute 属性定义协定的服务操作. 实现服务协定后并将其与WCF 绑定和 EndpointAddress 对象一起使用时,此服务协定将公开以供客户端使用. 公开的信息由 ServiceContractAttribute 表示,其接口

WCF系列教程之WCF服务协定

本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆 一.服务协定简介: 1.WCF所有的服务协定层里面的服务接口,都有一个ServiceContract的特性修饰,服务接口里面的操作方法都有OperationContract特性修饰,why? (1).服务契约的实现要靠ServiceContractAttribute 属性定义 (2).服务契约方法的实现要靠 OperationContractAttribute

[转] 传说中的WCF(2):服务协定的那些事儿

上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说"态度决定一切",这句话,不知道各位信不信,反正我是信了.首先,敢于挑战自我,乐于接受新事物的人,就不会觉得有啥难学的,"世上有难事,只怕有心人":再者,WCF当然复杂了,整个.NET框架都复杂,但不难学,因为.NET有一个先天性优点--集成性和统一性严重地好,这也是我乐于研究.NET的主要原因之一,复杂但不混乱.一个统一的国家总比一个