前言

第五集比较简单,视频也只有7分多钟,但是用处还是挺大的。下面我会介绍。

本来想第六集一起介绍的,后来发现第六集内容比较多,有半个多小时,就不一起了。网站规定6小时内只能发布一篇文章到首页,,那我就11点再发布吧。

第五集 How to make changes to WCF service without breaking clients (在不修改客户端的情况下更新WCF服务)

这集的大部分代码用的是第三集的内容。他的场景是这样的:假设我们已经写好了服务,但是某天重构代码的时候发现有个ServiceContract名字需要修改,服务端当然没事,改接口名字,改配置文件,一切顺利。但是客户端就不那么轻松了,我最先想到的就是客户端重新引用服务,显然这是一种极其不合理的方法,因为那样所有调用这个合约的地方都要去修改。。。否则就是一个Error。

这集提供了一个解决方法,假设我们新的ServiceContract名字为IHelloServiceChanged,那么只需要修改他的ServiceContract特性的Name 属性,是不是很简单。代码如下:

    [ServiceContract(Name = "IHelloService")]
public interface IHelloServiceChanged
{
[OperationContract]
string GetMessage(string name);
}
那为什么这样可行呢?
让我们来看一下两者的mex,通过地址栏里面输入 http://localhost:8080/mex
首先是原先的,我们搜索一下portType关键字,我们只截取关键的:
 

我们看到这里有个name属性,名字是IHelloService;

然后再看当合约接口的名字改成IHelloServiceChanged之后:

name变成了IHelloServiceChanged。

我们知道,客户端在添加服务引用,然后生成本地的代理类的时候,是通过解析服务提供的mex地址中的xml描述信息来执行的,所以,我们只要让这个name还是保持原来的名字,服务端任他变动都没有关系。

再来看看给ServiceContract 特性添加name属性之后的mex内容:

可知,name属性已变为我们定义的内容。

ServiceContract 特性用来定义类的名字,里面的OperationContract用来定义方法的名字,如果某天我们改变了方法的名字,又不想让客户端重新引用,只需要定义OperationContract的name属性。

第五集介绍完毕。

Thank you!

年前辞职-WCF入门学习(5)的更多相关文章

  1. 年前辞职-WCF入门学习(4)

    前言 上一篇的学习中碰到一个问题,用地址http://localhost:8080/mex 访问元数据的时候一直提示400 bad request 错误,因为时间太晚了,查了好几遍代码,也没有发现问题 ...

  2. 年前辞职-WCF入门学习(1,2)

    前言 周一的时候辞职了,离开了从12年毕业后8月份开始一直到现在的公司. 辞职之后当然是玩.玩了若干天的游戏,真的是没日没夜啊,但是玩的太坑,怒删游戏.话说上次玩还是在14年7月份.下次还是过年回家再 ...

  3. 年前辞职-WCF入门学习(3)

    前言 [2了,刚写好的,手贱,点了删除,还真TMD的删除了,只好重写] 今天周六,去同事家聚了一个餐,感觉各种豪华. 废话不多说,前两集大致介绍了一下什么是WCF以及和WCF相关的WebService ...

  4. 年前辞职-WCF入门(6)

    前言 昨天早上去医院做入职体检,被告知要预约,本以为是要排队,我连视频都准备好了...结果就回来了.下午去了新公司那边找房子,2了,因为公司提供了班车列表,我既然就只在班车所经过的几个地方找,却遗漏了 ...

  5. WCF入门学习2-控制台做为宿主

    Step1.创建一个WCF类库和一个控制台程序. Step2.引用WCF项目. Step3.添加这两个引用. //本段代码出处 无废话WCF入门教程系列 Uri baseAddress = new U ...

  6. 菜鸟级别的WCF入门学习

    这两天学习WCF,看了MSDN上的入门教程,和查找了一些网上给的例子,简单的实现了一下,感觉应该很适合我这种菜鸟级的选手看了. 1.新建一个项目--WCF--WCF服务应用程序 用的是MSDN上的加减 ...

  7. WCF入门学习3-配置文件与部署iis

    配置文件设置 --------------------------------------------------- 创建的时候都会有个配置文件,其实有一个WCF配置编辑器,右键就可以点出来设置. 需 ...

  8. WCF入门学习1-最简单的一次通信

    跟着msdn的教程试了一下wcf,真心好用 1.先创建一个wcf服务库,是服务类库,远程的lib 2.全部按照默认设置,不修改.然后点发布,会出现一个wcf测试客户端,可以看有没有发布成功. 3.ms ...

  9. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

随机推荐

  1. Storm 基础知识

    分布式的实时计算框架,storm对于实时计算的意义类似于hadoop对于批处理的意义. Storm的适用场景: 1.流数据处理:storm可以用来处理流式数据,处理之后将结果写到某个存入中去. 2.持 ...

  2. Web安全--XSS现代WAF规则探测及绕过技术

    XSS现代WAF规则探测及绕过技术初始测试 1.使用无害的payload,类似<b>,<i>,<u>观察响应,判断应用程序是否被HTML编码,是否标签被过滤,是否过 ...

  3. Openstack-Ceilometer-SNMP的使用

    1. 物理服务器配置 1.1安装 #yum install -y net-snmp net-snmp-utils 1.2      配置 复制[附件]中snmpd.conf文件到/etc/snmp/目 ...

  4. 孙鑫视频学习:VS2010中找不到【Tab order】菜单项

    在学习孙鑫视频中,修改Tab顺序时,找不到VC6.0中提到的[Layout]->[Tab order]菜单项,但VC2010中可以用Ctrl+D调出来Tab顺序,或者[格式]->[Tab键 ...

  5. codeforces 721C C. Journey(dp)

    题目链接: C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...

  6. HDU 4282 A very hard mathematic problem --枚举+二分(或不加)

    题意:问方程X^Z + Y^Z + XYZ = K (X<Y,Z>1)有多少个正整数解 (K<2^31) 解法:看K不大,而且不难看出 Z<=30, X<=sqrt(K) ...

  7. UESTC 31 饭卡(Card) --背包问题

    背包问题. 思路:如果m<5,此时也不能消费,所以此时答案为m m>=5: 求出背包容量为m-5,买前n-1样便宜的菜(排个序)的最大价值(即最大消费,即消费完后剩余值最接近5)最后减去最 ...

  8. 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733

    1.POJ 1733 Parity game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5744   Accepted: ...

  9. Android系列之UI组件----Menu菜单

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  10. Unity的物理材质

    Physic Materials资源包 在Unity中的项目导入Unity自带的资源包 Physic Materials,自带的资源包有不同种类的物理材质: Bouncy:有弹性的 Ice:结冰 Me ...