在WCF中设计服务和操作

时间:2009-01-21 13:59:28

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

对于在WCF中建模服务和操作的一些指导,我将不胜感激。

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

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

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

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

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

我见过的大多数WCF教程和示例都倾向于使用相当琐碎的模型,通常是“计算器”服务,提供“添加”,“减去”等操作,这些操作都具有相同的绑定。

关于如何定义我的服务和操作的一些建议将是最受欢迎的,或者只是一些进一步阅读的链接,因为我找不到太多。

提前致谢, 将

1 个答案:

答案 0 :(得分:3)

我认为将您的合同分组在一起是否以异步方式被调用是一个坏主意。您仍应保留合理的合理逻辑分组。

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

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

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