9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

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

  • 2007-10-01
  • 本文字数:967 字

    阅读完需:约 3 分钟

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

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2007-10-01 00:00599

评论

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

基于场景文字的多模态融合的图像分类

华为云开发者联盟

计算机视觉 图像分类 场景文本 图像视觉 多模态融合分析

稳定性领导者!阿里云获得信通院多项系统稳定性最高级认证

阿里巴巴云原生

阿里云 云原生 可观测 性能压测 获奖

考试试卷存储方案

小虾米

架构实战营

C语言总结_数组知识

DS小龙哥

4月月更

丰富多彩的管理端—主题功能介绍

中原银行

前端 中原银行 主题 管理端工程

如何写好B端产品的技术方案?

汤师爷

SaaS 架构设计 技术方案 B端产品

解析数仓OLAP函数:ROLLUP、CUBE、GROUPING SETS

华为云开发者联盟

Rollup GaussDB(DWS) cube GROUPING SETS OLAP函数

圈重点!一图读懂OpenHarmony技术日

OpenHarmony开发者

OpenHarmony 技术日

【建议收藏】整理Golang面试第二篇干货13问

利志分享

golang golang 面试

vue2.x版本中Object.defineProperty对象属性监听和关联

程序猿布欧

JavaScript Vue vuejs 数据响应式原理 Javascript框架

融云实践:实时音频混音在 Web 端的探索与实践

融云 RongCloud

分享一个JDK批量异步任务工具Completion Service,超好用

华为云开发者联盟

jdk 线程 异步 CompletionService 批量异步任务工具

TiDB 查询优化及调优系列(二)TiDB 查询计划简介

PingCAP

得物技术浅谈深入浅出的Redis分布式锁

得物技术

redis 分布式 分布式锁 CAP 一致性

Go 语言入门很简单:net/url 包

宇宙之一粟

url Go 语言 4月月更

把pinpoint编译环境做成Docker镜像文件

程序员欣宸

4月月更

阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地

阿里云大数据AI技术

深度学习 nlp 开源技术

一文掌握 Docker 技术体系

博文视点Broadview

IOS技术分享| ARCallPlus 开源项目(二)

anyRTC开发者

ios 开源 音视频 移动开发 呼叫邀请

为什么 Rust 是 Stack Overflow 最受欢迎语言?

非凸科技

c++ rust 性能 Stack Overflow 内存安全

资讯|WebRTC M99 更新

网易云信

WebRTC

DDIA 读书笔记(一):可靠、可扩展、可维护

木鸟杂记

数据库 分布式系统 数据系统 DDIA 设计数据密集型应用

【直播回顾】OpenHarmony知识赋能第五期第一课——精益开源

OpenHarmony开发者

OpenHarmony 成长计划

STM32+华为云IOT制作酒驾监控系统:上车就监控

华为云开发者联盟

mqtt stm32 华为云IoT 酒驾 酒驾监控系统

帮助文档——助客户快速了解您的产品如何使用

小炮

帮助文档

活动报名|OpenHarmony 战“码”先锋,PR征集令

OpenHarmony开发者

OpenHarmony

毕业总结

孙强

#架构实战营

Spring Data MongoDB 使用示例

Java mongodb 4月月更

戊申篇「股權去中心化」《「內元宇宙」聯載》

因田木

去中心化金融 商業因果

OpenHarmony技术日全面解读3.1 Release版本 系统基础能力再升级

OpenHarmony开发者

OpenHarmony OpenHarmony 3.1 Release

如何完成与龙蜥操作系统的兼容验证,看这里! | 一周动态

OpenAnolis小助手

操作系统 龙蜥社区 一周动态

  • 扫码添加小助手
    领取最新资料包
David Pallmann谈WCF服务设计使用技巧_.NET_Hartmut Wilms_InfoQ精选文章