【WCF学习随笔四】服务契约。

      到手的实习,因为逗逼学校的逗逼安排,时间冲突了就没了。我想去北上广深工作,但是工作实在不好找,谁能告诉我怎么办?

      最近出了忙着了解学习WCF,还忙着张罗C++的学习,为什么呢?各位.NET学习者,不是我打击各位,实话说,.NET岗位真不好找。经历了很多校招的我,清楚的了解大多数企业并不需要.NET开发者,连对Windows编程的需求都少之又少,只有腾讯360这种在PC上还有很大比例业务的公司还在招Windows编程相关人才,其他更多的则是要求在Unix/Linux下的c/c++/java开发。按我了解,现在.NET多用在开发要求维护开发快、维护成本低、长时间运行稳定且用户量少的企业/政府项目,这些项目一般用户体验都不需要太好,对内承载少量员工的使用,比如医院、超市那些十几年都不升级一下的数据管理系统。对外承载少量用户的简单操作,比如通管局的域名备案信息查询啊,或者市政府的“百姓热线”提交个文本信息啊,之类之类的。除此之外,我们几乎很难看到其他队.NET的需求了,游戏?手机?等有人用再说!人家美国那边都怎么怎么样多人用xbox?这个问题,只能两个解决方法,1你成为美国人,2让中国成为美国不可分割的领土。

发完牢骚,言归正传。

契约(Contract),就是用于指定服务端内容是否能被客户端访问的规矩。契约分四种:服务契约、数据契约、消息契约、错误契约。

服务契约,是用来规定为外界提供服务的接口是否能被外界访问、以及接口包含的方法是否能被外界访问的。

   [ServiceContract(Name="Service")]
    public interface Ihello
    {
       [OperationContract(Name = "Service1")]
       string hello();
       [OperationContract(Name = "Service2")]
       string sayhello(string str);

       string sayfuck();
    }
   public interface Ifuck
   {
       string fuck();
   }

      上篇讲过,在接口前加[ServiceContract]表示这个接口可以被外部访问,接口内的方法则要加上[OperationContract]来表示该方法允许被外部访问。如果接口没有被[ServiceContract]标记,里面的方法怎么标记,都是无法被外部访问到的。
      所以从上面的代码,就可以看到Ihello接口是可以被外部程序访问到的,其中的hello和sayhello方法可以被访问到,sayfuck方法则不能。而整个Ifuck接口里的所有内容都无法被外部程序访问到。

      这两个服务契约方括号里,小括号内的内容是可选的,可以写也可以不写。这个Name属性,实际上就是一个别名,发布后通过外部程序访问可以得到的就是Name属性指定的名字,真实的接口、方法名称将不能被看到。

现在是3月18日1:28 AM,上面的所有内容是完成于16日晚。

经过学习,在这里解释一下那两个服务契约方括号到底是什么:

      好了,这是VS代码提示的注释截图。这是两个自定义特性的应用,服务契约虽然通过接口、类这样的面向对象的元素承载,但是其本身却属于面向服务的范畴,并不具有像方法重载、类型继承这样的面向对象的特征。(via 《WCF全面解析》--奖金男)

      .Net不是开源了嘛?大家可以去翻翻这两个类是什么东东,有助于理解。

      服务契约因为在上篇提到过,理解和操作起来非常简单,所以内容就只有那么多了。我本以为一篇文章可以搞定四个契约,但是我发现我图样图森破了,要讲完一个数据契约就需要比较长的篇幅,更别说消息契约了。所以今晚把本文匆匆手篇,早睡早起,明早起来写一片篇详解数据契约。各位晚安!

原文地址:https://www.cnblogs.com/ffxdz/p/3603541.html