使用WCF服务的正确方法?

时间:2013-06-19 07:02:25

标签: c# wcf

我从MSDN开始遵循本指南来托管一个简单的WCF服务。

但客户端使用它的正确方法是什么?

6 个答案:

答案 0 :(得分:4)

最常用的选项是:

  • Generate proxy with Visual Studio or use svcutil。这意味着它是为您自动生成的,因此它非常易于使用,并且主要用于服务的客户端在系统外部。但是因为它生成了代码,所以你失去了一些控制权。
  • 如果客户端与服务紧密绑定,请使用ChannelFactory。我最喜欢这种方法,因为你直接使用接口。在大多数情况下,我提供了一个 service agent 来抽象使用该服务,以便客户不必担心它。在此服务代理中,您还可以提出其他问题,如缓存和日志记录。

答案 1 :(得分:3)

您可以在MSDN上继续学习。

有几种选择:

  1. 使用 svcutil 生成客户端
  2. 在VS解决方案上下文菜单中使用添加服务参考
  3. 自己创建客户端(不推荐用于 初学者)
  4. 注意:前两个选项需要已经运行服务。

答案 2 :(得分:1)

我个人更喜欢通过创建ChannelFactory<T>然后创建与之通信的频道来使用WCF服务。

示例:

ChannelFactory<IProcessor> factory = null;

try
{
    var netTcpBinding = new NetTcpBinding("netTcpBinding_BigPackets");

    factory = new ChannelFactory<IProcessor>(netTcpBinding);

    var processor = factory.CreateChannel(processorAddress);
    var result = processor.Process(request);

    return result;
}
catch (CommunicationException)
{
    if (factory != null)
    {
        factory.Abort();
        factory = null;
    }

    throw;
}
finally
{
    if (factory != null)
    {
        factory.Close();
    }
}

可以在MSDN中找到很好的示例:http://msdn.microsoft.com/library/ms576132.aspx

另外,我建议您从IDesign页面引用WCF样本:http://idesign.net/Downloads

答案 3 :(得分:1)

向客户项目添加服务参考,然后选择解决方案中的发现/服务。然后选择您的服务,您将能够通过编写此类代码来访问所有服务方法:

 using(var myClient = new YourServiceReference.YourService())
 {
   myClient.MyMethod()...
 }

答案 4 :(得分:0)

以下是关于WCF服务http://wcfbyexample.codeplex.com/

的使用的很好的示例

答案 5 :(得分:0)

您可以通过从中提取WCF XML或使用WCF测试客户端使用C#代码来使用它。转到Visual Studio并添加&#34;服务参考&#34;使用WCF URL添加服务,它将为您生成服务代码。