您的位置:首页 > 其它

跟我一起学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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: