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的设置里清空
随机推荐
- [lr] 基本色调调整和色调曲线
基本色调调整 • 曝光度调整 ▶ 控制区域 在Lightroom中,软件提示我们曝光控制的是如图中间调的区域.我们把鼠标移动到曝光工具条上,软件会提示我们这个区域: ▶ 实际效果 ▪ 增加曝光值 增加 ...
- How to install MVVM Light Toolkit via NuGet
Here is how you can install MVVM Light Toolkit via NuGet in an easy way using only Visual Studio. S ...
- mvc actionresult返回各种文件
public ActionResult ReviewFile(string folderName, string fileBasename, string extendName) { //以后根据后缀 ...
- VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)
上一节中鸡啄米讲了文档.视图和框架结构中各对象之间的关系,本节主要讲讲在MFC中如何分割窗口. 分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或 ...
- yii的url写法
Yii 各种url地址写法 echo Url::home(); 生成入口地址/yii2test/frontend/web/index.php: echo Url::base();生成入口文件夹地址: ...
- yii2csrf攻击
第一种解决办法是关闭Csrf public function init(){ $this->enableCsrfValidation = false; } 第二种解决办法是在form表单中加入隐 ...
- MySQL从删库到跑路(五)——SQL查询
作者:天山老妖S 链接:http://blog.51cto.com/9291927 1.查询所有字段 在SELECT语句中使用星号“”通配符查询所有字段在SELECT语句中指定所有字段select f ...
- 谷歌浏览器使用IE内核
经常使用谷歌浏览器去到处溜达,可是,居然还不知道谷歌浏览的还有很多新鲜的设置,昨天遇到了调试一个脚本没有出现效果,而在IE中就可以显示所谓的效果: 查询了下,看到谷歌浏览器确实对脚本的部分样式要求还是 ...
- linux常用命令:chmod 命令
chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的每 ...
- 2016NOI冬令营day5
考试 坑坑坑 无法调试 两个小时写的第一题爆零了 O(n)(n<=200)都能被卡T???数据乱搞吧WOC 10分胸牌滚粗