WCF 客户端调用服务操作的两种方法
本节的主要内容:1、通过代理类的方式调用服务操作。2、通过通道的方式调用服务操作。3、代码下载
一、通过代理类的方式调用服务操作(两种方式添加代理类)
1.手动编写代理类,如下:
客户端契约:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.ServiceModel;
namespace y.WcfFirst.Client.Proxys
{
[ServiceContract]
public interface IHello
{
[OperationContract]
string Say(string name);
}
}
客户端代理类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.ServiceModel;
using System.ServiceModel.Channels;
namespace y.WcfFirst.Client.Proxys
{
public class HelloProxy:ClientBase<IHello>,IHello
{
public HelloProxy()
: base()
{
} public string Say(string name)
{
return base.Channel.Say(name);
}
}
}
客户端app.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint name="wcfFirst"
address="net.tcp://localhost:6666/hello"
binding="netTcpBinding"
contract="y.WcfFirst.Client.Proxys.IHello"></endpoint>
</client>
</system.serviceModel>
</configuration>
客户端的调用:
using (HelloProxy proxy = new HelloProxy())
{
Console.WriteLine("Recevie from Server:{0}", proxy.Say(name));
proxy.Close();
}
2.通过Metadata方式产生代理类。
服务端需要对app.config进行配置如下:

客户端的操作步骤:先运行服务端(host)。
a.在客户端点击Add Service Reference按钮,添加Service引用。如下图:

b.输入Address地址:http://localhost:8888,点击"GO",获取服务操作。并且重命名Namespace,如下图:

c.客户端对代理类的调用。
using (HelloClient clientProxy = new HelloClient())
{
Console.WriteLine("Recevie from Server:{0}", clientProxy.Say(name));
clientProxy.Close();
}
二、通过通道方式调用服务操作
1.客户端契约,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.ServiceModel;
namespace y.WcfFirst.ClientChannel.Proxy
{
[ServiceContract]
public interface IHello
{
[OperationContract]
string Say(string name);
}
}
2.客户端配置文件的设置:如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint name="wcfFirst"
address="net.tcp://localhost:6666/hello"
binding="netTcpBinding"
contract="y.WcfFirst.ClientChannel.Proxy.IHello"></endpoint>
</client>
</system.serviceModel>
</configuration>
3.客户端调用服务操作:如下:
ChannelFactory<IHello> factory = new ChannelFactory<IHello>("wcfFirst");
IHello channelProxy = factory.CreateChannel();
using(channelProxy as IDisposable)
{
Console.WriteLine("Recevie from Server:{0}", channelProxy.Say(name));
}
WCF 客户端调用服务操作的两种方法的更多相关文章
- WCF初探-10:WCF客户端调用服务
创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...
- WCF系列教程之WCF客户端调用服务
1.创建WCF客户端应用程序需要执行下列步骤 (1).获取服务终结点的服务协定.绑定以及地址信息 (2).使用该信息创建WCF客户端 (3).调用操作 (4).关闭WCF客户端对象 二.操作实例 1. ...
- 安卓ListView操作的两种方法
举例做一个微信的中间部分(好友消息等信息通知) 第一种:BaseAdapter() package com.example.wx; import java.util.ArrayList;import ...
- spark-sql将Rdd转换为DataFrame进行操作的两种方法
SparkConf sparkConf = new SparkConf() .setMaster("local").setAppName("ClzMap"); ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- Java获取客户端真实IP地址的两种方法
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- awk调用shell命令的两种方法:system与print
from:http://www.oklinux.cn/html/developer/shell/20070626/31550.htmlawk中使用的shell命令,有2种方法: 一.使用所以syste ...
- vs2019 实现C#调用c++的dll两种方法
1.托管与非托管的区别 2.非托管类的实现 第一步:创建C++空项目(命名Caculate)添加一个类AddOperate 第二步:将C++代码编译成动态库dll 第三步:将dll拷贝到c#项目输入目 ...
- svn客户端清空账号信息的两种方法
1.直接删除配置 C:\Users\Administrator\AppData\Roaming\Subversion\auth 一般在这个文件夹下 2.svn的设置里清空
随机推荐
- RMAN备份与恢复实践(转)
1 RMAN备份与恢复实践 1.1 备份 1.1.1 对数据库进行全备 使用backup database命令执行备份 RMAN> BACKUP DATABASE; 执行上述命令后将对目标 ...
- 松下 激光位移传感器 API
一: /* ============================================================================================== ...
- testng入门教程1在testng运行一个简单的testcase
在eclips运行java,创建一个Java类文件名TestNGSimpleTest C:\ > TestNG_WORKSPACE import org.testng.annotations. ...
- Python: itertools.compress()
定义: itertools.compress() 输入: iterable对象 相应的Boolean选择器序列 输出: iterable对象中对应选择器为True的元素 用途: 当需要用另外一个相关联 ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- P3008 [USACO11JAN]道路和飞机Roads and Planes
P3008 [USACO11JAN]道路和飞机Roads and Planes Dijkstra+Tarjan 因为题目有特殊限制所以不用担心负权的问题 但是朴素的Dijkstra就算用堆优化,也显然 ...
- c++继承、多态以及与java的行为差异之处
对于面向对象而言,多态是最有用的基本特性之一,相对于函数指针,易用得多.下面看下c++继承和多态行为的基本特性,最后说明下和java的基本差别. 首先定义父类和子类. base.h #pragma o ...
- HTML JavaScript 基础学习
HTML 中肯定会用到 JavaScript 的知识点,会点 JavaScript 的基础知识不会吃亏,其实打算去买JavaScript的教程去专门学习一下,但是交给我的时间不多了,记录一点,能会一点 ...
- 阿里druid连接池
1.加入jar包, 下载地址:druid-1.1.0.zip 2.ApplicationContext.xml <!-- druid阿里云连接池 --> <bean name=&qu ...
- 20145331魏澍琛《网络对抗》Exp4 恶意代码分析
20145331魏澍琛<网络对抗>Exp4 恶意代码分析 基础问题回答 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作 ...