zoukankan      html  css  js  c++  java
  • Custom Hosting in IIS/WAS

    常常需要与宿主实例进行交互。这对于使用自托管的方式是不可或缺的。当使用IIS或WAS时,不能直接访问宿主。为了克服这个障碍,WCF提供了一个宿主工厂。在.svc文件中使用Factory标签,使用此工厂,而不使用默认工厂:

    <%@ ServiceHost
       Language   = "C#"
       Debug      = "true"
       CodeBehind = "~/App_Code/MyService.cs"
       Service    = "MyService"
       Factory    = "MyServiceFactory"
    %>

    当不显示使用.svc文件时,也可以在配置文件中指定宿主工厂:

    “<serviceActivations>
       <add relativeAddress = "MyService.svc"
            service = "MyService"
            factory = "MyServiceFactory"
       />
    </serviceActivations>”
    
    摘录来自: Juval Löwy and Michael Montgomery. “Programming WCF Services”。 iBooks. 

    自定义宿主工厂类必须继承自ServiceHostFactory类并重写虚方法CreateServiceHost():

    public class ServiceHostFactory : ...
    {
       protected virtual ServiceHost CreateServiceHost(Type serviceType,
                                                       Uri[] baseAddresses);
       //More members
    }”
    
    摘录来自: Juval Löwy and Michael Montgomery. “Programming WCF Services”。 iBooks. 

    例如:

    class MyServiceFactory : ServiceHostFactory
    {
       protected override ServiceHost CreateServiceHost(Type serviceType,
                                                        Uri[] baseAddresses)
       {
          ServiceHost host = new ServiceHost(serviceType,baseAddresses);
    
          //Custom steps here
    
          return host;
       }
    }”
    
    摘录来自: Juval Löwy and Michael Montgomery. “Programming WCF Services”。 iBooks. 

    CreateServiceHost()方法其实就相当于IIS或WAS托管服务的Main()方法,你可以以这样的目的来使用它。

    尽管对于从 CreateServiceHost 返回的 ServiceHost 可以执行什么操作没有技术限制,但建议您尽可能使工厂实现简单化。如果有大量的自定义逻辑,最好将这些逻辑放入宿主内而不是工厂内,以便可以重用它们。

     完整示例:CustomServiceHost.zip

    参考:

    Juval Löwy and Michael Montgomery. “Programming WCF Services”

    使用 ServiceHostFactory 扩展宿主(https://msdn.microsoft.com/zh-cn/library/aa702697.aspx)

     

  • 相关阅读:
    线程中消费者生产者的实例代码(synchronized关键字)
    ThreadLocal管理Connection
    ThreadLocal的练习代码
    JDK中线程组ThreadGroup
    创建线程的三种方式
    ES练习代码
    window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
    ES配置文件中文版
    springmvc工作原理
    IE不兼容document.getElementsByClassName
  • 原文地址:https://www.cnblogs.com/joe-yang/p/5154826.html
Copyright © 2011-2022 走看看