2017系統架構師知識整理

學識都 人氣:1.96W

系統架構師是很多軟件行業的從業人員的終極目標,要想成爲系統架構師,知識的儲備不能少,下面小編爲大家整理了一些關於系統架構師的知識,歡迎大家閱讀!

2017系統架構師知識整理

考慮用戶的觀點

當您爲智能客戶端應用程序確定合適的性能目標時,您應該仔細考慮用戶的觀點。對於智能客戶端應用程序而言,性能與可用性和用戶感受有關。例如,只要用戶能夠繼續工作並且獲得有關操作進度的足夠反饋,用戶就可以接受漫長的操作。在 確定要求時,將應用程序的功能分解爲多個使用情景或使用案例通常是有用的。您應該識別對於實現特定性能目標而言關鍵且必需的使用案例和情景。應該將許多使 用案例所共有且經常執行的任務設計得具有較高性能。同樣,如果任務要求用戶全神貫注並且不允許用戶從其切換以執行其他任務,則需要提供優化的且有效的用戶 體驗。如果任務不太經常使用且不會阻止用戶執行其他任務,則可能無須進行大量調整。對於您識別的每個性能敏感型任務,您都應該精確地定義用戶的操作以及應用程序的響應方式。您還應該確定每個任務使用的網絡和客戶端資源或組件。該信息將影響性能目標,並且將驅動對性能進行度量的測試。可 用性研究提供了非常有價值的信息源,並且可能大大影響性能目標的定義。正式的可用性研究在確定用戶如何執行他們的工作、哪些使用情景是共有的以及哪些不是 共有的`、用戶經常執行哪些任務以及從性能觀點看來應用程序的哪些特徵是重要的等方面可能非常有用。如果您要生成新的應用程序,您應該考慮提供應用程序的原 型或模型,以便可以執行基本的可用性測試。

事務原則

事務可以提供重要的支持,以確保不會違反業務規則並維護數據一致性。事務可以確保一組相關任務作爲一個單元成功或失敗。您可以使用事務來維護本地數據庫和其他資源(包括消息隊列的隊列)之間的一致性。對於需要在網絡連接不可用時使用脫機緩存數據的智能客戶端應用程序,您應該將事務性數據排隊,並且在網絡連接可用時將其與服務器進行同步。您 應該避免使用涉及到位於網絡上的資源的分佈式事務,因爲這些情況可能導致與不斷變化的網絡和資源響應時間有關的性能問題。如果您的應用程序需要在事務中涉 及到位於網絡上的資源,則應該考慮使用補償事務,以便使您的應用程序能夠在本地事務失敗時取消以前的請求。儘管補償事務在某些情況下可能不適用,但它們使 您的應用程序能夠按照鬆耦合方式在事務的上下文內與網絡資源交互,從而減少了不在本地計算機控制之下的資源對應用程序的性能造成不利影響的可能性。

制定性能目標

當您設計和規劃智能客戶端應用程序時,您應該仔細考慮性能方面的要求,並且定義合適的性能目標。在定義這些目標時,請考慮您將如何度量應用程序的實際性能。 您的性能度量標準應該明確體現應用程序的重要性能特徵。請努力避免無法準確度量的模糊或不完整的目標,例如,“應用程序必須快速運行”或“應用程序必須快 速加載”。您需要了解應用程序的性能和可伸縮性目標,以便您可以設法滿足這些目標並且圍繞它們來規劃您的測試。請確保您的目標是可度量的和可驗證的。定義良好的性能度量標準使您可以準確跟蹤應用程序的性能,以便您可以確定應用程序是否能夠滿足它的性能目標。這些度量標準應該包括在應用程序測試計劃中,以便可以在應用程序的測試階段度量它們。本 節重點討論與智能客戶端應用程序相關的特定性能目標的定義。如果您還要設計和生成客戶端應用程序將消耗的網絡服務,則您還需要爲這些服務定義適當的性能目 標。在此情況下,您應該確保考慮整個系統的性能要求,以及應用程序各個部分的性能與其他部分以及整個系統之間存在怎樣的關係。

性能調整和診斷

在設計和實現階段處理性能問題是實現應用程序性能目標的最划算的方法。但是,您只有在開發階段經常且儘早測試應用程序的性能,才能真正有效地優化應用程序的性能。盡 管針對性能進行設計和測試都很重要,但在這些早期階段優化每個組件和所有代碼不是有效的資源用法,因此應該予以避免。所以,應用程序可能存在您在設計階段 未預料到的性能問題。例如,您可能遇到由於兩個系統或組件之間的無法預料的交互而產生的性能問題,或者您可能使用原來存在的、未按希望的方式執行的代碼。 在此情況下,您需要追究性能問題的根源,以便您可以適當地解決該問題。本節討論一些將幫助您診斷性能問題以及調整應用程序以獲得最佳性能的工具和技術

優化顯示速度

根據您用於顯示用戶界面控件和應用程序窗體的技術,您可以用多種不同的方式來優化應用程序的顯示速度。當您的應用程序啓動時,您應該考慮儘可能地顯示簡單的用戶界面。這將減少啓動時間,並且向用戶呈現整潔且易於使用的用戶界面。而且,您應該努力避免引用類以 及在啓動時加載任何不會立刻需要的數據。這將減少應用程序和 .NET Framework 初始化時間,並且提高應用程序的顯示速度。當您需要顯示對話框或窗體時,您應該在它們做好顯示準備之前使其保持隱藏狀態,以便減少需要的繪製工作量。這將有助於確保窗體僅在初始化之後顯示。如果您的應用程序具有的控件含有覆蓋整個客戶端表面區域的子控件,則您應該考慮將控件背景樣式設置爲不透明。這可以避免在發生每個繪製事件時重繪控件的背景。您可以通過使用 SetStyle 方法來設置控件的樣式。使用 ControlsStyles.Opaque 枚舉可以指定不透明控件樣式。您應該避免任何不必要的控件重新繪製操作。一種方法是在設置控件的屬性時隱藏控件。在 OnPaint 事件中具有複雜繪圖代碼的應用程序能夠只重繪窗體的無效區域,而不是繪製整個窗體。OnPaint 事件的 PaintEventArgs 參數包含一個 ClipRect 結構,它指示窗口的哪個部分無效。這可以減少用戶等待查看完整顯示的時間。使用標準的繪圖優化,例如,剪輯、雙緩衝和 ClipRectangle。這還將通過防止對不可見或要求重繪的顯示部分執行不必要的繪製操作,從而有助於改善智能客戶端應用程序的顯示性能。

如果您的顯示包含動畫或者經常更改某個顯示元素,則您應該使用雙緩衝或多緩衝,在繪製當前圖像的過程中準備下一個圖像。System.Windows.Forms 命名空間中的 ControlStyles 枚舉適用於許多控件,並且 DoubleBuffer 成員可以幫助防止閃爍。啓用 DoubleBuffer 樣式將使您的控件繪製在離屏緩衝中完成,然後同時繪製到屏幕上。儘管這有助於防止閃爍,但它的確爲分配的緩衝區使用了更多內存。