• WCF(五) Host WCF Service


    这次我们讨论Host a WCF service.

    前述

    为了让client可以使用service,我们必须host service到一个每时每刻都在运行的环境中(我们叫Host Application),因为它时刻等待着来自client的request(请求). Host有人翻译成"寄宿",我仍使用Host. Host application负责start和endservice, 然后监听来自client的request,解析client的request,然后调用相应的service. 最后把结果返回给client.

    Host Application为每一个Service 创建一个ServiceHost对象. 当有多个Service是,就会创建多个ServiceHost对象. 当client需要使用多种protocol(通信协议),如Http和tcp,此时你不必创建多个service, 因为前面我们知道一个Service可以有多个endpoint(endpoint 包含Address,Binding,Contract). Binding指定不同的protocol,所以,我们只需创建多个endpoint,在binding中指定不同的protocol即可.

    可以把service host到以下环境中:

    1.IIS:我们需要创建一个Web Site,使用该Website去host wcf,然后将该website放到IIS中. 如果你使用了IIS去host wcf,那么只能使用http protocol. 当有request到来时,host application可以自动激活,并开始监听.

    2.WAS:(Windows Process Activation Service)作为IIS7.0的一个新特性.我们同样需要创建一个web site .Vista,Windows 7, Windows Server2008 等操作系统可以安装WAS.  如果你使用了WAS去host wcf,可以使用http ,tcp,MSMQ,Named Pipe protocol. 当有request到来时,host application可以自动激活,并开始监听.

    3.Managed Application(托管程序,如Console,WinFrom,WPF): Self-Hosting. 当有request到来时,host application不能自动激活.需要在代码中手动new出serviceHost对象.

    我们如何选择哪一种host方式呢?

    答案是:取决于你的操作系统,和通信需求,和特定场景.

    1.如果你的操作系统是windows server2003,并且程序只用http即可满足需求. 那么使用IIS去host. 如果程序除了使用http不可满足需求(除了http,还需要tcp),则要创建window 服务去host.

    2.如果你的操作系统是windows server2008(或 windows 7 )使用WAS. 因为它可以支持更多的protocol.

    3.如果仅仅用于演示,可以使用Console去host. 但是release到真正的产品时,最好用winForm或WPF.

    对于每一种方式,我们如何实现呢?

    未完,待续....

  • 相关阅读:
    UISB 手势进阶
    如何构建数仓指标体系及案例介绍
    人到中年(程序员35±)
    VirtualBox安装CentOS7.8系统
    人是怎么废掉的!
    数据仓库、数据中台、数据湖
    政务大数据之数据治理
    alpine 切换安装源,apk add慢
    Spring详解(四)——Spring IOC容器的设计与实现
    【JavaScript】展开语法
  • 原文地址:https://www.cnblogs.com/marksun/p/2646890.html
Copyright © 2020-2023  润新知