【引自jillzhang的博客】本文目的:阅读本文,您能了解以下知识
·什么是操作重载?操作重载有什么好处
·WCF的服务端如何解决操作重载的问题?
·WCF的客户端如何解决操作重载问题?
什么是操作重载?操作重载有什么好处
重载指的是在同一个类,接口或者结构中包含多个同名的 方法,而这些方法的参数列表或者返回值各不相同.使用它的好处在于提高模型的强壮性和通用性,使模型在一个可维护统一高度上运行,其功能和返回依赖于传递的参数. 在传统的程序开发中,我们程序员经常使用这种技术,比如一个有一个功能既能够计算两个整数的和,又能计算两个双精度数的和,这样的需求,我们往往会按下面这样书写代码:
|
而在WCF中,还能不能这么干呢?不能!为什么呢?WCF中无论是服务端还是客户端,如果单拿出来一个都是支持操作重载的,但是客户端代理生成的依据却是WSDL,而WSDL是不支持操作重载的,另外客户端调用服务端的一个操作的必须先要确定两个要素:1)操作所属的服务是哪一个?2) 操作在服务中的名称是什么?这样的话,向传统应用程序程序那样重载就会出现问题!
WCF的服务端如何解决操作重载的问题?
如果按照下面的代码来实现一个服务:
服务契约
|
那么,在编译的时候,是没有错误的。此时,我们再按照下面的代码实现一个托管:
|
随后,我们启动托管程序,发现代码在运行到ServiceHost host = new ServiceHost(typeof(Service),new Uri("net.tcp://127.0.0.1:12345"))的时候,发生如下的异常:
这个异常提示我们,同一个协定之中不能存在相同的操作,在WCF中操作重载是不显示适用的。而且问题不在于编译阶段,而在于托管阶段。
但是我们能通过一些改进的手段来获取WCF对操作重载的支持。我们先把服务契约的定义更改为如下的代码:
[ServiceContract]
public interface IService
{
[OperationContract(Name="AddInt")]
int Add(int a, int b);
[OperationContract(Name="AddDouble")]
double Add(double a, double b);
}
相关专题
- PPT教程专题 (92篇文章)
- 详解Visual Studio 2008的安装过程 (398次浏览)
- 用Visual Studio 2008开发Office业务应用程序 (97次浏览)
- Visual Studio 2008的外壳预览 (92次浏览)
- ASP.NET 2.0 中跨网页提交的三种方法 (62次浏览)
- 用C#调外部Ping命令获取网络连接情况 (58次浏览)
- ASP.NET生成静态页面和分页主要的原理 (50次浏览)
- 数据结构(C#)_排序算法(冒泡排序) (44次浏览)
- ASP.NET2.0—— 实现数据访问层 (41次浏览)
- ASP.NET 2.0:AdventureWorks系统分析 (40次浏览)
- 在.NET Framework 3.5中的WCF通信选项 (38次浏览)




