【问题标题】:Designing services and operations in WCF在 WCF 中设计服务和操作
【发布时间】:2010-10-02 16:47:25
【问题描述】:

我希望获得有关 WCF 中建模服务和操作的一些指导。

我有一系列业务领域,每个领域都有我希望能够通过 WCF 使用的定制方法。我猜 OO 视图应该是这样的:

interface IBusinessDomain1
{
    MyClass1 Method1(...)
    MyClass2 Method2(...)
}

interface IBusinessDomain2
{
    MyClass3 Method3(...)
    MyClass4 Method4(...)
}

我的自然倾向是让每个接口成为服务,每个方法成为操作,我遇到的问题是各个域中的操作很可能需要完全不同的绑定配置。即 Method1 可能需要同步,Method2 可能需要异步。

在为 WCF 定义服务和操作时,更好的方法是考虑数据类型和需要发送数据的方式?也许所有业务领域的方法都需要以特定方式工作并在一个服务中使用?我想知道其他人是如何处理类似情况的?

我见过的大多数 WCF 教程和示例都倾向于使用相当简单的模型,通常是提供“加法”、“减法”等操作的“计算器”服务,它们都共享相同的绑定。

如果我找不到太多关于如何定义我的服务和操作的建议,或者只是一些进一步阅读的链接,我将不胜感激。

提前致谢, 会

【问题讨论】:

    标签: c# .net wcf design-patterns soa


    【解决方案1】:

    我认为将你的合约组合在一起以确定它们是否以异步方式调用是一个坏主意。您仍然应该为您的合同保留有意义的逻辑分组。

    您还需要详细说明您可以将哪些不同的绑定配置应用于您的合同。如果您需要在客户端上异步调用合约上的方法,那么这不是服务必须关心的事情,因为客户端可以选择生成支持异步操作的合约(您将获得 Begin* 和 End * 通道工厂将为您生成的合约上的方法)。

    但是,如果您正在执行诸如让服务返回一个令牌,客户端将其传递回服务以检查状态的操作,您可能需要考虑一个回调接口,因为它会使您的设计更加简洁。

    如果不同的绑定配置与端点的更改有关(例如,传输通道),那么您可能会考虑为不同的端点使用不同的合同,但我没有得到您正在寻找的印象在这里。

    【讨论】:

    • 感谢 Casper,这是一个有用的答案,给了我一些要阅读的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多