SOA数据合同模式。我确信我使用的框架引入了冗余,有人关心启发我吗?

时间:2010-09-28 21:51:56

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

我将从大多数人似乎采取的方式开始,在这里....

所以我...... 不,那是伤口。我会重新开始(因为没有直截了当但可能会失去一些积分)

对,

我继承了一个框架,它使用WCF来提供一些操作和数据契约。

对某些人来说这可能是令人厌烦的,但我还没有对SOA或WCF做足够的阅读以获取有效模式(或最佳实践......)的知识,因此,对我的团队并没有真正的加权意见这个主题,到目前为止。

作为我正在使用的框架中的一个例子,有一堆用户模型。

具体来说,我们有以下模型(数据合同):

  • users_Loaded
  • users_Modify
  • users_Create

对于所有意图和目的,这些数据合同完全相同 - 除了它们的“类型”之外,它们具有相同的成员和属性等,这是我的第一个问题。

利用数据合同的操作具有与您可能希望使用

执行某些操作的数据协定相匹配的参数

因此利用数据合同的操作:

  • CreateUser(users_Create createdUser,...,...)
  • ModifyUser(users_Modify modifyUser,...,...)
  • GetUser(out users_Load loadedUser,..,...)(参数列表最左侧的参数可以启动!?)

也许意图是将模型和操作彼此描绘出来,但根据我的经验,方法及其参数列表通常可以很好地指示我们需要做什么。

当然一个数据合同就足够了,甚至可能只有一个操作(带有操作类型参数)

我错过了这一点。你为什么要按照我的描述去做?

感谢。

1 个答案:

答案 0 :(得分:1)

这听起来像以前的开发人员要么试图实现一些卑鄙的命令模式,要么他们没有理解WCF。

长回答简短,是的,从你所说的,你应该很好地将这些组合成一个UserDto类,它是所有三个操作的DataContract。就其本身而言,svcutil应该可以在客户端生成一个适用于所有三种OperationContract方法的DataContract类(或者,因为您似乎控制了此服务的两端,只需使用包含DTO的共享程序集)客户端和服务器)。