惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The GitHub Blog
The GitHub Blog
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
腾讯CDC
博客园 - 聂微东
The Cloudflare Blog
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
Last Week in AI
Last Week in AI
B
Blog

博客园 - 蝈蝈

LAMPR Ver 1.0 发布 - 轻松搞定LAMP环境 在Windows Server下集成Apache、Tomcat和IIS Windows Workflow 学习笔记二 序语言流行度最新排行榜,C和C++正在衰落 Windows Workflow学习笔记 EAI,ESB与SOA How to Building ASP.NET AJAX Controls 使用页面Gzip压缩提速 Microsoft AJAX Library 简介 Configuration Section Designer示例 开源的内容管理系统 Windows Live Writer截屏插件 试用Windows Live Writer写博客 wcf step by step:服务的状态 wcf step by step:消息交换模式 wcf step by step:如何保护你的wcf服务 wcf step by step之异常处理 wcf step by step:改进HelloWorld程序 wcf step by step之HelloWorld
wcf step by step:host服务与多次Endpoint
蝈蝈 · 2008-02-28 · via 博客园 - 蝈蝈

    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