4

In a scenario where you have to perform multiple operations at the service end, on a form submission, e.g. inserting data into multiple tables, is it better to make a single service call having a large datacontract or multiple service calls with multiple small datacontracts?

To elaborate my question further, with an example, let's say we have a form for adding a "conference". That form allows users to fill information about the conference e.g. ConferenceName, ConferenceDate, ...., Presenters, Sponsors, etc. Since some of the information would be inserted in the conference table, some in the ConferencePresenters table and some in the ConferenceSponsors table. So would it be better to send all the data to the webservice using a single call with a large datacontract or to have separate service calls with multiple datacontracts?

Which of the two is more expensive - having a large datacontract or multiple service calls?

4

3 回答 3

4

很难更好地量化。但是你可以考虑带宽、原子性、服务组织等。

对于带宽,一个大块的请求在网络上会更快,因为每个请求都会增加时间。另外,客户端不会在他们的孩子之前等待 n*latency 来创建各种实体(因为没有更好的词)。

我假设您有一个支持您的服务的数据库,它可以让您在事务中执行此操作。如果您选择使用聊天服务,您将自行管理回滚等。

另一个需要考虑的重要事项是您的服务 API 是如何设计的。矮胖的操作有意义吗?如果您发现您的块随着可选操作而增长,您可以将它们排除在外。如果您发现 2 个 api 总是被一起调用并且组合起来有意义,请将它们组合起来。

因此,您可能会发现,对于上述操作(与赞助商创建会议等),拥有大型数据合约的性能更高,但您必须确保性能提升值得拥有这样的折衷大的,特定的 api 调用。

于 2012-06-09T19:43:12.257 回答
1

你也可以从架构的角度来看待这个问题。

您有一项服务:

  • 服务应该代表具有业务意义的事物。
  • 服务不应该泄露服务内部实现的信息,包括数据库的表结构

从这个角度来看,你应该有一个单一的操作。

于 2012-06-11T21:50:11.733 回答
0

每次都厚实,或者尽可能厚实。经验法则使对话尽可能大,它减少了谷壳。

于 2016-07-06T08:58:23.943 回答