WCF Service Configuration Editor的使用
WCF Service Configuration Editor的使用
2014-06-13
通过WCF Service Configuration Editor的配置
修改Client端
参考
在上篇文章创建一个简单的WCF程序中, 通过编码的方式进行终结点的添加和服务行为的定义,但在进行真正的WCF应用开发时,一般会直接是通过配置的方式进行。
对于初学者来说,WCF的配置显得过于复杂,直接对配置文件进行手工编辑不太现实。在这种情况下,可以直接使用VS提供的配置工具WCF Service Configuration Editor工具生成XML文件来进行WCF的配置。
通过WCF Service Configuration Editor的配置[1]
返回
以下是使用WCF Service Configuration Editor的的操作步骤:
1.打开VS,在Hosting项目中右键,新建一个App.config文件。
2.点击菜单栏Tools选项,在下拉菜单中选择WCF Service Configuration Editor。
3.在弹出的工具窗口中选择“File->open->Config File”。找到刚才建的App.config文件,并打开。
4.新建一个服务,如下图所示,先点击“创建新的服务”链接,再找到Service项目中的WcfServices.Services.CalculatorService服务。
5.点击下一步,找到Contracts项目中的ICalculator契约。
6.下一步,选择Http的通信方式。
7.点击下一步,选择Basic Web Service Interoperability。
8.点击下一步,输入服务端Endpoint地址: http://localhost:8080/calculatorservice 。下一步Finish。
9.为服务添加行为(Behavior),这步很重要。在Advanced目录下,右键新建一个Service行为,New Service Behavior Configuraton,然后对行为重命名为CalculatorBehavior。新建一个Stack Element 'serviceMetadata', 并设置它的HttpGetEnabled为true。如下图所示:
10.这些做好了之后,我们回到最上面的Service目录,为Calculator服务添加刚才配的CalculatorBehavior行为配置。如下图所示:
11.接着配置Host的地址,选中Host,然后点击右下方的New Base Address,输入: http://localhost:8080/calculatorservice
12.可以新添加一个服务端的Endpoint,用于配置WS-MetadataExchange,当然也可以不加。在Services目录下的Endpoint右键,新建一个Endpoint,名字和地址随意,保证Binding是mexHttpBinding。
13.Ctrl+S保存,这样App.config文件就自动写满了,如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <system.serviceModel> 4 <behaviors> 5 <serviceBehaviors> 6 <behavior name="CaclulaterBehavior"> 7 <serviceMetadata httpGetEnabled="true" /> 8 </behavior> 9 </serviceBehaviors> 10 </behaviors> 11 <services> 12 <service behaviorConfiguration="CaclulaterBehavior" name="WcfServices.Services.CalculatorService"> 13 <endpoint address="http://localhost:8080/calculatorservice" binding="basicHttpBinding" 14 bindingConfiguration="" contract="WcfServices.Contracts.ICalculator" /> 15 <host> 16 <baseAddresses> 17 <add baseAddress="http://localhost:8080/calculatorservice" /> 18 </baseAddresses> 19 </host> 20 </service> 21 </services> 22 </system.serviceModel> 23 </configuration>
View Code
14。修改Hosting类的代码,删改后如下:
using System; using System.ServiceModel; using WcfServices.Services;namespace WcfServices.Hosting {class Program{static void Main(string[] args){using (ServiceHost host = new ServiceHost(typeof(CalculatorService))){host.Opened += delegate{Console.WriteLine("CalculaorService have started, press any key to stop it!");};host.Open();Console.Read();}}} }
View Code
注意:
1 <endpoint address="" binding="basicHttpBinding" name="Calculator" Contract="Contracts.ICalculator" > 2 <host> 3 <baseAddress> 4 <add baseAddress="http://localhost:8080/CalculatorService"/> 5 </baseAddress> 6 </host>
endpiont的地址为空,只是配了Host的基地址。当然也可以直接配Endpoint的地址,不配Host的基地址。但如果host了多个服务呢?有多了Endpoint挂在同一个host下,那么配基地址就显得很重要。
修改Client端
返回
打开客户端的项目(服务端不要关闭),选择Client项目下的Service Reference,在你的服务命名空间上右键,点击Update Service Reference。会生成新的app.config文件。
然后Rebuild Client端项目即可,ClientApp的代码无须改变。
配置客户端[2]
在真正的WCF应用中,大都采用配置的方式进行终结点的定义。对于客户端,我们也可以通过下面的配置指定终结点的三要素,并为相应的终结点指定一个终结点配置名称(calculatorservice)。 在客户端项目添加Application Configuration file (App.config),内容如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <system.serviceModel> 4 <client> 5 <endpoint address="http://localhost:8080/calculatorservice" binding="basicHttpBinding" contract="WcfServices.Contracts.ICalculator" name="calculatorservice" /> 6 </client> 7 </system.serviceModel> 8 </configuration>
View Code
对客户端项目,我们将添加的服务引用移除,并为Client项目添加对Contracts项目的引用。借助于这个服务契约,并通过ChannelFactory<ICalculator>创建服务代理对象,直接进行相应的服务调用。
1 using System; 2 using System.ServiceModel; 3 using WcfServices.Contracts; 4 5 namespace WcfServices.Client 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 using (ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>("calculatorservice")) 12 { 13 ICalculator proxy = channelFactory.CreateChannel(); 14 using (proxy as IDisposable) 15 { 16 Console.WriteLine("x + y = {2} when x = {0} and y = {1}", 1, 2, proxy.Add(1, 2)); 17 } 18 Console.Read(); 19 } 20 } 21 } 22 }
View Code
源代码:SimpleWCFWithConfig.zip
参考:
[1] WCF Service Configuration Editor的使用 http://www.cnblogs.com/judastree/archive/2012/08/26/2657555.html
[2] 我的WCF之旅(1):创建一个简单的WCF程序 http://www.cnblogs.com/artech/archive/2007/06/14/782845.html
WCF Service Configuration Editor的使用相关推荐
- WCF中Service Configuration Editor的使用方法(转)
本文转自: http://www.cnblogs.com/pdfw/archive/2007/12/25/1014265.html 1.在App.config文件上右击,选择Edit WCF Conf ...
- WCF Service 配置文件注释(转)
VS 2008 SP1(不确定是否不打SP1是否有)自带的一个编辑工具,可以更快的帮助定制配置文件, 以前看到过没有注意, 昨天正好一个同事提起, 这里记录一笔:打开VS 2008->Tools ...
- [WCF]利用net.tcp傳輸協定來建置WCF Service
http://www.dotblogs.com.tw/puma/archive/2009/06/21/wcf-net-tcp-channelfactory-clientbase.aspx 最近很少在寫 ...
- Step by Step 创建一个WCF Service
(一)创建WCF Service (1)创建WCF Service类库 创建一个Class Library的项目: 删除掉默认的Class1.cs文件,然后添加一个WCF Service项目: Vis ...
- 利用IIS作为宿主 发布你的WCF Service(转)
http://blog.csdn.net/blacksource/article/details/3942130 最近公司的一个需求,涉及到WCF开发.在网上找了些资料,大都是利用单独的应用程序.或者 ...
- How to consume AIF service(即WCF service) in SSIS project
最近在使用AIF做connectors时遇到一个问题,就是无法在SSIS里调到script component里C#code引用的AIF service. SSIS script component ...
- 不写画面的网页程序设计,Web API、Web Service、WCF Service
客户有一个系统,经常要连上我方,查询数据 以前的作法是给对方一个账号,让他可以连上我们的DB来查询. 所以,早期的同仁,真的给他们DB链接字符串 客户的Windows程序.网站就真的靠这么危险的方式, ...
- BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式
BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式 BizTalk Server 2006 ...
- 微软项目技术结构思路 ExtJs/JQuery + Asp.net MVC + Wcf service + Entity Framework
正文: 这一阵子在做一个项目, 客户要求使用ExtJs/ vs2008 sql server 2005, 也是好长时间没有去看新的技术和一些框架; 初步设计是准备使用 ExtJs + HTTPHand ...
最新文章
- 绩效管理是什么?怎么做绩效管理?
- shell命令的文本计算
- 微信支付-我遇到的那些问题
- [dp]POJ2559 HDOJ1506 Largest Rectangle in a Histogram
- php 正则表达式 取所有内容,php正则表达式获取内容所有链接
- python如何导入图片imread_OpenCV 使用imread()函数读取图片的六种正确姿势
- 公众号向特定用户主动推送消息_公众号助手——消息不仅可以群发,还不限制次数!...
- 百度,在模仿和创新中成长
- 伟大架构师的秘密(转载)
- 随机效应估算与固定效应估算_纯电动汽车的电池价格,可以怎么估算?
- 数据挖掘笔记——概念学习
- RocksDB 笔记
- 腾格尔发新歌《遥远的地方》,成都邓秀菊自发红包朋友圈寻歌词
- 笔记本电脑怎么录制视频
- 【猿人学WEB题目专解】猿人学第5题
- 充电桩测试设备TK4860C交流充电桩检定装置
- P2690 [USACO04NOV]Apple Catching G 题解
- 保存视频文件到相册视频的时长为0
- 巧用“谷歌学术”,轻松完成参考文献
- U型地埋管(地埋管换热器采用单孔双U管)仿真教程
热门文章
- mysql5.6.35源码安装记录
- linux修改文件的权限和修改文件所有者和所属组
- 《Power Designer系统分析与建模实战》——1.4 本章小结
- Rsync 参数详解
- 通过VS2010性能分析来查找代码中那些地方最损耗资源
- 二叉树插入算法的非递归版本
- DRAM的动态刷新问题总结
- python argparse 入门
- maven集成tomcat插件启动报错
- 【Python+OpenCV】Windows+Python3.6.0(Anaconda3)+OpenCV3.2.0安装配置