0

我不确定最佳做法是什么。
我有一些大而复杂的物体(不是扁平的)。
在那个对象中,我有许多相关的对象——例如 Invoice 是主类,它的属性之一是 invoiceSupervisor——它自己的一个大类,称为 User。
用户也可以不是平面的并且具有部门属性 - 也是一个称为部门的对象。

例如我想创建新的发票。

第一种方式:
我可以向客户展示几个要填写的字段。其中一些是我需要填写可用值的组合。例如可用的 invoiceSupervisors。然后我可以将所有选择的值发送到服务器,在服务器上我可以创建新发票并将所有选择的值分配给该新发票。然后我将需要分配新的主管我将通过用户从组合框中在服务器上拾取的 id 提取所选用户。我可能会对用户进行一些验证,例如该用户是否适用于发票主管。然后我将 User 对象分配给 invoiceSupervisor。然后在填写所有属性后,我将保存新发票。

第二种方式:
一开始我可以打电话给服务器来获取新的发票。然后在客户端我可以填充所有选择的值,例如我可以调用服务器来获取新的用户对象,然后从组合框中填充它的 id 并将用户分配为 invoiceSupervisor。在客户端填写发票对象后,我可以将其发送到服务器,然后服务器将保存新发票。在保存服务器之前也可以运行一些验证。

那么最好的方法是什么 - 在客户端上创建对象并将其发送到服务器或从客户端收集所有值并使用这些值在服务器上创建一个新对象?

4

1 回答 1

1

考虑业务处理的复杂性。

您需要的是客户创建一个新发票。为此,客户端提供几个不同的输入参数,调用进程并获取响应。这是您的第一个场景。简单明了。

另一方面,第二种方法涉及到一个通信协议——给我这个,我给你一些作为回应,然后给我一些别的。这听起来不合理的复杂。您必须仔细检查在某些时候通信中断时会发生什么。是否应该涉及分布式事务?如果是,你真的需要这么复杂吗?

我会选择第一种情况。您不会不必要地使客户端和服务器之间的合同复杂化。

于 2012-11-22T10:58:43.367 回答