wcf step by step:host服务与多次Endpoint

    WCF的服务需要一个宿主程序来承载。我们可以选择用Windows Activation Service(WAS,for vista),IIS,WPF,Windows Form,Console或Windows Service程序来当作wcf的宿主程序。
  在上一篇中我们没有提到宿主程序的概念但也能运行,其实是宿主在IIS上,还记得我们需要在IIS配置虚拟目录么。
现在我们用其它的方式来宿主,并实现一个服务绑定多个Endpoint。
一种方式是wpf程序,通过配置文件绑定Endpoint,另一种方式以编程方式绑定Endpoint的windows service程序。以编程的方式绑定是出于演示目的,实际的应用场景中都会以配置文件的方式提供绑定,因为这样具有更多的灵活性。
需要注意的是我们不需要为service指定behaviorConfiguration属性了。但需要显式指定endpoint的address。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="HelloWorldWCF.EmployeeService">
        <endpoint address="http://localhost:8000/HelloWorldWCFdemo/EmployeeService.svc"
          binding="basicHttpBinding" name="EmployeeServiceHttpEndpoint"
          contract="HelloWorldWCF.IEmployeeService" />
        <endpoint address="net.tcp://localhost:8080/tcpEndpoint" binding="netTcpBinding"
          bindingConfiguration="" name="EmployeeServiceTcpEndpoint" contract="HelloWorldWCF.IEmployeeService" />
      </service>
    </services>
  </system.serviceModel>
</configuration>
客户端仍然是通过svcUtil工具生成的代理文件来完成与服务器的通讯的。因为这种方式比较简单,实际的企业应用中这样做太麻烦,每次服务接口有修改客户端需要update一次service reference才可以使用。后面我们会用一种更友好的方式来实现,服务器端和客户端共享数据和接口。客户端与上次没有太大变化,需要注意的是配置文件和New一个服务的客户端代理对像时我们传入一个endpoint的名给它,因为我们配置了多个endpoint,我们需要告诉它当前用哪一个。
下面是运行的效果图,请注意我们让HelloWorldWCFClient启动了多个实例,并都处于调试状态。通过输入不同而使用不同的协议与同一个服务器端通讯。因为我们的服务绑定了多个endpoint


下载源码:https://files.cnblogs.com/shore/chapter%202.zip


shore 2008-02-28 16:57 发表评论
posted on 2008-02-28 16:57  蝈蝈  阅读(431)  评论(0编辑  收藏  举报