资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,托管(承载服务),课程内容:,宿主概述,自承载(自宿主(,Self-hosting,),在,IIS,中承载,在,Windows Activation Service (WAS),中承载,(,(WAS),宿主),Windows service,中,服务寄宿的本质,WCF,服务寄宿的本质是为服务创建或指定一个进程,并为之创建一个监听和执行的运行环境。,对服务寄宿的唯一途径就是为服务类型创建并开启,ServiceHostBase,对象。由于,WCF,已经为我们定义了一个功能强大的自定义,ServiceHostBase,对象:,ServiceHost,,所以一般情况下只要直接使用,ServiceHost,进行服务寄宿。,宿主环境,Self-hosting,控制台应用程序,,Windows,应用程序,,Windows,服务,HTTP, TCP, named pipes, Microsoft Message,Queuing (MSMQ),IIS/Microsoft ASP.NET,HTTP,Windows Activation Service,HTTP, TCP, named pipes, MSMQ,Windows,服务,自宿主(,Self-Hosting,),ServiceHost,实例必须进行初始化来为服务暴露出端点(,endpoint,),每个,ServiceHost,与指定的服务类型(接口)相关联,Self-hosting,环境手动创建实例,核心方法:,Open() ,打开信道监听器,Close() ,关闭信道监听器,两种方式:,1.,编写代码实现配置,2.,配置文件配置,代码方式:,static void Main(string args),using (ServiceHost host = new ServiceHost(typeof(HelloIndigo.HelloIndigoService),host.AddServiceEndpoint(typeof(HelloIndigo.IHelloIndigoService); new NetTcpBinding(), net.tcp:/localhost:9000/HelloIndigo);,host.Open();,Console.WriteLine(,服务已经启动!,);,Console.ReadLine();,注意:,ServiceHost,需要手动打开,配置方式:,可以承载多服务,可以承载多服务,例题:本章:托管多个服务实现三种,MEP,例题:托管多个服务(在一个宿主中发布多个端点),public class Program,public static void Main(string args),try,Type type1 = typeof(Job);,Type type2 = typeof(OneWayJob);,Type type3 = typeof(NormalJob);,ServiceHost server1 = new ServiceHost(type1);,ServiceHost server2 = new ServiceHost(type2);,ServiceHost server3 = new ServiceHost(type3);,server1.Open(); server2.Open(); server3.Open();,Console.WriteLine(,服务已启动,);,catch (Exception ex),Console.WriteLine(ex.ToString();,Console.ReadKey();,Hosting,配置,Clieng,配置,注意:不能给同一个服务指定多个相同的基地址(一个服务可以托管到多个地址),不同的服务可以,区别:托管多个服务和一个服务托管多次,看书,p45,程序清单,比较和前例的不同,P47,客户端,通过名称指定端点,IIS,承载:,IIS,本身可以看作一个自动化的进程激活工具,IIS,承载,IIS,承载,IIS,承载,步骤:,创建一个,IIS,虚拟应用程序,创建一个服务实现的,svc,文件,并在配置文件中包含,Svc,文件内容,:,请求根据文件,.svc,在,IIS,中的扩展映射到,WCF,中,(服务类型与,ServiceHost,的声明相关,,ServiceHost,实例化为服务类型),把,svc,文件和配置文件复制到,IIS,虚拟目录,如果托管不行就(,dll,、,svc,和,web.config,文件拷贝出来放到单独的文件夹里面进行,IIS,寄宿),在,Windows,进程激活服务,(WAS),中承载,通过,WAS,(,Windows Process Activation Service,)实现了非,HTTP,的请求监听,可以将这种方式的服务寄宿称为基于,WAS,的服务寄宿。本质上是通过,IIS 7,实现基于非,HTTP,的服务寄宿,在,Windows,进程激活服务,(WAS),中承载,安装,WCF,所需的激活组件(,p232,),步骤和在,IIS,中承载类似,将,Services,所在的目录映射为,IIS,下的虚拟目录,在根目录下创建一个,Web.config,,配置,WCF,服务寄宿相关的设置,为站点设置,TCP,绑定,为,Web,应用添加支持协议(图,1,图,2,),由于,ASP.NET,应用在运行的时候默认从根目录下的,Bin,子目录加载,Assembly,,而,Services,项目默认编译的目标目录为,BinDebug|Release,,所以我们需要通过修改项目属性将编译的目标目录设为,Bin,(图,3,)。,客户端程序通过访问,WCF,服务的,.SVC,文件的方式进行服务的调用,所以在相应终结点中的地址为,.SVC,所在的地址。, :,图,1,默认网站,图,2,图,3,Windows,服务中,添加,windows,服务,添加配置文件,app.config,通过设计界面设置,windows,服务设置,serviceInstaller,属性(,display name,服务中显示名称,,starType,自动开启、手动开启和禁用,默认手动),编译后生成安装文件,安装该,exe,文件,,installutil.exe,位于目录下,直接进,cd % windir%,installNtil.Exe e,:,路径,小结:,P,(,250,表,7.2,),
展开阅读全文