zoukankan      html  css  js  c++  java
  • WCFService Configuration Editor的使用

    1. 打开VS,在Host项目中右键,新建一个App.config文件。
    2. 点击菜单栏Tools选项,在下拉菜单中选择WCF Service Configuration Editor。
    3. 在弹出的工具窗口中选择“File->open->Config File”。找到刚才建的App.config文件,并打开。
    4. 新建一个服务,如下图所示,先点击“创建新的服务”链接,再找到Service项目中的Services.DBServices服务。

    5. 点击下一步,找到Contracts项目中的IHello契约。

    6. 下一步,选择Http的通信方式。

    7. 点击下一步,选择Basic Web Service Interoperability。(这 步忘截图了,Sorry!)
    8. 点击下一步,输入服务端Endpoint地址,这个我们先不填,待会儿再配置host上填。(为什么这么做,待会在原理部分会有讲到)。下一步Finish。
    9. 为服务添加行为(Behavior),这步很重要。在Advanced目录下,右键新建一个Service行为,NewBehavior。在它上右键,添加服务元数据的扩展。然后对行为重命名为HelloWorldBehavior,并设置HttpGetEnabled为true。如下图所示:

    10. 这些做好了之后,我们回到最上面的Service目录,为HelloWorld服务添加刚才配的HelloWorldBehavior行为配置。如下图所示:

    11. 接着配置Host的地址,选中Host,然后点击右下方的New Base Address,输入http://localhost:8080/HelloService

    12. 可以新添加一个服务端的Endpoint,用于配置WS-MetadataExchange,当然也可以不加。在Services目录下的Endpoint右键,新建一个Endpoint,名字和地址随意,保证Binding是mexHttpBinding。
    13. Ctrl+S保存,这样App.config文件就自动写满了,如下:

    原理:

      这个,工具生成XML的原理,我还真讲不出来,大标签套小标签的它都先做好了,你只要往里面填如参数就行。不过前面有个地址没有填,有必要提一下。在上面的XML文件中你会发现有这么一段:

    复制代码
    <endpoint address="" binding="basicHttpBinding" name="Hello"   Contract="Contracts.IHello" listenUriMode="Explict"/>
      <host>
          <baseAddress>
              <add baseAddress="http://localhost:8080/HelloService"/>
          </baseAddress>
      </host>
    复制代码

        endpiont的地址为空,只是配了Host的基地址。当然也可以直接配Endpoint的地址,不配Host的基地址。但如果host了多个服务呢?有多了Endpoint挂在同一个host下,那么配基地址就显得很重要。从其他地方找的一个例子,代码如下:

    复制代码
          <service name="Wcf.Services.MallService" behaviorConfiguration="MallServiceBehaviors" >      
            <endpoint  address="" contract="Wcf.Contract.IUserService" binding="basicHttpBinding"></endpoint>
            <endpoint  address="" contract="Wcf.Contract.IOrderService" binding="basicHttpBinding"></endpoint>
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8899/MallService%22/>
              </baseAddresses>
            </host>
          </service>
    复制代码

    然后我想讲的是,如何用这个生成的app.config文件替换原来HostApp中的代码。

    要做的改变如下:

    1. 将HostApp类里面的代码改删得都删掉,如下。
    HostApp
    复制代码
    namespace Host
    {
        
        //用了xml文件,这个类就可以精简很多,只需要这几句就行
        public class HostApp
        {
            static void Main(string[] args)
            {
               
                ServiceHost host = new ServiceHost(typeof(HelloWorld));
                host.Open();
                Console.WriteLine("Start Your Service.");
                Console.ReadKey();
                host.Close();
            }
        }
    }
    复制代码

      2.运行服务,并在浏览器地址栏中输入http://localhost:8080/HelloService,出现如下效果,表示服务端OK了。

        3.接下来就是Client端了。打开客户端的项目(服务端不要关闭),选择Client项目下的Service Reference,在你的服务命名空间上右键,点击Update Service Reference。

    会生成新的app.config文件。ClientApp的代码没变,点击运行。

    ClientApp
    复制代码
    namespace Client
    {
        public class ClientApp
        {
            static void Main(String[] args)
            {
                ServiceEndpoint httpEndpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(IHello)),
                    new BasicHttpBinding(), new EndpointAddress("http://localhost:8080/HelloService"));
                using (ChannelFactory<IHello> factory = new ChannelFactory<IHello>(httpEndpoint))
                {
    
                    IHello service = factory.CreateChannel();
                    service.Hello();
                    
                }
    
    
            }
        }
    }
    复制代码

    此工具使用方法为转载 地址:http://www.cnblogs.com/judastree/archive/2012/08/26/2657555.html

    注:通过此种配置文件方法可以在一台主机上绑定多个服务。 后期文章将介绍如何将宿主绑定为IIS。

  • 相关阅读:
    [转]几个开源的.net界面控件
    电脑上设置对眼睛友好的绿豆沙色
    [转] C# 绘制报表,使用Graphics.DrawString 方法
    Excel 绘制图表,如何显示横轴的数据范围
    [转] C#中绘制矢量图形
    Chapter 3 Protecting the Data(3):创建和使用数据库角色
    续x奇数倍(n+2*x)暴力算法是冠军的算法结合数量
    新秀学习SSH(十四)——Spring集装箱AOP其原理——动态代理
    中国是大数据的人工智能的发源地
    采用shell脚本统计代码的行数
  • 原文地址:https://www.cnblogs.com/nocoding/p/2881591.html
Copyright © 2011-2022 走看看