博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Effective C#》读书笔记——条目28:提供粗粒度的互联网API<使用C#表达设计>
阅读量:5900 次
发布时间:2019-06-19

本文共 711 字,大约阅读时间需要 2 分钟。

在使用Web服务、.NET远程调用或给予Azure的程序时,最耗时的就是与远程服务器之间传输过程。如果只是简单的将本地API封装一下,就变成远程使用的API,这样做功能上不会有问题,但是效率低下。API的粒度越细所花费在等待数据返回的额外事件也就越多。

  在创建基于Web的服务时,客户端和服务器的通信过程应该向发送传真一样:客户端可以独立、不需要与服务器取得联系的情况系下工作一段时间。然后在一次通信所需要的所有数据就位之后,再让客户端一次性把所有信息发送给服务器。服务器端也应该如此:将数据从服务器发送给客户端时,应该一次性的发送所有内容,让客户端能完成当前所有的任务。

  现在让我们做一个假设:该系统仅有一个服务端,还有超过100万的客户。假设每个客户在去年一年中平均进行十五次订购。每个电话销售都在订购过程中操作一个客户端,且在接听电话的过程中需要查询或创建客户。我们该如何设计出一个最有效的客户端和服务器端传递的一系列对象呢?在这里一次性的将每个客户和每个订单发给客户端是不现实的:100万客户和1500万的订单记录对应的数据实在是太多了。

  设计与远端计算机通信的Web服务时,我们希望同时降低通信的频率以及每次通信时传递的数据量。这两个目标是鱼和熊掌不可兼得的,我们必须在这二者之间取得平衡。我们应该进尽量不要走向两个极端,但可适当选择较少通信次数,并尽量一次传输更多的数据。

 

本文转自gyzhao博客园博客,原文链接:http://www.cnblogs.com/IPrograming/archive/2013/03/31/EffectiveCSharp_28.html
,如需转载请自行联系原作者
你可能感兴趣的文章
4.一对多关联映射
查看>>
手把手教你做出好看的文本输入框
查看>>
zabbix 3.2.7 (源码包)安装部署
查看>>
看懂此文,不再困惑于 JS 中的事件设计
查看>>
vsCode 快捷键、插件
查看>>
vue-validator(vue验证器)
查看>>
jQuery Ajax MVC 下拉框联动
查看>>
每天一个linux命令(21):chgrp,chown,chmod
查看>>
html
查看>>
常见SQL Server导入导出数据的几个工具
查看>>
c#创建文件夹
查看>>
Hibernate事务代码规范写法
查看>>
网络最大流问题算法小结 [转]
查看>>
面试之Java知识整理
查看>>
iOS推送消息报错误“Domain=NSCocoaErrorDomain Code=3000”的可能问题
查看>>
Android开发指南(30) —— Multimedia and Camera
查看>>
kvm-1
查看>>
hdu1045 Fire Net---二进制枚举子集
查看>>
drupal网站邮件发送功能的实现
查看>>
leetcode 64. Minimum Path Sum
查看>>