Effective C# Item34:创建大粒度的Web API

    当我们使用Web Service或者.NET Remoting时,需要谨记当在本地和远程机器之间传输对象时,传输过程的成本是很大的,对于某些只是简单重现包装本地接口的操作,我们不应该将它们用作远程API,这么做并不会出错,只是效率比较低。

    我们的Web接口应该主要在客户机和服务器之间传输序列化文档或者对象集合。客户机首先进行逻辑处理,准备数据,这个过程是不需要和服务器进行通信的,当客户端把数据准备好后,再将整个文档发送给服务器端;服务器端的处理也是一样的,当服务器把文档中的所有内容处理完毕后,再将其返回给客户端。

    对于一些本地操作时间很长、更新不频繁的数据来说,我们可以使用Visitor模式,首先每个客户端都从服务器端获取所有必要的数据,同时将自己的信息保存在服务器中,然后客户端可以一直在本地进行操作,当有数据上传到服务器时,服务器对更新后的数据进行分发,通知所有相关的客户机,数据已更新。这样一方面可以提高客户端的工作效率,不用频繁的和服务器进行通信,另一方面,可以保证客户在处理的数据是当前服务器中的最新数据。

    我们希望客户端和服务器端之间通信的频率和负荷都能降到最低,但是这两个目标是矛盾的,我们需要在两者之间寻找平衡,平衡的结果是应该接近两个极限的中间,而不是偏向任何一方。

posted @ 2010-01-23 16:20  李潘  阅读(394)  评论(0编辑  收藏  举报