如何为wcf服务生成代理

时间:2010-02-12 15:51:38

标签: wcf

如何生成代理,这是我的服务:

using System;

// Service.cs file
namespace FirstWcfService
{
    public class Service : IService
    {
        #region IService Members

        public string Hello()
        {
            return ("Hello WCF");
        }

        #endregion
    }
}

2 个答案:

答案 0 :(得分:9)

首先,确保您要引用的服务已启动并正在运行。

然后,在Visual Studio的Solution Explorer中,ping“添加服务引用”:

alt text http://i46.tinypic.com/nmz4ox.png

在出现的对话框中,输入您的服务地址,然后点击“开始”:

alt text http://i45.tinypic.com/282008m.png

这应该连接到您的服务,发现元数据,如果一切顺利,您将在屏幕的中间部分看到您的服务(服务合同及其方法):

alt text http://i50.tinypic.com/5p2wyf.png

在您单击“确定”之前太快 - 请注意左下角的文本框“命名空间” - 您可以键入命名空间,您的服务引用(它生成的类)将存在于该命名空间中。我通常使用类似(project).(servicename).Adapter的东西 - 选择对你有用的东西。

现在,在您的解决方案资源管理器中,您将看到刚刚引用的服务的新图标 - 当您单击解决方案资源管理器工具栏上的“显示所有文件”按钮时,您将看到所有文件那是生成的。您的课程所在的课程始终称为Reference.cs

alt text http://i50.tinypic.com/fp9uv6.png

当您敢于打开该文件:-)时,您会看到您将拥有一个名为(yourservicename)Client的类,这是您在客户端代码中实例化所需的类 - 它将携带所有已定义的服务方法,您现在可以从代码中调用:

alt text http://i48.tinypic.com/3143tyr.png

希望这有帮助!

答案 1 :(得分:2)

配置了对WCF服务的访问权限后,您有两个选择:

选项一是使用自动生成的对象

var proxy = new MyServiceProxyClient();
proxy.open();
//do work
proxy.close();

选项2是使用渠道工厂

ChannelFactory<IMyService> channel =
   new ChannelFactory<IMyService>("bindingNameFromYourConfigFile");
IMyService client = channel.CreateChannel();

client.DoAwesomeStuff();

这是一篇非常有用的信息blog post,您可能希望了解何时以及为何使用这些方法。这个screencast也会对你有帮助。