wcf服务端

1,新建一个“windows窗口程序”名称为WCFServer2。

2。然后加入一个“WCF服务”名称为Service1。

详细步骤为:解决方式试图中,选中“WCFServer2”项目,右键,在弹出菜单中选择“加入->新建项”。

3,双击主窗口,在它的Load事件中编写代码启动wcf服务:BasicHttpBinding方式启动wcf服务。此文件代码例如以下:

using System.ServiceModel;

using System.ServiceModel.Description;

//…

ServiceHost m_ServiceHost;

//…

private void Form1_Load(object sender, EventArgse)

{

//NetTcpBinding方式启动wcf服务

m_ServiceHost = new ServiceHost(typeof(Service1));//Service1是wcf服务的类名称

NetTcpBindingbinding = new NetTcpBinding();

UribaseAddress = new Uri(string.Format("net.tcp://localhost:10086/WCFHostServer/Service1"));

m_ServiceHost.AddServiceEndpoint(typeof(IService1),binding, baseAddress);

m_ServiceHost.Open();

}

4,在 IService1.cs中添加一个方法Init,同一时候添加ISvrToCliCallBack接口.

namespace WCFServer2

{

// 注意: 使用“重构”菜单上的“重命名”命令,能够同一时候更改代码和配置文件里的接口名“IService1”。

[ServiceContract(CallbackContract= typeof(ISvrToCliCallBack))]

public interface IService1

{

[OperationContract]

voidDoWork();

[OperationContract]

voidInit();

}

public interface ISvrToCliCallBack

{

[OperationContract(IsOneWay= true)]

voidNotifyClientMsg(string devStateInfo);

}

}

5, 在Service1.cs中实现接口的方法Init初始化。

public static ISvrToCliCallBack userCallBack;

//...

public void Init()

{

userCallBack = OperationContext.Current.GetCallbackChannel<ISvrToCliCallBack>();

}

6,主窗体添加button。

private voidbutton1_Click(object sender, EventArgs e)

{

Service1.userCallBack.NotifyClientMsg("服务端给client通知啦");

}

7。改动app.config,WCFServer2.Service1的binding由"wsHttpBinding"改成"wsDualHttpBinding"

客服端

1,新建一个“windows窗口程序”名称为WCFClient2。

2,添加服务引用。

服务引用地址到服务端的app.config查看,就是baseAddress。

3.在FormClient中继承接口IService1Callback,实现方法NotifyClientMsg

4。主窗体启动是初始化。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using WCFClient2.ServiceReference1;

using System.ServiceModel;

namespace WCFClient2

{

public partial class Form1 : Form, IService1Callback

{

publicForm1()

{

InitializeComponent();

}

public void NotifyClientMsg(stringdevStateInfo)

{

MessageBox.Show(devStateInfo,"ddd");

}

IService1m_Innerclient;

privatevoid Form1_Load(objectsender, EventArgs e)

{

InstanceContextm_CallBackContext;

m_CallBackContext = new InstanceContext(this);

DuplexChannelFactory<IService1> m_ChannelFactory;

NetTcpBindingbinding = new NetTcpBinding();

stringstrUrl = string.Format("net.tcp://{0}:{1}/WCFHostServer/Service1",

"localhost",10085);

UribaseAddress = new Uri(strUrl);

m_ChannelFactory = new DuplexChannelFactory<IService1>(m_CallBackContext, binding, new EndpointAddress(baseAddress));

m_Innerclient =m_ChannelFactory.CreateChannel();

Service1Clienthost = new ServiceReference1.Service1Client(m_CallBackContext);

host.Init();//调用GetSvrTime获取到wcfserver上的时间

}

}

}

WCF服务端调用client.相关推荐

  1. WCF 服务端+客户端动态调用

    最近在写WCF服务相关代码,把项目中用到的通讯框架做了下整理,以备以后自己记忆. WCF服务端: 包含契约定义:WCF.Contract.契约实现:WCF.Service 以及宿主主程序:WcfSer ...

  2. WCF服务端运行时架构体系详解[下篇]

    作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象.站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象.如果站在WCF服务端运行时框架来说,终结点实际上指 ...

  3. grpc(3):使用 golang 开发 grpc 服务端和client

    1,关于grpc-go golang 能够能够做grpc的服务端和client. 官网的文档: http://www.grpc.io/docs/quickstart/go.html https://g ...

  4. C#实现微信企业号API服务端调用封装

    C#实现微信企业号API服务端调用封装 背景 代码封装 时间戳方法 基础方法:验证服务器接口.服务端解密.服务端加密.获取AccessToken.生成企业获取Code URL.获取授权用户信息.获取调 ...

  5. 金蝶服务端调用OSF服务

    在金蝶使用中会用前端和后端调用OSF服务 1.  前端调用方法: shr.callService({serviceName : "transformationService",pa ...

  6. Delphi作为客户端调用.Net写的WCF服务端?

    这方面的文章太少了,查了半天也只看到一两篇,关键点 1.wcf的Binding要配成 basicHttpBinding,否则Delphi无法通过WebService的方式调用服务 2.Delphi I ...

  7. WCF服务端返回:(413) Request Entity Too Large

    出现这个原因我们应该都能猜测到,文件传出过大,超出了WCF默认范围,那么我们需要进行修改. 服务端和客户端都需要修改. 第一.客户端: <system.serviceModel><b ...

  8. WCF服务端的.NET Core支持项目Core WCF 正式启动

    长期以来在wcf客户端库https://github.com/dotnet/wcf里反应最强烈的就是.NET Core的服务端支持https://github.com/dotnet/wcf/issue ...

  9. 在Unity3D中连接WCF服务端

    服务端不多讲解,有一处需要改的地方.具体服务端请看WCF入门学习2-控制台做为宿主 建议实际项目不要拿去用,毕竟是mono不是原生.net.或许是个坑 由于Unity的mono版本问题不能直接用net ...

最新文章

  1. 长篇自动驾驶技术综述论文(下)
  2. linux 使用 C 语言获得系统 MAC 地址
  3. celery mysql flask_如何在Flask中创建Celery实例?
  4. 耗时6个月整理的最全Java资源,限时删
  5. JavaWeb(十一)——登录注册小案例
  6. mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_完整免费答案...
  7. 每日一题(36)—— 什么是预编译 , 何时需要预编译?
  8. kafka经典面试题
  9. nginx开启支持websocket连接
  10. Net::SSH::Perl 包 与 Net::OpenSSH 包的 性能对比代码
  11. error:“Unexpected namespace prefix xmlns found for tag LinearLayout”
  12. Mysql索引的本质深入浅出(二)
  13. 当纺织遇上阿里云,数学博士钻进车间要让企业更高效
  14. hiveSql获取日期时间
  15. VxLAN技术基本原理
  16. Wireguard 全互联模式(full mesh)权威指南
  17. texmacs 源码安装
  18. 解决win10和ubuntu18,win10时间不同步问题
  19. 红米k30至尊版是5g吗 红米k30至尊版怎么样
  20. 大卫·希尔伯特:数学界的无冕之王

热门文章

  1. python 在排序数组中查找元素的第一个和最后一个位置
  2. Java版的防抖(debounce)和节流(throttle)
  3. Java对异常处理或抛出之后,后面代码会不会再执行?
  4. 如何线程安全的使用HashMap
  5. 射影几何3:拓广平面
  6. 【面试练习题】存在序列:1,1/2,2/3,3/5,5/8,8/13...,求前10项的和
  7. python – 处理psycopg2中的错误 psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, comm
  8. python3 bytes和str转换,解决图片base64调用api的问题
  9. linux vi/vim使用
  10. 用c语言编写图书成绩管理系统,学生成绩管理系统(c语言编写).doc