WCF初接触实作——使用配置文件(二
来源:互联网 发布:淘宝手机申请售后退款 编辑:程序博客网 时间:2024/06/09 17:41
上一篇介绍了最简单的方式来实现宿主和客户端:直接引用契约和服务项目、采用硬编码的方式,这次通过配置文件来定义终结点。刚接触WCF时,直接编辑配置文件会让人一头雾水,所以还是使用直观的方式——使用WCF编辑工具,这个工具可以通过“开始”→“Microsoft Visual Studio 2010”→“Microsoft Windows SDK Tools”→“服务配置编辑器”打开,也可以通过VS2010的IDE中“工具”→“WCF服务配置编辑器”打开。
宿主:
1、在之前的解决方案中添加一个Windows窗体应用程序WCFDemo.Host.WithConfig。
2、添加引用System.ServiceModel。
3、引用上一篇的契约和服务两个项目。
4、为宿主项目添加应用程序配置文件,并编辑:
运行配置工具,打开宿主项目的配置文件,右击树形目录的“服务”节点新建服务;
把Name属性设置为我们之前写的服务;
新建服务终结点,并设置A(Address)、B(Binding)、C(Contract)。设置的值和上一篇代码里的一样;
保存后可以查看配置文件。
<?xml version="1.0" encoding="utf-8" ?><configuration> <system.serviceModel> <services> <service name="WCFDemo.Services.DemoService"> <endpoint address="http://localhost:5678/DemoService" binding="basicHttpBinding" bindingConfiguration="" contract="WCFDemo.Contracts.IDemoService" /> </service> </services> </system.serviceModel></configuration>
5、在窗体放置两个Button和一个Label,编写代码如下:
using System;using System.Windows.Forms;using System.ServiceModel;using WCFDemo.Services;namespace WCFDemo.Host.WithConfig{ public partial class HostWithConfigForm : Form { public HostWithConfigForm() { InitializeComponent(); } ServiceHost host; private void button1_Click(object sender, EventArgs e) { host = new ServiceHost(typeof(DemoService)); host.Opened += delegate { label1.Text = "服务启动"; }; host.Open(); } private void button2_Click(object sender, EventArgs e) { if (host != null && host.State == CommunicationState.Opened) { host.Closed += delegate { label1.Text = "服务停止"; }; host.Close(); } } }}
可以发现,和之前唯一不同就是少了添加服务终结点的代码。运行带配置的宿主程序,再运行之前的客户端程序,可以正常通讯。接下来看一下使用配置文件的客户端。
客户端:
1、在之前的解决方案中添加一个Windows窗体应用程序WCFDemo.Client.WithConfig。
2、添加引用System.ServiceModel。
3、引用之前契约项目。
4、为客户端项目添加应用程序配置文件,并编辑:
运行配置工具,打开客户端项目的配置文件,右击树形目录的“客户端”→“终结点”节点新建客户端终结点,并设置ABC和Name:
保存后可以查看配置文件:
<?xml version="1.0" encoding="utf-8" ?><configuration> <system.serviceModel> <client> <endpoint address="http://localhost:5678/DemoService" binding="basicHttpBinding" bindingConfiguration="" contract="WCFDemo.Contracts.IDemoService" name="DemoService" /> </client> </system.serviceModel></configuration>
5、在窗体放置一个Button和一个DataGridView,并编写代码如下:
using System;using System.Windows.Forms;using System.ServiceModel;using WCFDemo.Contracts;namespace WCFDemo.Client.WithConfig{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using (ChannelFactory<IDemoService> channelFactory = new ChannelFactory<IDemoService>("DemoService")) { dataGridView1.DataSource = channelFactory.CreateChannel().GetMonitorData(); } } }}
代码中ChannelFactory构造函数的参数和配置文件中的Name要一致。
现在,使用配置文件和不使用配置文件的宿主及客户端已完成,两个服务器和两个客户端之间都可通讯。看得出来,客户端使用服务都是对某个终结点的,客户端的ABC要和服务端一致。
目前为止,客户端都是通过直接引用契约类库来使用WCF服务的,很多时候客户端无法直接引用契约类库,这就需要服务端发布自己的契约,客户端根据契约生成代理类。
如何实现,下一篇再说——简短一点儿好。
- WCF初接触实作——使用配置文件(二
- WCF初接触实作——服务的发布和使用(三)
- WCF初接触实作(一)
- WCF初接触
- WCF系列(二) -- 使用配置文件构建和使用WCF服务
- WCF系列(二)配置文件
- 记20141216日工作——第一次接触病毒
- WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
- WCF入门教程——WCF的配置文件(四)
- 01初次接触WCF——面向服务
- WCF探索之旅(二)——从零开始WCF实例
- javascript初接触(二)
- nginx初接触二
- 热门话题:使用WCF实现SOA面向服务编程(二)——实现简单的WCF开发实例
- 初识WCF之使用配置文件部署WCF应用程序
- 初识WCF之使用配置文件部署WCF应用程序
- 使用代码去描述WCF配置文件
- 【ITOO高校云平台】——WCF配置文件
- flex---->ActionScript 3.0基本语法
- Qt的Model/View (二)
- 在ORACLE中实现SELECT TOP N的方法
- Linux入门:定制“console ” 样式
- 服务层的职责
- WCF初接触实作——使用配置文件(二
- poj 1466 Girls and Boys
- QT常识
- div+css对网页进行整体布局的案例
- 硬盘知识,硬盘逻辑结构
- DN77免费试用一小时
- 硬盘经常坏在哪?
- fedora15 root 帐号
- 服务的定义