本节的主要内容: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));
}

demo

WCF 客户端调用服务操作的两种方法的更多相关文章

  1. WCF初探-10:WCF客户端调用服务

    创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...

  2. WCF系列教程之WCF客户端调用服务

    1.创建WCF客户端应用程序需要执行下列步骤 (1).获取服务终结点的服务协定.绑定以及地址信息 (2).使用该信息创建WCF客户端 (3).调用操作 (4).关闭WCF客户端对象 二.操作实例 1. ...

  3. 安卓ListView操作的两种方法

    举例做一个微信的中间部分(好友消息等信息通知) 第一种:BaseAdapter() package com.example.wx; import java.util.ArrayList;import ...

  4. spark-sql将Rdd转换为DataFrame进行操作的两种方法

    SparkConf sparkConf = new SparkConf() .setMaster("local").setAppName("ClzMap"); ...

  5. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  6. Java获取客户端真实IP地址的两种方法

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  7. awk调用shell命令的两种方法:system与print

    from:http://www.oklinux.cn/html/developer/shell/20070626/31550.htmlawk中使用的shell命令,有2种方法: 一.使用所以syste ...

  8. vs2019 实现C#调用c++的dll两种方法

    1.托管与非托管的区别 2.非托管类的实现 第一步:创建C++空项目(命名Caculate)添加一个类AddOperate 第二步:将C++代码编译成动态库dll 第三步:将dll拷贝到c#项目输入目 ...

  9. svn客户端清空账号信息的两种方法

    1.直接删除配置 C:\Users\Administrator\AppData\Roaming\Subversion\auth 一般在这个文件夹下 2.svn的设置里清空

随机推荐

  1. unity3d-物理引擎

    简介 物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有两个立方体对象,一个在空中,一个在地面上,在空中的立方体开始自由下落,然后与地面上的立方体对象发生碰撞,而物理引擎就是用来模拟真实碰撞的效果 ...

  2. php深入学习

    关于PHP程序员解决问题的能力 http://rango.swoole.com/archives/340 深入理解PHP内核 by xuhong大牛 http://www.php-internals. ...

  3. Ajax—web中ajax的常用方式

    什么Web2.0的特点? 1:注重用户贡献度 2:内容聚合RSS协议(每小块都个性化,单独加载单独请求,不用全部刷新--Ajax) 3:更丰富的用户体验 Ajax的概念? "Asynchro ...

  4. JVM内存模型:程序计数器

    一.JVM模型概述 java虚拟机(JVM)在java程序运行的过程中,会将它所管理的内存划分为若干个不同的数据区域,这些区域有的随着JVM的启动而创建,有的随着用户线程的启动和结束而建立和销毁.一个 ...

  5. EBS 多组织访问设置

    如果想让你的职责下为单组织模式,那么你在Profile下只设置MO: Operating Unit的值,MO: Operating Unit提供只访问一个单独的OU.如果你想让你的职责下为多组织模式, ...

  6. ac1097

    判断线段与直线的相交  这里有个地方需要注意的就是在 转换的时候容易报错 在叉积完后的判断符号的时候需要注意 这个地方会超出int 的范围 2014-06-0320:14:04 #include &l ...

  7. testng使用DataProvider+Excel实现DDT

    DDT,即数据驱动测试 Data Driver Test,我曾经记录了一篇关于python的DDT框架(Excel+DDT数据驱动实例),那么java中的DDT是怎么样的呢?在java中,可以用tes ...

  8. Java内存管理(一):深入Java内存区域

    本文转自:http://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html#undefined 推荐查看原文,原文格式更好一些. 本文引用自:深 ...

  9. Linux基础命令---lsusb

    lsusb      显示本机的usb设备列表,可以显示出usb的详细信息,包括设备的读取速度和描述符.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE ...

  10. Shell脚本实现检测某ip网络畅通情况,实战用例

    Shell脚本实现检测某ip网络畅通情况,实战用例 环境准备,linux shell 发送email 邮件:1.安装sendmailyum -y install sendmail安装好sendmail ...