WCF :通过配置文件来托管服务
2011-05-14 14:04
477 查看
前两篇写了在IIS7下部署SVC文件引导WCF服务,采用了net.tcp文件,但是实际的开发中,由于项目的架构已经确定,不宜做大的改动,且为了试项目组成员开发方便,我们之前的项目架构是这样的:
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152022160.png)
主体是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文件后的目录是这样的
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152048770.png)
那么怎么使用这个没有SVC文件的WCF服务呢,很简单,我们只要认为有这个服务就可以了,删除之前的Client中的引用,我们重新添加引用一下
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152064541.png)
再运行一下试试看
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152089166.png)
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152022160.png)
主体是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 > |
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152048770.png)
那么怎么使用这个没有SVC文件的WCF服务呢,很简单,我们只要认为有这个服务就可以了,删除之前的Client中的引用,我们重新添加引用一下
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152064541.png)
再运行一下试试看
![](http://images.cnblogs.com/cnblogs_com/wengyuli/201104/201104062152089166.png)
相关文章推荐
- WCF :通过配置文件来托管服务
- WCF服务控制台托管方法(不使用配置文件)
- WCF基础 (续 通过代码和配置文件写一个WCF服务)
- 第一章 基础 (续 通过代码和配置文件写一个WCF服务)
- WCF 第五章 行为 通过配置文件暴露一个服务行为
- 不通过配置文件启动WCF服务
- WCF 第一章 基础 通过代码和配置文件写一个WCF服务
- WCF 第一章 基础 通过代码和配置文件写一个WCF服务
- 一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过配置文件方式(六)
- WCF 第五章 行为 通过配置文件暴露一个服务行为
- WCF随客户端软件一起发布,客户端自动识别WCF服务地址,不通过配置文件绑定WCF服务,客户端动态获取版本号
- WCF服务控制台托管方法(不使用配置文件)
- 解决AX2012通过AXC配置文件打开客户端时出现WCF 错误
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- 完全不使用配置文件构建和使用WCF服务
- 解决AX2012通过AXC配置文件打开客户端时出现WCF 错误
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- WCF通过SVCUtil.exe生成客户端代理类和配置文件(转)
- wcf学习第4天(通过配置文件来设置)
- WCF步步为营(二):使用配置文件改变发布服务的方式