WCF Service Configuration Editor的使用【转】

原文:http://www.cnblogs.com/Ming8006/p/3772221.html

通过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>

14。修改Hosting类的代码,删改后如下:

 1 using System;
 2 using System.ServiceModel;
 3 using WcfServices.Services;
 4
 5 namespace WcfServices.Hosting
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
12             {
13                 host.Opened += delegate
14                 {
15                     Console.WriteLine("CalculaorService have started, press any key to stop it!");
16                 };
17
18                 host.Open();
19                 Console.Read();
20             }
21         }
22     }
23 }

注意

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),内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <client>
      <endpoint address="http://localhost:8080/calculatorservice" binding="basicHttpBinding" contract="WcfServices.Contracts.ICalculator" name="calculatorservice" />
    </client>
  </system.serviceModel>
</configuration>

对客户端项目,我们将添加的服务引用移除,并为Client项目添加对Contracts项目的引用。借助于这个服务契约,并通过ChannelFactory<ICalculator>创建服务代理对象,直接进行相应的服务调用。

using System;
using System.ServiceModel;
using WcfServices.Contracts;

namespace WcfServices.Client
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ChannelFactory<ICalculator> channelFactory  = new ChannelFactory<ICalculator>("calculatorservice"))
            {
                ICalculator proxy = channelFactory.CreateChannel();
                using (proxy as IDisposable)
                {
                    Console.WriteLine("x + y = {2} when x = {0} and y = {1}", 1, 2, proxy.Add(1, 2));
                }
                Console.Read();
            }
        }
    }
}

源代码: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

时间: 2024-10-22 16:49:02

WCF Service Configuration Editor的使用【转】的相关文章

WCF Service Configuration Editor的使用

WCF Service Configuration Editor的使用 2014-06-13 通过WCF Service Configuration Editor的配置修改Client端 在上篇文章创建一个简单的WCF程序中, 使用WCF Service Configuration Editor工具生成XML文件来进行WCF的配置,而不是在CS文件中敲代码. 通过WCF Service Configuration Editor的配置 返回 以下是使用WCF Service Configurati

WCF中Service Configuration Editor的使用方法

1.在App.config文件上右击,选择Edit WCF Configuration.... 或者打开Program Files\Microsoft Visual Studio 8\Common7\IDE\svcconfigeditor.exe后选择File - New Config. 2.创建新的服务设置. 3.手工输入,或使用 "Browser..." 选择服务所在程序集. 4.确认契约是否正确. 5. 选择通讯方式. 6. 选择操作方式. 7. 将服务端点地址清空,不要理会提示

如何创建一个AJAX-Enabled WCF Service

  原创地址:http://www.cnblogs.com/jfzhu/p/4041638.html 转载请注明出处   前面的文章中介绍过<Step by Step 创建一个WCF Service >以及<如何使用WCF的Trace与Message Log功能>,本文介绍如何创建一个AJAX-Enabled WCF Service. (一)创建一个WCF AJAX-enabled service 1. 打开Visual Studio 2012,创建一个ASP.NET Empty

用JavaScript调用WCF Service

原文:用JavaScript调用WCF Service 原创地址:http://www.cnblogs.com/jfzhu/p/4039604.html 转载请注明出处 前面介绍过<Step by Step 创建一个WCF Service>和<使用WCF的Trace与Message Log功能>,本文介绍一下如何用JavaScript来调用WCF Service. WCF Service的代码如下: IHelloService.cs using System.ServiceMode

Fixing common issues when hosting a .NET 4.0 WCF service in IIS 7

http://sandrinodimattia.net/fixing-common-issues-when-hosting-a-net-4-0-wcf-service-in-iis-7/ Until today I never had to host a WCF service in IIS… I always prefered using a ServiceHost in a Windows Service. Before getting my service up and running I

WCF - Hosting WCF Service

After creating a WCF service, the next step is to host it so that the client applications can consume it. This is known as WCF service hosting. A WCF service can be hosted by using any of the four ways given below: 在创建wcf服务后,下一个步骤就是托管该服务,确保客户端应用可以使用它

WCF - Consuming WCF Service

WCF services allow other applications to access or consume them. A WCF service can be consumed by many ways depending on the hosting type. Here, we are explaining the step-by-step method to consume a WCF service for each of the following popular host

ASP.NET MVC提交一个较复杂对象至WCF Service

前一篇<jQuery.Ajax()执行WCF Service的方法>http://www.cnblogs.com/insus/p/3727875.html 我们有练习在asp.net mvc应用程序中,POST 数据去wcf service并执行方法.本篇的练习是提交较复对象至wcf service执行方法.前一篇中,它只传递两个参数.如果我们平时开发,需要传递过多的参数时,那得需要写很多个参数.因此产生此篇,把较多个参数,创建为一个对象.然后只传递这个对象至wcf service即可. 下面

MVC应用程序使用Wcf Service

原文:MVC应用程序使用Wcf Service 前一篇Insus.NET有演示过MVC应用程序使用Web Service, 此篇Insus.NET想继续演示Service,不过是WCF Service. 两者实施起来,多少有些不一样. 在Services目录下,创建一个Calculator.svc 服务.创建成功之后,它会生生成一个接口以及一个svc的文件: 在Calculator.svc中,它是实作上面的接口,而且均实现了四个方法: WCF Service创建好之后,正常的话,它能浏览: 下面