BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

David Pallmann谈WCF服务设计使用技巧

| 作者 Hartmut Wilms 关注 0 他的粉丝 ,译者 霍泰稳 关注 1 他的粉丝 发布于 2007年10月2日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

David Pallmann近期发布了关于WCF使用技巧的系列文章。这些技巧是按照设计模式来进行组织的,而这些设计模式则是根据开发WCF Provider和Consumer的方面来分组。

系列文章讨论了以下方面:

在服务接口方面,Dave建议说单个服务接口的所有操作应该共享一个共同的主题,应该是粗粒度和消息异步的。服务的元数据,至少是WSDL和XSD,应该在一个服务目录或者服务注册中心(Service Registry)里注册。文档或者数据结构应该满足消费者的需要,而不是展现服务的内部结构。这一建议和Pat Helland的“内外数据的比较”一文中的说法如出一辙。

让服务接口和服务实现彼此分开,明确你的实现选择,尤其是实例化的模式。避免有状态的服务,要写线程安全的代码。

根据需要选择你的服务宿主(Host),而不是根据自己的喜好或者自己熟悉的模型。在任何情况下都不要依赖默认设置,通常情况下它们不适合实际的场景:

学习适合的知识以使WCF为你所用。不要假设默认的就是最好的,在很多情况下并非如此。[……]WCF中有些默认的设置非常棒,但有些不是。它们中有一些虽然说是具有开箱即用的安全性能,但却不能让你做出有用的工作。

尽管每一个SOA都应该由业务需要驱动,但有时为了适应那些非功能性需求,你需要选择正确的基础架构。基础服务的主题是松耦合和服务的探索结果。下面是基础架构或者技术服务的一些事例:

  • 服务目录
  • 消息路由
  • 消息转换
  • 规则服务
  • 工作量宿主
  • 整合适配器
  • 活动监视器

记住通过配置服务来发布元数据并报告状态信息,来启用WCF服务的检测功能(Instrumentation)。前者通过发布一个WS- MetadataExchange端点来完成,后者通过在服务配置里启用Windows Management Instrumentation(WMI)完成。

最后David指出你不应该依赖业已创建好的代理客户端。默认生成的没有实现错误处理,而这对健壮的客户端代码来说是必须的。

这些技巧显然不是全部,但无疑提出了很多有价值的参考,起到抛砖引玉的作用,也提供了一个WCF服务开发的最小清单。看上去最重要的地方是服务配置和服务探索结果。默认情况下,没有探索结果服务,而且元数据发布也是不起作用的。默认的配置对实际环境是不合适的,选用它们的原因不过是“以‘默认安全的方式’提供的名义”。

查看英文原文:David Pallmann’s WCF Tips

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT