【问题标题】:What design patterns are built into wcf itself?wcf 本身内置了哪些设计模式?
【发布时间】:2010-10-04 23:38:54
【问题描述】:

我对 wcf 开发中使用的设计模式很感兴趣。作为我正在寻找的示例: ChannelFactory 类用于创建客户端和服务之间的通道;这代表抽象工厂模式还是构建器模式的实现?还是两者的结合?我问这个问题的原因是,在设计模式的文档中,它的使用示例经常是人为的,特别是在设计模式如何组合在一起的领域。在我看来,查看一个正在生产中的现有软件的实际示例(例如 wcf,特别是因为人们可以使用 Reflector 对类及其对象模型进行详细检查)将大大进一步理解设计模式。

【问题讨论】:

    标签: .net wcf design-patterns


    【解决方案1】:

    Abstract Factory 建立在 Builder 模式之上。工厂不知道如何创建一种类型的对象,而是知道如何创建许多不同但相关的对象类型。 Builder 是一种模式的基本构建块,该模式将另一个对象的初始化封装在与对象或使用者代码不同的位置。 Abstract Factory 使用 Builder 来创建纯粹的制造,其唯一目的是创建对象。

    更多信息:

    • 一般的服务,尤其是 WCF,大量使用适配器样式的模式,例如代理。 WCF 服务创建了一个“代理”,它看起来像服务端点后面的类,但实际上是一种非常不同的类;代理类是您的代码(需要基本服务类)和位于类顶部的服务实现(维护依赖类不应该知道的通信通道、序列化/反序列化等)之间的“适配器”这才是真正的工作。

    • 正如您所发现的,任何必须处理通信通道的事情通常都需要一个工厂来初始化表示数据通道的对象。这些对象很昂贵,并且需要了解消费类不应该知道的实现细节。

    • 在幕后,服务调用代表了命令模式的使用。通过线路发送的消息封装了要调用的服务方法,该方法由 Web 服务器消化并转换为对附加到该服务端点的方法的调用。但是,看起来您实际上是在调用方法,而不是封装要执行的操作并调用泛型方法,您可能不认为它属于该系列。

    SOA 中也有很多异步和消息传递模式。

    【讨论】:

    • +1 看起来 WCF 确实使用命令模式,因为方法调用被封装到通过网络发送的消息中。客户的视角并没有真正完成这项工作。
    猜你喜欢
    • 2012-09-08
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2011-03-23
    相关资源
    最近更新 更多