WCF服务合同设计。用例控制器是否合适?

时间:2010-08-31 12:05:14

标签: wcf controller soa use-case

首先,如果之前已经问过这个问题,我会道歉,但我找不到任何可以直接回答此问题的内容。

这是我的问题。我继承了一个设计灵活的产品,几乎每个组合框和(silverlight)形式的文本块都需要服务请求。有些屏幕只需要填充15个单独的请求!

现在我已经在很多场合使用过WCF Web服务,并且将服务合同拆分成小型离散操作从来没有受到太大影响,但遗憾的是,这个项目并非如此。所以它让我想知道......

没有计划在我们自己的墙外公开服务。 没有计划为此特定服务编写另一个客户端。那我不能在服务端写一个“用例控制器”吗?因此,在“创建投诉”屏幕中,而不是像......这样的请求列表。

  1. GetComplaintTypes
  2. GetCustomerTypes
  3. GetAreaDetails
  4. 依旧......
  5. 填充表单我只有一个名为'GetCreateComplaintData'的操作契约。当只有一个客户端必须聚合并将所有这些请求同步到有意义的事物时,以如此粒度暴露这么多操作似乎很疯狂。为什么不首先揭露有意义的东西?

    更重要的是,如果您不打算将服务API暴露给第三方,这不是比在数据库中公开CRUD操作更好的策略吗?

    感谢所有帮助和意见。 提前谢谢。

5 个答案:

答案 0 :(得分:2)

我认为你的想法很好。

作为一种中间方式,您可能还会考虑将多个WCF请求合并为一个的方法。这种方法以及如何编程对over here进行了描述。

答案 1 :(得分:1)

我认为您首先必须确定性能问题的确切位置。 IIS无法处理您发送给它的请求数量,这是真的吗?或者每个单独的请求花费的时间太长,因为数据库无法提供您的数据,并且看起来就像IIS因此无法处理压力。

我不确定以下两种情况之间是否存在真正的区别:

  • 每个执行数据库选择语句的小请求。
  • 一个执行大量数据库选择语句的大型请求。

当然我不确定你的具体情况,但在性能方面,事先明智地知道你为什么要进行优化。

答案 2 :(得分:1)

业务逻辑顶部的WCF服务应该暴露高级业务操作的外观而不是低级CRUD操作。 CRUD操作服务用于公开数据(如WCF数据服务)。

答案 3 :(得分:1)

以下是我对此的看法。答案一如既往,取决于它。

以下是如何使用WCF构建SOA的一些实际示例。

我建议您阅读Thomas Erl和Roger Sessions撰写的文章,这将使您能够掌握SOA的全部内容。

Building a SOA

SOA Design Pattern

Achieving integrity in a SOA

Why your SOA should be like a VW Beetle

SOA explained for your boss

答案 4 :(得分:0)

使用带有WCF的CRUD模式从数据库公开数据的最简单方法是使用WCF数据服务。实际上,您在服务器端开发的内容实际上并不比您想要公开的模型更多,如果您使用它来访问数据库,也可以从EF模型自动推断它。

巴勃罗。