博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform里宿主WCF,并传递winform变量给WCF
阅读量:5247 次
发布时间:2019-06-14

本文共 1584 字,大约阅读时间需要 5 分钟。

最近客户要求把服务器端程序里的二个功能用service的方式提供出来,方便调用。首先想着单独建一个wcf 服务的项目,但是因为要用到server端程序winform里的变量,因此只能在winform里添加一个wcf service的item。下面介绍详细的操作步骤:

 

1. winform里添加wcf service的item

添加之后,app.config里会自动加上wcf的配置项:

 
 
 
 
 
 
 
 
 
 
 

 

其中下面这行,我把它改得简单了一点,默认的地址太长:

<add baseAddress=" />

 

2.  定义好service,这里我用构造函数把winform里的变量传进来:

public class BroadcastService : IBroadcastService
{
public static IRapidServerEngine m_RapidServerEngine;
public static IOrayCache m_OrayCache;
 
public BroadcastService(IRapidServerEngine rapidServerEngine, IOrayCache orayCache)
{
m_RapidServerEngine = rapidServerEngine;
m_OrayCache = orayCache;
}
 
...
}

 

3. 在form的load事件里host wcf服务, closed事件里关闭:

ServiceHost m_Host;
private void MainServerForm_Load(object sender, EventArgs e)
{
try
{
BroadcastService broadcastSvc = new BroadcastService(this.rapidServerEngine, orayCache);
m_Host = new ServiceHost(broadcastSvc);
m_Host.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
 
private void MainServerForm_FormClosed(object sender, FormClosedEventArgs e)
{
m_Host.Close();
}

 

这里要注意的是下面二行,把变量传递进去:

BroadcastService broadcastSvc = new BroadcastService(this.rapidServerEngine, orayCache);

m_Host = new ServiceHost(broadcastSvc);

如果不用传变量到wcf服务里,可以简化成

m_Host = new ServiceHost(typeof(BroadcastService))

4. wcf服务类上加上属性

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class BroadcastService : IBroadcastService

5. 启动winform程序后,就可以访问在第一步里定义的wcf地址了

<add baseAddress=" />

 

这时访问即可。

 

 

转载于:https://www.cnblogs.com/fengwenit/p/4249446.html

你可能感兴趣的文章
IE浏览器打开chorme浏览器,如何打开其他浏览器
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
sgu 109 Magic of David Copperfield II
查看>>
C++循环单链表删除连续相邻重复值
查看>>
渣渣小本求职复习之路每天一博客系列——Java基础(3)
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
ASP.NET使网页弹出窗口不再困难
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>
windown快速安装xgboost
查看>>
Linux上安装Libssh2
查看>>
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>