代码之家  ›  专栏  ›  技术社区  ›  Steve Ellinger

wcf本身内置了哪些设计模式?

  •  0
  • Steve Ellinger  · 技术社区  · 14 年前

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

    1 回复  |  直到 14 年前
        1
  •  4
  •   KeithS    14 年前

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

    更重要的是:

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

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

    异步和消息传递模式在SOA中也大量存在。