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

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

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

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

《Effective C#》读书笔记——条目28:提供粗粒度的互联网API使用C#表达设计相关推荐

  1. Effective C++读书笔记 摘自 pandawuwyj的专栏

    Effective C++读书笔记(0)       Start   声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节.   std::size_t numDigits(i ...

  2. Effective STL 读书笔记

    Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...

  3. more effective c++和effective c++读书笔记

    转载自http://bellgrade.blog.163.com/blog/static/83155959200863113228254/,方便日后自己查阅, More Effective C++读书 ...

  4. Effective Java 读书笔记(七):通用程序设计

    Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...

  5. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  6. 读书笔记: 博弈论导论 - 14 - 不完整信息的静态博弈 机制设计

    读书笔记: 博弈论导论 - 14 - 不完整信息的静态博弈 机制设计 机制设计(Mechanism Design) 本文是Game Theory An Introduction (by Steven ...

  7. Effective Java读书笔记完结啦

    Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...

  8. Effective Java 读书笔记(一)

    前言: 开个新的坑位,<effective java>的读书笔记,之后有时间会陆陆续续的更新,读这本书真的感触满多,item01和item02就已经在公司的项目代码中看到过了.今天这篇主要 ...

  9. 【Effection C++】读书笔记 条款28:避免返回handles指向对象内部成分

    [Effective C++]读书笔记 Part5 实现 条款28:避免返回handles指向对象内部成分 避免返回handles(包括references,指针,迭代器)指向对象内部.遵守这个条款可 ...

最新文章

  1. linux内核开机显示企鹅logo,批改linux内核kernel开机logo(小企鹅)
  2. 网站服务器的ip地址会变吗,网站的服务器变了 IP地址变吗
  3. linux mysql 命令 大全
  4. Normal2Height工具已经完成
  5. CAN2.0的标准帧和扩展帧格式
  6. leetcode400. 第 N 位数字
  7. php5 相关软件下载
  8. 有限元基础及ANSYS应用 - 第6节 - 自重作用下均匀截面直杆的ANSYS分析
  9. 计算机设备与驱动器空白图标,这个方法帮你删掉win10设备和驱动器里无效图标...
  10. k线符号图解大全_k线图解大全,带你了解k线形态!
  11. 网络安全面试常见问题
  12. echarts 北京公交线路-线路效应
  13. 美团相关的scheme
  14. 2021年中国人工智能产业及其重点企业分析(阿里巴巴、百度、腾讯、科大讯飞)[图]
  15. include“ “和include<>区别
  16. 盆栽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 文件系统——空闲块成组链接法的模拟
  18. 计算机培训教案入门,计算机二级学习基础PPT学习教案.pptx
  19. M1芯片已适配达芬奇DaVinci Resolve苹果M1处理器安装新版达芬奇17教程(适配最新M1芯片处理器款mac,支持Big sur )
  20. Revit二次开发-资源汇总(书籍、网站、案例...)

热门文章

  1. 一个网页菜单的CSS代码分析
  2. C#委托与事件学习笔记
  3. 利用ajax技术 实现用户注册。
  4. centOS 6.5 yum升级 gcc4.8 然后又退回来4.4
  5. Python闭包与延迟绑定
  6. JavaScript之事件的绑定与移除
  7. java属性编辑器,即PropertyEditor
  8. python优先队列_python实现最大优先队列
  9. 【Matlab】绘制不同颜色线条
  10. 【Arduino】按键按下执行不同模式程序