如何生成代理,这是我的服务:
using System;
// Service.cs file
namespace FirstWcfService
{
public class Service : IService
{
#region IService Members
public string Hello()
{
return ("Hello WCF");
}
#endregion
}
}
答案 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也会对你有帮助。