[英]Optimizing Smart Client Performance
我有一個智能客戶端(WPF),可以調用服務器VA服務(WCF)。 我正在處理的屏幕包含調用構造函數時加載的對象列表。 我可以在列表中添加,編輯和刪除記錄。
通常,我所做的是在每次添加或刪除后再次從服務中重新加載整個模型,原因很多,其中包括兩次調用之間服務器上的數據可能已更改的事實。
事實證明,這種方法對性能產生了很大的影響,因為我正在加載在“添加”和“編輯”中上下發送列表的所有內容。
還有什么其他選擇對我開放,應該只將所需的信息發送到服務器,並且每次執行添加或刪除操作時如何不重新加載所有數據?
進行描述的最佳方式(我假設您已經知道客戶端/服務器I / O已經成為瓶頸),一旦填充了客戶端,就只能雙向發送更改。
如果您采用了日志記錄模型來更新數據,這可能很簡單。 為了使任何進程都能更改共享數據,它必須創建一個帶有時間戳的事務,該事務被添加到日志中。 通過將事務應用於數據的方法進行數據更新。
數據模型支持事務日志后,您便可以采用一種簡單的方法來使客戶端和服務器保持同步,並以最小的網絡流量進行同步:要更新客戶端,服務器將發送自上次上次創建以來創建的所有日志條目。客戶端已更新。
改造成現有設計可能需要大量工作。 在走這條路之前,您需要確定要解決的問題實際上就是您所遇到的問題。
true
或false
。 僅當為false
,您才可以重新加載數據。 如果更改不太可能或很少發生,則此方法有效,因為更改后需要兩次調用才能獲取數據。 如果您擔心數據庫中的更改,則可能不希望僅在用戶修改或添加某些內容時獲得更改-例如,這可能是基於計時器的完全獨立的操作。 您的並發策略實際上取決於您的數據,用戶數量,一個以上的用戶有興趣同時更改同一數據的可能性等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.