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的使用相关推荐

  1. WCF中Service Configuration Editor的使用方法(转)

    本文转自: http://www.cnblogs.com/pdfw/archive/2007/12/25/1014265.html 1.在App.config文件上右击,选择Edit WCF Conf ...

  2. WCF Service 配置文件注释(转)

    VS 2008 SP1(不确定是否不打SP1是否有)自带的一个编辑工具,可以更快的帮助定制配置文件, 以前看到过没有注意, 昨天正好一个同事提起, 这里记录一笔:打开VS 2008->Tools ...

  3. [WCF]利用net.tcp傳輸協定來建置WCF Service

    http://www.dotblogs.com.tw/puma/archive/2009/06/21/wcf-net-tcp-channelfactory-clientbase.aspx 最近很少在寫 ...

  4. Step by Step 创建一个WCF Service

    (一)创建WCF Service (1)创建WCF Service类库 创建一个Class Library的项目: 删除掉默认的Class1.cs文件,然后添加一个WCF Service项目: Vis ...

  5. 利用IIS作为宿主 发布你的WCF Service(转)

    http://blog.csdn.net/blacksource/article/details/3942130 最近公司的一个需求,涉及到WCF开发.在网上找了些资料,大都是利用单独的应用程序.或者 ...

  6. How to consume AIF service(即WCF service) in SSIS project

    最近在使用AIF做connectors时遇到一个问题,就是无法在SSIS里调到script component里C#code引用的AIF service. SSIS script component ...

  7. 不写画面的网页程序设计,Web API、Web Service、WCF Service

    客户有一个系统,经常要连上我方,查询数据 以前的作法是给对方一个账号,让他可以连上我们的DB来查询. 所以,早期的同仁,真的给他们DB链接字符串 客户的Windows程序.网站就真的靠这么危险的方式, ...

  8. BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式

    BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式 BizTalk Server 2006 ...

  9. 微软项目技术结构思路 ExtJs/JQuery + Asp.net MVC + Wcf service + Entity Framework

    正文: 这一阵子在做一个项目, 客户要求使用ExtJs/ vs2008 sql server 2005, 也是好长时间没有去看新的技术和一些框架; 初步设计是准备使用 ExtJs + HTTPHand ...

最新文章

  1. 绩效管理是什么?怎么做绩效管理?
  2. shell命令的文本计算
  3. 微信支付-我遇到的那些问题
  4. [dp]POJ2559 HDOJ1506 Largest Rectangle in a Histogram
  5. php 正则表达式 取所有内容,php正则表达式获取内容所有链接
  6. python如何导入图片imread_OpenCV 使用imread()函数读取图片的六种正确姿势
  7. 公众号向特定用户主动推送消息_公众号助手——消息不仅可以群发,还不限制次数!...
  8. 百度,在模仿和创新中成长
  9. 伟大架构师的秘密(转载)
  10. 随机效应估算与固定效应估算_纯电动汽车的电池价格,可以怎么估算?
  11. 数据挖掘笔记——概念学习
  12. RocksDB 笔记
  13. 腾格尔发新歌《遥远的地方》,成都邓秀菊自发红包朋友圈寻歌词
  14. 笔记本电脑怎么录制视频
  15. 【猿人学WEB题目专解】猿人学第5题
  16. 充电桩测试设备TK4860C交流充电桩检定装置
  17. P2690 [USACO04NOV]Apple Catching G 题解
  18. 保存视频文件到相册视频的时长为0
  19. 巧用“谷歌学术”,轻松完成参考文献
  20. U型地埋管(地埋管换热器采用单孔双U管)仿真教程

热门文章

  1. mysql5.6.35源码安装记录
  2. linux修改文件的权限和修改文件所有者和所属组
  3. 《Power Designer系统分析与建模实战》——1.4 本章小结
  4. Rsync 参数详解
  5. 通过VS2010性能分析来查找代码中那些地方最损耗资源
  6. 二叉树插入算法的非递归版本
  7. DRAM的动态刷新问题总结
  8. python argparse 入门
  9. maven集成tomcat插件启动报错
  10. 【Python+OpenCV】Windows+Python3.6.0(Anaconda3)+OpenCV3.2.0安装配置