《Effective C#》读书笔记——条目28:提供粗粒度的互联网API使用C#表达设计
在使用Web服務、.NET遠程調用或給予Azure的程序時,最耗時的就是與遠程服務器之間傳輸過程。如果只是簡單的將本地API封裝一下,就變成遠程使用的API,這樣做功能上不會有問題,但是效率低下。API的粒度越細所花費在等待數據返回的額外事件也就越多。
在創建基于Web的服務時,客戶端和服務器的通信過程應該向發送傳真一樣:客戶端可以獨立、不需要與服務器取得聯系的情況系下工作一段時間。然后在一次通信所需要的所有數據就位之后,再讓客戶端一次性把所有信息發送給服務器。服務器端也應該如此:將數據從服務器發送給客戶端時,應該一次性的發送所有內容,讓客戶端能完成當前所有的任務。
現在讓我們做一個假設:該系統僅有一個服務端,還有超過100萬的客戶。假設每個客戶在去年一年中平均進行十五次訂購。每個電話銷售都在訂購過程中操作一個客戶端,且在接聽電話的過程中需要查詢或創建客戶。我們該如何設計出一個最有效的客戶端和服務器端傳遞的一系列對象呢?在這里一次性的將每個客戶和每個訂單發給客戶端是不現實的:100萬客戶和1500萬的訂單記錄對應的數據實在是太多了。
設計與遠端計算機通信的Web服務時,我們希望同時降低通信的頻率以及每次通信時傳遞的數據量。這兩個目標是魚和熊掌不可兼得的,我們必須在這二者之間取得平衡。我們應該進盡量不要走向兩個極端,但可適當選擇較少通信次數,并盡量一次傳輸更多的數據。
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的《Effective C#》读书笔记——条目28:提供粗粒度的互联网API使用C#表达设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EMOS SPF开启收不到信 及WEB收
- 下一篇: main_loop()函数解析(1)