0

我按照MSDN的这个指南来托管一个简单的 WCF 服务。

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

4

6 回答 6

4

最常用的选项是:

  • 使用 Visual Studio 生成代理或使用svcutil. 这意味着它是为您自动生成的,因此它非常易于使用,并且如果您的服务的客户端位于系统外部,则主要使用它。但是由于它是生成的代码,因此您失去了一些控制权。
  • 如果客户端与服务紧密绑定,请使用ChannelFactory 。我最喜欢这种方法,因为您直接使用接口。在大多数情况下,我提供了一个服务代理,它对服务的使用进行了抽象,这样客户就不必担心了。在此服务代理中,您还可以添加其他关注点,例如缓存和日志记录。
于 2013-06-19T07:22:39.300 回答
3

您可以在MSDN上继续您的学习路径。

有几种选择:

  1. 使用svcutil生成客户端
  2. 在 VS 解决方案上下文菜单中使用添加服务引用
  3. 自己创建客户端(不建议初学者使用)

注意:前 2 个选项需要已经运行的服务。

于 2013-06-19T07:12:36.770 回答
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

于 2013-06-19T07:13:05.597 回答
1

将服务引用添加到您的客户端项目并选择Discover/Services in solution。然后选择您的服务,您将能够通过编写这种代码来访问所有服务方法:

 using(var myClient = new YourServiceReference.YourService())
 {
   myClient.MyMethod()...
 }
于 2013-06-19T07:13:58.870 回答
0

这是关于使用 WCF 服务的好例子 http://wcfbyexample.codeplex.com/

于 2013-06-19T07:04:40.127 回答
0

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

于 2013-06-19T07:12:48.797 回答