博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF实现多个服务
阅读量:5758 次
发布时间:2019-06-18

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

 

本篇体验使用WCF实现2个服务。一个使用HTTP通讯,一个使用TCP通讯。

 

大致思路是:

 

→ 创建WCF服务以及接口,写2个接口

→ 实现2个接口
→ 为WCF创建一个控制台项目的宿主,配置App.config,开启宿主
→ 创建一个Web客户端,创建对WCF服务的引用
→ 在Web客户端,调用WCF服务,即调用WCF的代理类的实例方法

 

打开Visual Studio 2013,创建一个类库项目。

 

在类库下创建一个名称为"HelloServie"的WCF服务。随即,在项目中多了WCF相关的组件,以及自动创建了IHelloServie类和HelloServie类。

 

修改IHelloService接口如下:

 

 
namespace MyServices
{
[ServiceContract]
public interface IOneService
{
[OperationContract]
string GetOne();
}
 
[ServiceContract]
public interface ITwoService
{
[OperationContract]
string GetTwo();
}
}
 
 

 

HelloService类现在需要同时实现以上2个接口。

 

 
namespace MyServices
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“HelloServie”。
public class HelloServie : IOneService, ITwoService
{
 
public string GetOne()
{
return "本条信息通过HTTP传递";
}
 
public string GetTwo()
{
return "本条信息通过TCP传递";
}
}
}
 

 

现在需要一个宿主。在当前解决方案下创建一个控制台项目。

 

添加对WCF所在类库的引用,添加对"System.ServiceModel"的引用。

 

设置控制台项目的配置文件。

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

其中,

● 通过Service节点的behaviorConfiguration属性绑定behavior行为

● service节点的name属性值的格式是:"命名空间名称.实现类名称"
● endpoint一般包含"abc"三个属性,a代表address,b代表binding,c代表contract
● endpoint中的contract属性值的格式是:"命名空间名称.接口名称"

 

编写控制台项目如下:

 

 
using System.ServiceModel;
......
 
namespace MyHost
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(HelloServie)))
{
host.Open();
Console.WriteLine("宿主已经开启,开启时间;" + DateTime.Now);
Console.ReadKey();
}
}
}
}
 

 

把控制台项目设置为启动项目,并启动控制台项目,即开启宿主。

现在需要客户端。开启一个新的Visual Studio解决方案。

 

创建一个空的,名称为"MyServiceClient"空网站。

 

一旦添加了对WCF服务的引用,在网站的Web.config中就自动多了system.serviceModel节点。

创建一个Web界面。

 

 
 
 
 

 

编写按钮事件。

 

 
//HTTP通讯信息
protected void Button1_Click(object sender, EventArgs e)
{
 
MyServiceClient.MyService.OneServiceClient client = new MyService.OneServiceClient("BasicHttpBinding_IOneService");
Label1.Text = client.GetOne();
}
 
//TCP通讯信息
protected void Button2_Click(object sender, EventArgs e)
{
MyServiceClient.MyService.TwoServiceClient client = new MyService.TwoServiceClient("NetTcpBinding_ITwoService");
Label2.Text = client.GetTwo();
}
 
以上,声明OneServiceClient和TwoServiceClient实例时, 构造函数传递的实参值是Web.config中endpoint的name属性值。

 

点击页面上的2个按钮如下:           

可见,一个WCF服务可实现多个服务。

转载地址:http://wcvkx.baihongyu.com/

你可能感兴趣的文章
开源中国动弹客户端实践(三)
查看>>
Win 8创造颠覆性体验:预览版关键更新
查看>>
vim在多文件中复制粘贴内容
查看>>
Android ContentObserver
查看>>
文章“关于架构优化和设计,架构师必须知道的事情”
查看>>
疯狂java学习笔记1002---非静态内部类
查看>>
ISA2006实战系列之一:实战ISA三种客户端部署方案(上)
查看>>
TCP服务器
查看>>
U-Mail邮件系统与泛微OA系统一体化操作指南
查看>>
AC旁挂三层交换机管理ap,二层接入ap心得
查看>>
JS中比较数字大小
查看>>
springcloud 学习-eureka搭建-为eureka添加认证
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
ant android 打包签名和渠道
查看>>
一个简单的接口,被调用并同步给出响应的方法
查看>>
Hadoop序列化与压缩
查看>>
我的友情链接
查看>>
显式锁(第十三章)
查看>>