在客户端或服务器端更改对象

时间:2012-11-22 10:04:50

标签: javascript asp.net serialization client-server

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

例如,我想创建新的发票。

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

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

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

1 个答案:

答案 0 :(得分:1)

考虑业务处理的复杂性。

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

另一方面,第二种方法涉及通信协议 - 给我这个,我给你一些作为回应,然后再给我一些东西。这听起来非常复杂。您必须仔细检查通信在某些时候中断时会发生什么。是否应涉及分布式交易?如果是的话,你真的需要这么复杂吗?

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