zoukankan      html  css  js  c++  java
  • 【翻译】WCF Service Application和WCF Service Library的区别

    最近我在工作中一直用到WCF。一个困惑点就是应该选择哪种类型的工程:WCF Service Application 还是 WCF Service Library。让我们分别看一下,然后检查不同点。希望我们可以总结出一些在不同场景使用的结论。

    The WCF Service Application 模板

    你在Visual Studio的”添加新项目”对话框中创建WCF Service Application

    结果是这样子的:

    ATT00003

    它的结构和web应用程序很相似,这绝不是巧合。WCF服务的特殊性在于,你拥有服务契约(IService1.cs)、服务实现 (Service1.svc.cs)和web配置文件(web.config)。另外,还有服务托管文件(Service1.svc)。

    The WCF Service Library 模板

    和Service Application template一样,你可以再Visual Studio的” 添加新项目”对话框里创建WCF Service Library

    ATT00005

    它会生成一个树形结构如下所示:

    ATT00004

    和WCF Service Application工程类似,一个服务类库拥有服务契约和服务实现。有app.config文件,而不是web.config配置文件。也没有服务托管文件。

    关于app.config文件,MSDN的描述是这样:
    Visual Studio的配置是,当它使用 WCF 服务主机 (WcfSvcHost.exe)运行时将 App.config 文件识别为项目的配置文件,这是默认配置。

    区别?

    如果你对这两个文件做个对比,你会发现代码是一样的。甚至Service Application的web.config和Service Library的app.config也几乎一样(只看<system.serviceModel>节点)。另外,两个工程在编译时都会生成dll文件

    或许能区分的最好方法是运行每个工程

    首先,运行WCF Service Application,它会像其他web应用一样,给我们"Debugging Not Enabled"的提示:

    ATT00007 

    继续点击,你会看到默认的目录清单:

    ATT00008

    点击Service1.svc这个托管文件可以看到真正的服务:

    ATT00009

    正如我们所预料到的,服务应用程序的运行就像其他web应用一样,实际上,它默认是被ASP.NET部署服务器所托管的:

    ATT00010

    备注:有一点困惑的是,当运行WCF Service Application(非Service Library)时,我也看到了WCFSvcHost给出的提示

    ATT00011

    原来是在Service Library工程的选项中设置:

    ATT00012

    去掉勾选,当我运行了工程中的另外一个工程时,WcfSvcHost不会再出来了。

    最后的总结

    好了,现在我们运行了一下WCF Service Library,看看会发生什么。它不是被development server托管,而是WCF Test Client

    ATT00013

    为什么是这样子?因为Service Library 工程默认是没有服务托管文件或者web.config文件的。你可以通过增加这些文件来实现,但是这跟创建WCF Service Application没什么区别了,对吗?

    让我们回到最开始的问题,不管是选择服务应用还是类库,你仍然需要一个.svc的托管文件(你得为服务类库手动创建),你仍然需要把<system.serviceModel>配置从WCF工程中移到web或者app配置文件中,并且也需要codebehind文件或者dll文件

    我能想到唯一使用WCF Service Library的理由就是你想使用一些非IIS的工具进行WCF托管文件,比如windows service。

    本文翻译自

    http://www.itscodingtime.com/post/The-difference-between-Visual-Studios-WCF-Service-Application-and-WCF-Service-Library-project-templates.aspx

  • 相关阅读:
    Tomcat搭建Web 应用服务器
    前端代码的开发标准和规范
    全局关键字搜索:Element UI Table内容过滤jQuery过滤器fastLiveFilter插件BootstrapVue插件;
    Highchartsjs使用总结及实时动态刷新图
    百度统计微信网站绑定(vue项目)
    对Vuejs框架原理名词解读
    xml
    webservice
    类加载器
    引入spring时 XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation
  • 原文地址:https://www.cnblogs.com/zhaohuayang/p/2682449.html
Copyright © 2011-2022 走看看