【翻译】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

转载于:https://www.cnblogs.com/zhaohuayang/archive/2012/09/12/2682449.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值