WEB开发网
开发学院软件开发C语言 Effective C# 原则34:创建大容量的Web API 阅读

Effective C# 原则34:创建大容量的Web API

 2009-02-19 08:15:58 来源:WEB开发网   
核心提示: 这个客户的例子清楚简单的演示了这个问题:在服务器与客户端之间一来一回的传输整个对象,但为了写出高效的代码,Effective C# 原则34:创建大容量的Web API(3),你应该扩展这个简单的例子,应该让它包含正确的相关对象集合,或者修改一个客户的账号信息,明显的选择就是取回一个客户,

这个客户的例子清楚简单的演示了这个问题:在服务器与客户端之间一来一回的传输整个对象。但为了写出高效的代码,你应该扩展这个简单的例子,应该让它包含正确的相关对象集合。在远程请求中,使用对象的单个属性就是使用太小的粒子(译注:这里的粒子就是指一次交互时所包含的信息量)。但,对于每次在服务器与客户之间传输来说,一个客户实例可能不是大小完全正确的粒子。

让我们来再扩展一下这个例子,让它更接近现实设计中会遇到的一些问题,我们再对系统做一些假设。这个软件主要支持一个拥有1百万客户的在线卖主。假设每个用户有一个订购房子的主要目录,平均一点,去年有15个订单。

每个电话接线员使用一台机器轮班操作,而且不管电话订单者是否回答电话,他们都要查找或者创建这条订单记录。你的设计任务是决定大多数在客户和服务器之间传输的高效对象集合。

你一开始可能消除一些显而易见的选择,例如取回每一个客户以及每次的订单信息是应该明确禁止的:1百万客户以及15百万(1千5百万)订单记录显然是太大了而不应该反回到做一个客户那里去。这样很容易在另一个用户上遇到瓶颈问题。在每次可能要更新数据时,都会给服务器施加轰炸式打击,你要发送一个包含15百万对象的请求。当然,这只是一次事务,但它确实太低效了。

相反,考虑如何可以最好的取回一个对象的集合,你可以创建一个好的数据集合代理,处理一些在后来几分钟一定会使用的对象。一个接线员回复一个电话,而且可能对某个客户有兴趣。在电话交谈的过程中,接线员可能添加或者移除订单,修改订单,或者修改一个客户的账号信息。明显的选择就是取回一个客户,以及这个用户的所有订单。服务器上的方法可能会是这样的:

上一页  1 2 3 4  下一页

Tags:Effective 原则 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接