1

我有一个一般的设计问题。

我们有一个相当大的数据模型来表示一个临床对象,该对象本身在层次结构中有 200 多个子属性。

我们有一个 SetObject 操作和一个 GetObject 操作。我的问题是,在最佳实践方面,在两个操作中使用单个数据模型或为每个操作使用不同的数据模型是否有意义?因为 Get 操作将返回比 Set 所需的更多的详细信息。

我的意思的一个例子:数据模型有说 ProviderId 和 ProviderName 属性,在 Get 操作中,ProviderId 和 ProviderName 都需要返回。但是,在 Set 操作中,只需要 ProviderId,并且 ProviderName 被服务忽略,因为系统已经有了该信息。在这种情况下,如果 Get 和 Set 操作使用相同的数据模型,即使 Set 操作也会暴露 ProviderName,这是否会使消费开发人员感到困惑?

4

2 回答 2

1

它会说:这取决于:-)

不认真。您如何编辑/处理对象?我假设您的软件正在调用 WCF 服务来检索对象,使用 ID 或搜索词或其他内容。

因此,您可以取回具有 200 多个属性的对象。你是如何处理它的,你通常会改变多少?

如果您通常只更改少数属性 - 那么SetProperty在服务上使用一个通用方法来获取对象 ID、属性名称和新值可能是有意义的。但想想这是如何工作的:

  • 服务器端代码将获取对象的 ID
  • 它将从数据库中加载对象
  • 然后它将单个属性设置为新值
  • 它将对象保存回数据库

如果更新四个属性会怎样?您将经历其中的 4 个周期。或者:您可以扩展该SetProperty方法以包含(属性名称,值)对的字典。

所以我想这取决于您在任何给定时间更改了这 200 个属性中的多少?如果您更改 10%、20% 的这些属性 - 将整个修改后的对象传回会不会更容易?

于 2010-03-12T16:57:35.807 回答
0

这看起来像是将您的临床对象用作规范模型并提供宁静风格的服务接口的不错选择。然后,您可以提供不同的视图或数据对象的表示,仅包含基于使用模型所需的字段。您的动词(get、set)将成为 http 标准 Get、Put。

有许多开源的 Rest 框架可用于使这更容易上手。Restlet 是我成功使用的一种。

于 2010-03-19T20:17:44.467 回答