Method Overloading in WCF zt
Method overloading is the process of implementing Polymorphism in Object-Oriented Programming. A method can be overloaded on the basis of type of parameters, number of parameters, and an order of parameters.
As we know, WCF code is always coded on OOP's based programming language so that it does support method overloading.
Service Interface
Collapse | Copy Code[ServiceContract]
public interface ITest
{
[OperationContract]
string TestMethod(int para1,int para2);
//Initail method
[OperationContract]
string TestMethod(string para1, string para2);
//Overloading on the basis of type of parameters.
[OperationContract]
string TestMethod(int para1, string para2);
//Overloading on the basis of an order of parameters.
[OperationContract]
string TestMethod(int para1, string para2,double para3);
//Overloading on the basis of the numbers of parameters
}
Service implementation
Collapse | Copy Codepublic class Test : ITest
{ public string TestMethod(int para1, int para2)
{
return "TestMethod1";
} public string TestMethod(string para1, string para2)
{
return "TestMethod2";
} public string TestMethod(int para1, string para2)
{
return "TestMethod3";
} public string TestMethod(int para1, string para2, double para3)
{
return "TestMethod4";
}
}
Issues of method overloading in WCF
Once test the above code on WCF test client, it will throw an error contract mismatch because of the WSDL that does n't allow to create duplicate methods for clients.
Collapse | Copy CodeError: Cannot obtain Metadata from http://localhost:61489/Test.svc If this is a Windows (R) Communication Foundation
service to which you have access, please check that you have enabled metadata publishing at the specified address.
For help enabling metadata publishing,
please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:61489/Test.svc Metadata contains a reference that cannot
be resolved: 'http://localhost:61489/Test.svc'. The server did not provide a meaningful reply; this might
be caused by a contract mismatch, a premature session shutdown or an internal server error. HTTP GET Error URI: http://localhost:61489/Test.svc There was an error downloading
'http://localhost:61489/Test.svc'. The request failed with the error message:--<html>
<head> <title>The type 'MethOverWCF.Test', provided as the Service attribute
value in the ServiceHost directive, or provided in the configuration element
system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found
Solution of method overloading issue in WCF
By adding unique operationcontract behavior, we can be achieved method overloading in WCF. OperationContract has the Name property that exposes the WCF methods to WSDL Schemas.
Collapse | Copy Code[ServiceContract]
public interface ITest
{
[OperationContract(Name="Method1")]
string TestMethod(int para1,int para2);
//Initail method
[OperationContract(Name = "Method2")]
string TestMethod(string para1, string para2);
//Overloading on the basis of type of parameters.
[OperationContract(Name = "Method3")]
string TestMethod(int para1, string para2);
//Overloading on the basis of an order of parameters.
[OperationContract(Name = "Method4")]
string TestMethod(int para1, string para2,double para3);
//Overloading on the basis of the numbers of parameters
}
Creating Client and Consuming overloaded WCF service methods
In WCF client, all service methods are called by exact same name as define in the OperationContract but method overloaded methods are called by their attribute name. In the given sample code has four different attributes (Method1, Method2, Method3, and Method4) which are exposed by overloaded TestMethod of WCF.
Collapse | Copy Codeusing WCFConsoleClentApp.MyTest;
namespace WCFConsoleClentApp
{
class Program
{
static void Main(string[] args)
{
TestClient client = new TestClient();
string callMethod1 = client.Method1(1, 1);
string callMethod2 = client.Method2("Test", "Test");
string callMethod3 = client.Method3(1, "Test");
string callMethod4 = client.Method4(1, "Test", 3.5);
}
}
}
Method Overloading in WCF zt的更多相关文章
- 方法重载(method overloading)
为什么需要方法重载? 在编程语言中,名字的使用很重要.创建对象的时候,我们给一块内存区域起一个名字,然后这个名字就是我们创建的对象的引用,只要我们"叫"这个名字,计算机就知道我们在 ...
- WCF分布式开发步步为赢(5)服务契约与操作重载
继上一节WCF分布式开发步步为赢系列的(4):WCF服务可靠性传输配置与编程开发,本节我们继续学习WCF分布式开发步步为赢的第(5)节:服务契约与操作重载.这里我们首先讲解OOP面向对象的编程中方法重 ...
- javascript 函数重载 overloading
函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function over ...
- How To Easily Call WCF Services Properly z
Please note: this article has been superceded by the documentation for the ChannelAdam WCF Library. ...
- WCF分布式开发步步为赢(7):WCF数据契约与序列化
本节继续学习WCF分布式开发步步为赢(7):WCF数据契约与序列化.数据契约是WCF应用程序开发中一个重要的概念,毫无疑问实现客户端与服务端数据契约的传递中序列化是非常重要的步骤.那么序列化是什么?为 ...
- Part 67 to 70 Talking about method parameters in C#
Part 67 Optional parameters in c# Part 68 Making method parameters optional using method overloadin ...
- Three ways to do WCF instance management
Three ways to do WCF instance management (Per call, Per session, and Single). IntroductionVery often ...
- 【转】《我的WCF之旅》博文系列汇总
转自:http://www.cnblogs.com/artech/archive/2007/09/15/893838.html WCF是构建和运行互联系统的一系列技术的总称,它是建立在Web Serv ...
- Polymorphism & Overloading & Overriding
In Java, a method signature is the method name and the number and type of its parameters. Return typ ...
随机推荐
- NSMutableParagraphStyle /NSParagraphStyle
// NSParagraphStyleAttributeName 段落的风格(设置首行,行间距,对齐方式什么的)看自己需要什么属性,写什么 NSMutableParagraphStyle *par ...
- 利用putty实现文件在linux上传和下载
利用putty实现文件上传和下载:1.打开windows命令提示符窗口d:(putty在d盘下)cd putty(pscp.exe所在目录)2:上传(主要利用pscp程序)pscp d:/jdk-8u ...
- 01_反射_04_反射类的main方法
[User.java] package com.Higgin.reflect; public class User { public User(){ System.out.println(" ...
- 深入理解Python中的生成器
生成器(generator)概念 生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束. 生成器语法 生成器表达式: 通列表解 ...
- 基于NodeJs的网页爬虫的构建(一)
好久没写博客了,这段时间已经忙成狗,半年时间就这么没了,必须得做一下总结否则白忙.接下去可能会有一系列的总结,都是关于定向爬虫(干了好几个月后才知道这个名词)的构建方法,实现平台是Node.JS. 背 ...
- nginx 显示discuz页面
我也不知道我题目表述的对不对.我也是刚学习. 安装nginx 显示discuz的界面.我看了好几次视频,也没发现哪的问题.就是一直出现502的错误代码 我又重新查了几次.觉得需要注意一下几点: 1,关 ...
- python相关博客
入门:http://www.pythontip.com/ Python之禅--大道至简 美胜于丑,显胜于隐,简胜于繁,繁胜于杂,平胜于迭,疏胜于密,读胜于写...名可名, 请常名 http://www ...
- js stringObject的indexOf方法
我所写的这个是基本知识的基本知识,为什么我还是要写呢,所谓说好记性不如烂比头,作为一名前端开发人员,太多相似的代码见的又太多,但是又不常见,所以很容易忘记,那我把indexOf原理讲清楚 indexO ...
- hadoop1——map到reduce中间的shuffle过程
---恢复内容开始--- shuffle和排序 过程图如下: MapReduce确保每个reduce的输入都按键排序,系统执行排序的过程——将map输出作为输入传给reduce——成为shuffle, ...
- HTML 5 video 视频标签全属性详解
Video标签的使用 Video标签含有src.poster.preload.autoplay.loop.controls.width.height等几个属性, 以及一个内部使用的标签<sour ...