本节的主要内容: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. ajax课2JSON

    1.ajax优点: a.页面无刷新 b.用户体验度较好,不会打断用户操作 c.按需求获取数据,不需要返回一个完整的页面 d.是标准的技术,不需要安装任何的插件 应用场景:注册.表格数据的增删改 2.J ...

  2. EF6添加mysql的edmx实体时报错:无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull

    EF6.1.3 ,使用mysql5.7的实体数据模型时,提示: 由于出现以下异常,无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中 ...

  3. 自实现jQuery版分页插件

    本篇博客的分页插件是在2017-11-10 的一篇博客的基础上改造的(原博客地址:原生js版分页插件),主要是优化了分页按钮的排列和显示样式,取消首页和末页的箭头按钮,改为数字按钮,并始终把它们分别固 ...

  4. [转]VS中展开和折叠代码

    VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 C ...

  5. SQL Server查询中特殊字符的处理方法

    SQL Server查询中,经常会遇到一些特殊字符,比如单引号“'”等,这些字符的处理方法,是SQL Server用户都应该需要知道的. 我们都知道SQL Server查询过程中,单引号“'”是特殊字 ...

  6. js匿名自执行函数中闭包的高级使用(---------------------------******-----------------------------)

    先看看最常见的一个问题: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  7. ARM中的汇编指令

    Arm指令,32位的指令集,一共有16条的基本指令,每条指令都可以按条件执行, 指令都是32bit的,高四位是条件码[31:28], Thumb指令,16位的指令集,执行效率比arm指令集要低,但是节 ...

  8. MySQL从删库到跑路_高级(二)——自定义函数

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.自定义函数简介 自定义函数(user-defined function UDF)是一种对MySQL扩展的途径,其 ...

  9. office word 2010 怎么把左侧的标题大纲调出来?

    有时候打开Word很希望出现左边的大纲,可是有时候就不出来,对word一些操作都忘得差不多了,这个小问题确实还是让我迷糊了一下~~ 网上的解决方案是: 打开Word2010文档窗口,切换到“视图”功能 ...

  10. wonderware historian 10安装配置

    安装文件为: 关闭用户控制 配置dcom. 安装.net framework 3.5 安装sql server,打sp1补丁 安装Historain 停止ww服务 安装sp1包 重启机器,启动ww服务 ...