【问题标题】:How to encapsulate code for WCF services without using a base class?如何在不使用基类的情况下封装 WCF 服务的代码?
【发布时间】:2014-06-29 17:52:58
【问题描述】:

我们所有的服务都将 ServiceCallContext 对象作为参数。然后服务创建一个代理,并根据 ServiceCallContext 告诉代理使用什么连接字符串。

换句话说,我们的一些客户拥有自己的数据库,因此服务调用必须将代理指向他们的数据库。

我想获取查看 ServiceCallContext 并选择正确连接并将其放入基础服务类的代码。我的团队负责人不喜欢这个想法,因为对于服务,他认为这将是“隐藏”行为,而且这将是一件坏事。他建议可能有更好的方法通过某种 WCF 扩展来完成同样的事情。

我真的不在乎我们如何实现代码,只要我可以重用它,因为我认为在我创建的每个服务中重写它绝对是愚蠢的。我开始在 PluralSight 上查看一些 WCF 视频,看起来它可以做很多很棒的事情,但不幸的是我不太确定从哪里开始。谁能给我一些指导,了解 WCF 是否可以完成我正在尝试做的事情,如果可以,我在寻找 WCF 的哪些特定功能?

【问题讨论】:

  • 我认为您的团队负责人在扩展方面有所了解。 WCF 设计得相当好,并允许自定义行为;拦截器等等。所有这些也促进了代码重用。在创建一个有用性可能会限制您的基类之前,需要注意 c# 单类继承限制。 amazon.com/Programming-WCF-Services-Mastering-AppFabric-ebook/…
  • @MickyDuncan 谢谢,是的,我同意。 :)

标签: c# web-services wcf extensibility


【解决方案1】:

您需要的功能是custom interceptor

这允许您告诉 WCF 堆栈查看传入消息并根据它们执行一些操作。如果您将拦截器包装到它自己的程序集中,那么您可以从多个服务中引用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多