WCF服务重构实录(下)

简介:

前两篇写了在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 中的服务。

主要语法是:

<SERVICEHOSTINGENVIRONMENT> 
   <SERVICEACTIVATIONS>
      <ADD factory="String" service="String" />
   </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>

我们为这个配置增加服务激活配置

<SERVICEHOSTINGENVIRONMENT>
      <SERVICEACTIVATIONS>
        <ADD service="WCFLib.Add" relativeaddress="NewAddService.svc" />
      </SERVICEACTIVATIONS>
    </SERVICEHOSTINGENVIRONMENT>

来看一下现在完整的配置

<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文件后的目录是这样的  

 

那么怎么使用这个没有SVC文件的WCF服务呢,很简单,我们只要认为有这个服务就可以了,删除之前的Client中的引用,我们重新添加引用一下 

 再运行一下试试看 

 




     本文转自xshf12345 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/583882,如需转载请自行联系原作者


相关文章
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
289 0
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
495 0
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
384 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF使用纯代码的方式进行服务寄宿
服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。
1148 0
|
Windows
WCF服务寄宿到IIS
一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。
1382 0
WCF服务自我寄宿
WCF服务的寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有: IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便、高效提供服务调用。
1277 0
|
网络架构
(纯代码)快速创建wcf rest 服务
因为有一个小工具需要和其它的业务对接数据,所以就试一下看能不能弄一个无需配置快速对接的方法出来,百(以)度(讹)过(传)后(讹),最后还是对照wcf配置对象调试出来了: 1.创建WebHttpBinding 2.
1235 0