跟我一起学WCF(5)——深入解析服务契约[上篇]
2014-10-22 08:09
246 查看
一、引言
在上一篇博文中,我们创建了一个简单WCF应用程序,在其中介绍到WCF最重要的概念又是终结点,而终结点又是由ABC组成的。对于Address地址也就是告诉客户端WCF服务所在的位置,而Contract又是终结点中比较重要的一个内容,在WCF中,契约包括服务契约、数据契约、消息契约和错误契约,在本篇博文将解析下数据契约的内容,关于其他三种契约将会后面的博文中陆续介绍。二、引出问题——WCF操作重载限制
C#语言是支持操作重载的,然而在WCF实现操作重载有一定的限制。错误的操作重载实例:[ServiceContract(Name = "HellworldService", Namespace = "http://www.Learninghard.com")] public interface IHelloWorld { [OperationContract] string GetHelloWorld(); [OperationContract] string GetHelloWorld(string name); }
如果你像上面一样来实现操作重载的话,在开启服务的时候,你将收到如下图所示的异常信息:
namespace Client { class Program { static void Main(string[] args) { using (var proxy = new HellworldServiceClient()) { // 通过代理类来调用进行服务方法的访问 Console.WriteLine("服务返回的结果是: {0}", proxy.GetHelloWorldWithoutParam()); Console.WriteLine("服务返回的结果是: {0}", proxy.GetHelloWorldWithParam("Learning Hard")); } Console.Read(); } } }
View Code
此时的运行结果和前面客户端返回的运行结果是一样的。
五、总结
到这里,本文的内容就介绍结束了,本文主要解决了在WCF中如何实现操作重载的问题,实现思路可以概括为利用OperationContractAttribute类的Name属性来实现操作重载,而客户端的实现思路可以概括为重新代理类,利用信道Channel类带对对应的服务方法进行调用,最后,实现了把WCF服务寄宿在Windows Services中,这样WCF服务可以作为服务在机器上设置开机启动或其他方式启动了。在下一篇博文中将分享WCF服务契约的继承实现。本人所有源代码下载:WCFServiceContract.zip
相关文章推荐
- 跟我一起学WCF(6)——深入解析服务契约[下篇]
- WCF学习(二)-------服务契约
- COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约
- Enterprise Library深入解析与灵活应用(8):WCF与Exception Handling AppBlock集成[上]
- WCF中的服务契约(Continued)
- WCF中的服务契约
- WCF服务契约 听课笔记
- ConcurrencyMode.Multiple模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响[上篇]
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]
- [原创] WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]
- WCF开发之服务契约
- WCF后传系列(1):深入WCF寻址Part 1—Web服务寻址规范
- [导入]构建WCF面向服务的应用程序系列课程(2):WCF契约设计.zip(14.27 MB)
- [导入]构建WCF面向服务的应用程序系列课程(3):契约版本处理.zip(15.79 MB)
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[上篇]
- COM(VB/VBA/Script)利用服务标记调用WCF服务之一使用类型化契约
- [导入]WCF后传系列(1):深入WCF寻址Part 1—Web服务寻址规范
- WCF分布式开发步步为赢(6):WCF服务契约继承与分解设计
- “Diebold XFS服务”源代码级深入解析
- WCF服务中数据契约的命名空间疑问