WCF服务重构实录(下)
2011-04-06 21:52
204 查看
前两篇写了在IIS7下部署SVC文件引导WCF服务,采用了net.tcp文件,但是实际的开发中,由于项目的架构已经确定,不宜做大的改动,且为了试项目组成员开发方便,我们之前的项目架构是这样的:
主体是WebHost,这是用来托管WCF服务的,放弃了ConsoleHost,那么现在的问题是能不能仅仅通过配置文件来托管服务,不必通过SVC文件的连接呢,MSDN上给出了一个很好的解决方案:http://msdn.microsoft.com/zh-cn/library/ee816902(en-us,VS.100).aspx
主要使用的是一个配置元素<serviceActivations>,MSDN给出的说明是:
一个配置元素,用于添加可定义虚拟服务激活设置(映射到 Windows Communication Foundation (WCF) 服务类型)的设置。使用此配置元素可以在不使用 .svc 文件的情况下激活承载在 WAS/IIS 中的服务。
主要语法是:
view sourceprint?
那么有了这个好组件,我们就拿来改造现有的服务吧。
首先,之前的服务配置是
view sourceprint?
我们为这个配置增加服务激活配置
view sourceprint?
来看一下现在完整的配置
view sourceprint?
删除SVC文件后的目录是这样的
那么怎么使用这个没有SVC文件的WCF服务呢,很简单,我们只要认为有这个服务就可以了,删除之前的Client中的引用,我们重新添加引用一下
再运行一下试试看
主体是WebHost,这是用来托管WCF服务的,放弃了ConsoleHost,那么现在的问题是能不能仅仅通过配置文件来托管服务,不必通过SVC文件的连接呢,MSDN上给出了一个很好的解决方案:http://msdn.microsoft.com/zh-cn/library/ee816902(en-us,VS.100).aspx
主要使用的是一个配置元素<serviceActivations>,MSDN给出的说明是:
一个配置元素,用于添加可定义虚拟服务激活设置(映射到 Windows Communication Foundation (WCF) 服务类型)的设置。使用此配置元素可以在不使用 .svc 文件的情况下激活承载在 WAS/IIS 中的服务。
主要语法是:
view sourceprint?
< SERVICEHOSTINGENVIRONMENT > |
< SERVICEACTIVATIONS > |
< ADD factory = "String" service = "String" /> |
</ SERVICEACTIVATIONS > |
</ SERVICEHOSTINGENVIRONMENT > |
首先,之前的服务配置是
view sourceprint?
< SERVICES > |
< SERVICE behaviorconfiguration = "MyBehavior" name = "WCFLib.Add" > |
< ENDPOINT address = "" binding = "netTcpBinding" contract = "WCFLib.IAdd" bindingconfiguration = "netTcpBindConfig" ></ ENDPOINT > |
< ENDPOINT address = "mex" binding = "mexTcpBinding" contract = "IMetadataExchange" ></ ENDPOINT > |
</ SERVICE > |
</ SERVICES > |
view sourceprint?
< SERVICEHOSTINGENVIRONMENT > |
< SERVICEACTIVATIONS > |
< ADD service = "WCFLib.Add" relativeaddress = "NewAddService.svc" /> |
</ SERVICEACTIVATIONS > |
</ SERVICEHOSTINGENVIRONMENT > |
view sourceprint?
< SYSTEM.SERVICEMODEL > |
< BINDINGS > |
< NETTCPBINDING > |
< BINDING name = "netTcpBindConfig" > |
< SECURITY mode = "None" > |
< TRANSPORT clientcredentialtype = "Windows" protectionlevel = "EncryptAndSign" /> |
< MESSAGE clientcredentialtype = "Windows" /> |
</ SECURITY > |
</ BINDING > |
</ NETTCPBINDING > |
</ BINDINGS > |
< SERVICEHOSTINGENVIRONMENT > |
< SERVICEACTIVATIONS > |
< ADD service = "WCFLib.Add" relativeaddress = "NewAddService.svc" /> |
</ SERVICEACTIVATIONS > |
</ SERVICEHOSTINGENVIRONMENT > |
< SERVICES > |
< SERVICE behaviorconfiguration = "MyBehavior" name = "WCFLib.Add" > |
< ENDPOINT address = "" binding = "netTcpBinding" contract = "WCFLib.IAdd" bindingconfiguration = "netTcpBindConfig" ></ ENDPOINT > |
< ENDPOINT address = "mex" binding = "mexTcpBinding" contract = "IMetadataExchange" ></ ENDPOINT > |
</ SERVICE > |
</ SERVICES > |
< BEHAVIORS > |
< SERVICEBEHAVIORS > |
< BEHAVIOR name = "MyBehavior" > |
< SERVICETHROTTLING maxconcurrentcalls = "1000" maxconcurrentinstances = "1000" maxconcurrentsessions = "1000" /> |
< SERVICEMETADATA httpgetenabled = "true" /> |
< SERVICEDEBUG includeexceptiondetailinfaults = "true" /> |
< DATACONTRACTSERIALIZER maxitemsinobjectgraph = "6553600" /> |
</ BEHAVIOR > |
</ SERVICEBEHAVIORS > |
</ BEHAVIORS > |
</ SYSTEM.SERVICEMODEL > |
那么怎么使用这个没有SVC文件的WCF服务呢,很简单,我们只要认为有这个服务就可以了,删除之前的Client中的引用,我们重新添加引用一下
再运行一下试试看
相关文章推荐
- WCF服务重构实录(下)
- WCF服务重构实录(上)
- WCF服务重构实录(上) 推荐
- WCF服务重构实录(下)
- WCF服务重构实录(中)
- WCF服务重构实录(下)
- WCF服务重构实录(中)
- WCF服务重构实录(中)
- WCF服务重构实录(上)
- WCF服务重构
- 移植Windows自宿主WCF服务到Linux/Mono2.8
- 从架构设计到系统实施-基于.NET 3.0的全新企业应用之基于WCF的系统服务
- 移植Windows自宿主WCF服务到Linux/Mono2.8
- WCF客户端编程-基于服务引用方式
- \t\t【框架】Wcf 面向服务分布式通信
- 发布WIN服务的WCF - 创建与调用
- Silverlight 访问WCF服务
- WCF中的服务引用根源
- IIS上部署WCF服务
- wcf服务发布时,目录中没有文件生成