QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

书籍推荐:Windows Communication Foundation 本质论

  • 2009-02-08
  • 本文字数:1998 字

    阅读完需:约 7 分钟

随着 WCF 3.5 的发布,微软修改了它的 API、Web 服务基础架构以及在 Visual Studio 2008 下的工具。Addison Wesley 出版了《 Windows Communication Foundation 本质论》一书,作者为 Steve Resnick、Richard Crane 和 Chris Bowen,旨在为开发人员提供一个紧密依赖于样例代码的路线图。

下面是作者简短的问题解答,你也可以向作者提出问题或发表评论:

Q:从 2.0 发展到 3.5,WCF 的最大区别是什么?开发人员应该了解它们中的哪些内容?

我将这些区别分为三类。第一类是对 REST 风格编程的支持,这种风格对开发人员来说比 SOAP 更加友好。在 3.5 中,WCF 包含了 URI 模版,负责映射 Web 地址和 HTTP 动词,这是为了实现 JSON 和 RSS 格式,以及实现二进制流。第二类则是 WCF 与.NET 中的 WF 的集成。这一功能非常强大,因为 WCF 和 WF 实际上就是一块硬币的两面:WCF 是服务的接口和宿主环境,而 WF 则实现它的处理逻辑。WCF 3.5 的第三个明显变化实际上是在 Visual Studio 2008 中,它提供了针对 WCF 的设计与调试工具。包含了用途广泛的 WCF 和 WF 模版,以及一些现有的工具,例如使用 WcfSvcHost 和 WCFTestClient 可以简化测试。

Q:在 WCF 3.5 中,你最感兴趣的新特性是什么?为什么?

我想,WCF 3.5 支持 REST 协议的方式实在是太酷了。为了弄清楚概念,我们可以看看 SOAP 和 REST 之间的显著区别。SOAP 主要关注的是动作(动词),而 REST 则面向的是实体(名词)。由于 WCF 采用的是“行为”的架构,因此在这两者之间切换时,并不需要做大的修改。我发现一个神奇之处就是,你可以在两个架构模型(REST vs. SOAP)之间切换,而应用程序中 90% 的代码都是完全相同的。

Q:在设计和实现服务时,你对架构师和开发人员有什么指导意见?

正如你需要对你的应用程序所支持的特性分优先级一样,你也应该对基础架构进行优先级的划分。例如,判断哪一个是最重要的……性能,可伸缩性,可管理性,互操作性,安全,还是上市时间?一旦你划定了优先级,再来看你的选择。对于每一项,都要选择最简单的选项以符合你的需求。如果你正在寻求标准的基于 http 的访问,以及自定义(用户 ID/ 密码)的授权机制,就可以使用 basicHttpBinding,并采用 IIS 作为宿主。但如果你需要在一个内部网络中获得最好的性能,可以考虑使用 Windows 激活服务(在 Windows 2008 中)作为宿主,并选择 netTcpBinding。此外,.NET 3.5 提供了很棒的诊断工具。学习使用服务跟踪工具可以节省你的时间。

Q:为什么开发人员要基于非 SOAP 的服务使用 WCF,例如 JSON 和 AJAX?

WCF 为服务提供了很好的支持,不管服务是通过 SOAP 还是其他协议公开。类似线程、实例化、审计、安全与托管等重要特性都不需要考虑协议。在 3.5 之前,通过 AJAX 应用程序访问一个 WCF 服务是相当困难的。但随着新版本提供的支持,同时又提供了大量可用的示例,实现就变得非常容易了。显然,简单的原因一部分是因为协议,而 WCF 提供的其他特性(线程、安全等)又为我们节省了时间。

Q:在用于跟踪或调试 WCF 服务的工具中,你是否有自己喜爱的工具与社区分享?

首先,在 WCF 中有一个内置的端对端的跟踪工具和日志记录工具,跟踪消息发送与接收的处理过程都会非常简单。还有一个查看器,可以展示过程中的每一步,甚至可以在检测到失败时用红色来标注相关的代码。服务配置编辑器(Service Configuration Editor)使得跟踪选项可以方便的启用或关闭。其次,你还可以使用性能计数器(performance counters)操作服务,这样就能够监视应用程序的关键特性。这不仅对于开发很有帮助,也十分有利于产品环境。最后,你还可以使用 WCF Behaviors 创建自己的审计工具与日志工具。你可以将日志记录到数据库,队列,或其他最合适的地方。

Q:什么问题是你最常见的?你可否预先给出一个回答呢?

每个人都会问到性能。当然这是一个复杂的话题,因为它要依赖于需要的特性而定!例如,如果你需要能够互操作的消息层的安全,你可以使用 WS- Security、Text 编码和 HTTP 以应对广泛的要求。它可以使用 wsHttpBinding 进行事先配置。另一方面,如果你要控制客户端、服务和网络,则可以使用二进制编码,并使用 TCP 协议。它可以使用 netTcpBinding 进行预先配置,并能够提高 5 倍的性能。而且这不需要修改任何代码。实例化同样如此。你是否需要让你的类是单线程的?或者允许 WCF 能够在同一时间有多个实例?处理后者的更好方式是并发。WCF 通过 InstanceContext 设置支持每种模型。而且,WCF 提供了足够的灵活性以调整性能来符合你的需求。这实在是太酷了!

很高兴,InfoQ 能够为我们的读者提供《Windows Communication Foundation 本质论》一书的第13 章

查看英文原文: Book Published: Essential Windows Communication Foundation


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2009-02-08 18:003694
用户头像

发布了 109 篇内容, 共 42.5 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

这些大咖想和你聊聊什么是行业期待的多模态学习

小红书技术REDtech

算法 多模态

教你如何在优麒麟上调节外接显示器,如亮度、色彩等方面!

优麒麟

Linux 开源 经验分享 优麒麟 显示器

CVE-2022-22965 漏洞分析,安全问题早发现

华为云开发者联盟

Java spring 漏洞 CVE JavaBean

云原生边缘计算KubeEdge在智慧停车中的实践

华为云原生团队

边缘计算 边缘技术 边缘云

直播预告 | PolarDB-X 动手实践系列——用 PolarDB-X 搭建一个高可用系统

阿里云数据库开源

MySQL 数据库 阿里云 开源 PolarDB-X

元宇宙背景下——内容生产传播商业价值分析2022

易观分析

元宇宙 内容生产传播

花14天梳理了3月份各大厂问得最多的50道Java基础面试题

北游学Java

Java 面试

选择it资产管理软件要注意什么?

低代码小观

资产管理 企业管理系统 低代码开发 #资产追踪 客户关系管理系统

基于 EventBridge 构建数据库应用集成

阿里巴巴云原生

Linux 命令行小技巧分享第二弹--超简单,超实用!

优麒麟

Linux 开源 命令行终端 实用技巧 优麒麟

如何使用 Serverless Devs 部署静态网站到函数计算

阿里巴巴云原生

如何通过 Node 上传小程序代码,不会就看看吧

CRMEB

【linux运维】linux运维常用工具有哪些?

行云管家

云计算 运维 IT运维 云管理

基于数据技术全域流量协同优化是银行零售业务关键突破点

易观分析

银行 数据技术

PlatoFarm生态NFT总量恒定,激励机制让Dao成员持续贡献

西柚子

DIVE大会上线了!参与活动还有精美周边领取哦!

InfoQ写作社区官方

热门活动 DIVE

平安普惠湖北分公司:疫情后来式,复工进行时

科技新消息

【首期社区读书会】从《OceanBase数据库系统概念》到3.1.3 社区新版本,一起聊聊 OceanBase 那些事

OceanBase 数据库

OceanBase 社区版

独家下载!突破开源Redis,华为云十年自研内核修炼之路《企业级Redis技术与应用解读》重磅发布丨云享·书库

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 开源Redis 企业级Redis

优秀的FAQ示例及FAQ页面制作技巧

小炮

FAQ

移动数字化平台原来可以这样帮企业打造协同生态链!

BeeWorks

后端开发【一大波干货知识】网络通信模型和网络IO管理

Linux服务器开发

后端开发 Linux服务器开发 C++后台开发 网络io 网络通信

阿里巴巴云原生混部系统 Koordinator 正式开源

阿里巴巴云原生

解构华为云HE2E项目中的容器技术应用

华为云开发者联盟

容器 镜像 华为云 devcloud HE2E

【二级等保】二级等保安全物理环境要求有哪些?

行云管家

网络安全 数据安全 等保 等级保护

解决混合云数据库一站式备份若干问题 腾讯云数据库DBS正式上线

科技热闻

java高级用法之:JNA中的Memory和Pointer

程序那些事

Java Netty 程序那些事 4月月更

TASKCTL服务端字符界面的应用系统安装

敏捷调度TASKCTL

kettle 元数据 ETL 调度任务 大数据运维

投稿开奖丨轻量应用服务器征文活动(3月)奖励公布

阿里云弹性计算

轻量应用 征文投稿开奖

知名数字化解决方案厂商新华三加入龙蜥社区,已完成硬件兼容性测试

OpenAnolis小助手

开源社区 兼容性测试 龙蜥社区 CLA 新华三

构建测试的体系化思维(高级篇)

BY林子

质量赋能 测试体系

书籍推荐:Windows Communication Foundation本质论_SOA_James Vastbinder_InfoQ精选文章