如何在没有svcutil.exe的情况下创建客户端代理或在wcf中添加服务引用?我想在编译时创建一个客户端代理.
mar*_*c_s 11
如果您可以在单独的DLL中访问服务协定(IService接口),则可以添加对该服务协定DLL的引用,然后执行以下操作:
NetTcpBinding binding = new NetTcpBinding();
EndpointAddress address = new EndpointAddress("net.tcp://localhost:9000/YourService")
ChannelFactory<IService> factory = new ChannelFactory<IService>(binding, address);
IService proxy = factory.CreateChannel();
Run Code Online (Sandbox Code Playgroud)
然后你有了以编程方式创建的代理,您现在可以根据需要使用它.
这可能不是你想要的,但它非常有趣.
Vipul Modi有一个库,允许您在下载WSDL之后调用WCF服务,所有这些都在运行时完成.
允许你做这样的事情:
创建ProxyFactory,指定服务的WSDL URI.
DynamicProxyFactory factory = new DynamicProxyFactory("http://localhost:8080/WcfSamples/DynamicProxy?wsdl");
Run Code Online (Sandbox Code Playgroud)
浏览端点,元数据,合同等.
通过指定端点或合同名称,为端点创建DynamicProxy.
DynamicProxy proxy = factory.CreateProxy("ISimpleCalculator");
Run Code Online (Sandbox Code Playgroud)
//要么
DynamicProxy proxy = factory.CreateProxy(endpoint);
Run Code Online (Sandbox Code Playgroud)
在DynamicProxy上调用操作
double result = (double)proxy.CallMethod("Add", 1d ,2d);
Run Code Online (Sandbox Code Playgroud)
关闭DynamicProxy
proxy.Close();
Run Code Online (Sandbox Code Playgroud)
您不需要编码生成(或使用充满WCF细节的配置文件).
首先创建定义service([ServiceContract])的接口,其中包含与服务实现分开的程序集中的任何支持数据协定.
引用客户端程序集中的接口程序集.
然后需要创建一个客户端代理,用于IMyService:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress endpoint = new EndpointAddress(url);
ChannelFactory<IMyService> chanFac = new ChannelFactory<IMyService>(binding, endpoint);
IMyService clientProxy = chanFac.CreateChannel();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7583 次 |
| 最近记录: |