C语言初识WCF3

http://www.cnblogs.com/xiangchangdong/p/3924030.html

老三首 在IIS中过夜服务

透过前少首的学习,我们了解了哪充实建筑一个无限简便易行的WCF通信模型,包括定义和贯彻劳务协定、配置服务、寄宿服务、通过丰富服务引用的方式安排客户端并访问服务。我们针对WCF的编程生命周期有矣一个极基本的垂询。

于前方少首中示范的例子,一定要是力求背着做下,包括自程序、配置文件都使背一行行的手写下去,这样才能够发厚的体味。WCF的知零散复杂,必须脚踏实地的念与习。如果您还无完结了然于胸,现在快翻回到把例子再举行同遍。

今天于咱们略微尖锐一些,了解部分关于住宿的新知识:在IIS中过夜服务。

每当眼前少首的事例中,我们建了一个控制台应用程序来作劳务的宿主,这种寄宿方式叫”自托管”,即WCF服务与应用程序是一环扣一环的。这种寄宿方式有一些亮点,他待极度少的框架支持(只需要一个控制台应用程序就足以了,随处建立,随处运行),因此配置以及以还是太简单易行的,此外通过控制台程序还可对WCF服务运作面临起的荒唐进行蹲点,在付出服务等级,这种办法能提供调试之造福。

而,如果当最终产品部署,自托管的住宿方式就是非那么方便,应用程序相比框架(IIS、Windows服务等)是不安静之,WCF与应用程序共享生命周期,应用程序关闭后WCF也会见停下。还有许多表征诸如进程回收、空闲关闭等自托管都是未支持的。因此,为了使我们的WCF符合产品级别的求,应该也那个择一个再度稳定、伸缩性更好的宿主。

除自托管,WCF还可住宿于IIS、Windows服务、Windows进程激活服务(WAS)中。比较流行的凡当IIS和Windows进程激活服务寄宿。

当IIS中过夜,需要IIS5.1或重新胜似版本的支持,IIS会为我们管理ServiceHost(还记他也,看率先首被的代码),同时也咱提供经过回收、空闲关闭、进程运行状况监视等特色支持,我们才待把劳动相关的文件按一定的团办法放入IIS的托管中(就像建立一个网站应用程序或虚拟目录),IIS会为我们管理全。这种托管受到支撑之系统多,从Windows
XP SP2 到 WIndows Server
2008,所以她好流行。然而他为发通病,它只能承受http协议的绑定,对于tcp、管道、MSMQ都是休支持的。

自打IIS7开始,提供了所谓Windows进程激活服务(WAS)
的效能,如果管WCF寄在WAS中,就可以支撑具备的绑定协议(TCP等),像MSMQ这样的说道,在内网和.Net编程模型下有十分死的性能优势,因此WAS应该会化未来WCF寄宿的严重性方法,但是IIS7要求Windows
Vista以上版本的系才会支持,他的普及可能还需要时间吧。

咱俩今天事先修以IIS中过夜,记住,IIS寄宿只支持http协议的绑定。

尝试环境在印证一下:

Windows 7 家庭高级版 SP1

IIS7

Visual Studio 2010 旗舰版 SP1

老老实实的攻,我们今天匪因IDE帮助建立之花色,完全手写一个住宿于IIS的劳动。

  1. 为IIS应用建立物理位置

IIS应用程序需要映射到本地驱动器的一个大体路径上,我们先行把它打好。

自家管这个文件夹建立在了C:\WCF\产,取名为IISService。(HelloWCF是我们于头里片篇中树立的,还记得么)

 C语言 1

  1. 树IIS应用程序

 物理路径建好了,现在咱们于这岗位上树立一个应用程序。点击开始->控制面板,在列蒙找到管理工具,然后打开IIS。

C语言 2

拓展左边的节点,在默认网站节点上点击右键,选择“添加应用程序”

C语言 3

否应用程序指定一个号,这个得自由起的,这个名字将成未来服务地方之同一有,我把它从作IISService,物理路径就是选择我们刚建立之文书夹。

C语言 4

点击确定,IIS应用程序就建造好了,我们可以看于默认网站下基本上矣这应用程序,但是里面还什么还无。

C语言 5

  1. 确立服务文件

我们要依照IIS宿主的渴求树立几独文本放到IIS中才会承载起我们的劳动,当然服务的相关消息吗是叙在这些文件中的。

(1) svc文件。

svc就是service的意思了,我们要首先成立一个XXX.svc的文本放到IIS应用程序目录下,这个文件是服务之进口,客户端需要是文件的地方来走访服务(当然也囊括原数据交换)。

咱俩来手动建立这个文件,打开VS2010,选择文件菜单->新建->文件。在正规栏目中,选择一个文件文件,然后点击”打开”按钮

C语言 6

当时该是个svc文件,而未是.txt文件,所以我们其他存一下,另存的时段要留心保存类型选择呢有文件。我拿此文件起名为HelloWCFService.svc,这个名字可以擅自起,这个名字为用改为服务地方之相同有的。保存位置就是是咱们恰好建IIS应用程序的职位。

C语言 7

现在我们来编排这文件之情节,很简单,就特出一行代码。

<%@ServiceHost language=c# Debug="true" Service="LearnWCF.HelloWCFService"%>  

于<%%>框住的表示此是一个服务器端包含,@ServiceHost
标签表示这是个WCF的劳动,联想一下前少首代码中之ServiceHost
对象。language=c#
表示我们用C#言语来描写代码,Debug=true顾名思义了,最紧要的是Service这个特性,他代表是服务的实现类似是呀,这里而用了限定名,即要包取名空间。我自从了一个命名空间名LearnWCF,我们拿劳务概念都坐落这命名空间下,后面的HelloWCFService就是服务之贯彻类似了。我们对接下去要失去到之看似的始末。

好望。.svc文件就相当给一个先导,帮咱以IIS宿主中找到服务的职务,具体的代码,我们可以描绘在其余一个地方(其实为堪写以svc文件中,不引进)。

 

把写的情节保留一下,我们后续提高。

紧接下去我们而描绘这定义服务之好像公事了。但是于就之前,我们先乎接近公事建立一个存的职位,IIS的代码文件应该存放于IIS应用程序目录的App_Code子目录下,所以我们先行管此文件夹建立起。

C语言 8

 

 

可以看我们正好成立之HelloWCFService.svc已经让辨认为WCF服务了。

 

(2) cs文件

返回VS2010,还是文件->新建->文件,选择文本文件。

这次我们若白手起家之是相仿公事,其名字为HelloWCFService.cs,注意别存为的时段要将保存类型选择为有文件,路径而选我们正好起之App_Code文件夹

编写这文件,我们于这边定义跟落实服务协定,应该很熟悉吧,尝试着坐在形容下来吧。

    using System;  
    using System.ServiceModel;  

    namespace LearnWCF  
    {  
        [ServiceContract]  
        public interface IHelloWCF  
        {  
            [OperationContract]  
            string HelloWCF();  
        }  

        public class HelloWCFService : IHelloWCF  
        {  
            public string HelloWCF()  
            {  
                return "Hello WCF!";  
            }  
        }  
    }  

本条代码应该怪在行的从出来,如果对当下段代码还有啊不晓得的地方,赶快翻回第一首复习一下。

 

保存一下,我们继承上扬

 

(3)web.config文件

咱俩就老懂,还需一个布局文件,在里安排终结点、服务、行为等等的消息。这个布局文件以及咱们前起之大致相同。

或者回VS2010,还是新建一个文件文件,另存也web.config。这个文件称,是匪可知改变的,保存路径是我们成立之IIS应用程序IISService的目录下(和svc保存在并)

C语言 9

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata httpGetEnabled="true"/>  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

 

 

这个布局文件和我们前写的产生有不同之处:

1) 配置文件之公文称也web.config,而休是app.config

2)
<Service>标签没有了基地址的讲述,在IIS寄宿中,服务基地址是由IIS负责指定的。例如本例中服务之营址为http://localhost/IISService/HelloWCFService.svc

3)
终结点的地方指定为空,表示即使用服务基地址作为终结点地址,当然这里吧足以指定一个针锋相对地址,但是未能够指定绝对地址,必须服从IIS指定的基地址。

任何地方并从未什么区别,特别注意在指定服务实现类似以及签订接口类的时自然要是带动达命名空间,这是一个非常容易犯的一无是处。

 

封存,大功告成

  1. 完成

到这里,在IIS中之下榻就完了了,很粗略,一个IIS应用程序,3独公文。当然这仅是太简单易行的状况。

至于运营服务,IIS都见面吗我们失去举行,只要IIS应用程序(或网站)在线,服务就是在线运行。

尽艺术,在浏览器中看一下,是休是打响了。

IIS寄宿的劳动地方格式:

http://机器名/IIS应用程序名/XXX.svc  

所以我们这例子的劳务地方应该是:http://localhost/IISService/HelloWCFService.svc 

C语言 10

以用IIS,所以系统自动为闹了交换元数据的机械地址,而从未因此localhost。

 

  1. 总结。

当下同样篇我们上学了怎样以IIS中依托宿WCF服务,必备之要素总结如下几点:

(1) 建立IIS应用程序及物理路径

(2) 在应用程序路径下建立XXX.svc文件用于声明WCF入口和劳务地方导航

(3)
在应用程序路径的子目录App_Code下建立XXX.cs文件用于定义及促成劳务协定

(4) 在应用程序路径下成立web.config 用于配置服务。

(5) 保持IIS为启动状态。