.NET 应用架构指导 V2[19]
5 決定數(shù)據(jù)綁定的需求
數(shù)據(jù)綁定在應(yīng)用中,提供了一種在用戶界面的控件和數(shù)據(jù)或者邏輯組件建立連接的方式。數(shù)據(jù)綁定允許你將數(shù)據(jù)庫的數(shù)據(jù),或者是其他結(jié)構(gòu)的數(shù)據(jù)進(jìn)行顯示或者和他們進(jìn)行交互。數(shù)據(jù)綁定是綁定目標(biāo)(用戶控件)和綁定源(數(shù)據(jù)結(jié)構(gòu)、Model、或者是表現(xiàn)層邏輯組件)之間的橋梁。
數(shù)據(jù)綁定控件是一些綁定到數(shù)據(jù)源的控件。例如:DataGrid控件綁定要一個(gè)集合。數(shù)據(jù)綁定通常使用在分離的表現(xiàn)模式(Views),綁定到Presenters或者是Controllers,或者是表現(xiàn)層的實(shí)體組件。
對(duì)于每一個(gè)用戶界面技術(shù),對(duì)數(shù)據(jù)綁定的支持,和具體的實(shí)現(xiàn),都不盡相同。通常來說,都可以綁定控件和對(duì)象或者集合。但是,也有需要數(shù)據(jù)源實(shí)現(xiàn)接口和事件,才可以支持?jǐn)?shù)據(jù)綁定,例如:WPF中的INotifyPropertyChanged,和Windows Forms中的IBindingList。如果你使用分離的表現(xiàn)模式,確保你的表現(xiàn)邏輯和數(shù)據(jù)組件支持所需的接口和事件,使得用戶控件可以很容易的進(jìn)行綁定。
通常有兩種類型的綁定可以使用:
One-way:?jiǎn)蜗蚪壎ā8淖冊(cè)磳傩裕詣?dòng)更新目標(biāo)屬性,但是改變目標(biāo)屬性,不會(huì)影響源屬性。這種適合使用在控件是只讀的情況,如果沒有必要監(jiān)測(cè)目標(biāo)屬性的變化的話,可以選擇單向綁定,避免不必要的負(fù)載。
Two-way:雙向綁定。改變?cè)磳傩曰蛘呤悄繕?biāo)屬性,都會(huì)影響到對(duì)方。這種綁定適合用在可編輯的情況,很多控件都支持雙向綁定,可以在數(shù)據(jù)源改變的時(shí)候影響到控件,也可以在控件改變的時(shí)候影響到數(shù)據(jù)源。
6 確定錯(cuò)誤處理策略
用戶界面組件是應(yīng)用的外部邊界,因此需要你選擇適當(dāng)?shù)腻e(cuò)誤處理策略,最大化應(yīng)用的穩(wěn)定性,提供更好的用戶體驗(yàn)。可以參考下面的步驟:
設(shè)計(jì)集中管理的異常處理機(jī)制。異常和錯(cuò)誤處理是一個(gè)跨層的關(guān)注,應(yīng)該使用分離的組件來實(shí)現(xiàn),使它可以跨層訪問。也更容易維護(hù),提高復(fù)用性。
日志記錄異常信息。記錄異常日志是非常關(guān)鍵的,你可以用來發(fā)現(xiàn)和診斷錯(cuò)誤。對(duì)表現(xiàn)層組件來說很重要。但是要小心個(gè)人身份信息和安全敏感信息,要小心日志的數(shù)量和位置。
給用戶顯示友好的提示信息。避免直接顯示錯(cuò)誤信息,應(yīng)該提供有好的錯(cuò)誤提示。考慮提示用戶如何修改這個(gè)錯(cuò)誤,或者是正確的格式。
允許用戶重新嘗試。在提示用戶的情況下,還可以允許用戶重新嘗試。在一些情況下非常有用,例如網(wǎng)絡(luò)超時(shí)、臨時(shí)性的斷網(wǎng)啊。
顯示一致的提示信息。避免暴露敏感信息。
7 確定有效性性驗(yàn)證策略
一個(gè)有效的輸入驗(yàn)證策略可以幫助過濾不希望的輸入,惡意的數(shù)據(jù),保護(hù)你的應(yīng)用不受攻擊。典型的,在表現(xiàn)層的輸入驗(yàn)證,業(yè)務(wù)規(guī)則驗(yàn)證發(fā)生在業(yè)務(wù)邏輯層的業(yè)務(wù)組件。在設(shè)計(jì)驗(yàn)證策略的時(shí)候,一定要確定所有的輸入數(shù)據(jù)都是合法的。例如:從web客戶端的一個(gè)輸入,參數(shù)(get、post、查詢字符串),隱藏字段,viewstate都應(yīng)該被驗(yàn)證。通常情況,你應(yīng)該驗(yàn)證所有從不可信源來的數(shù)據(jù)。
對(duì)于應(yīng)用的客戶端組件和服務(wù)端組件來說,例如RIA和富客戶端應(yīng)用,一定要在服務(wù)端再次驗(yàn)證那些已經(jīng)在客戶端進(jìn)行過的驗(yàn)證。在客戶端進(jìn)行驗(yàn)證,如果用戶輸入非法的數(shù)據(jù),可以帶給用戶快速的響應(yīng)。可以節(jié)省時(shí)間和帶寬,但是要意識(shí)到惡意的攻擊可能會(huì)繞過客戶端的驗(yàn)證。
在確定了需要驗(yàn)證的數(shù)據(jù)之后,再來決定你的驗(yàn)證技術(shù)。通常包括:
支持已知的正確數(shù)據(jù)。只是接受所有符合條件的數(shù)據(jù),拒絕所有其他的數(shù)據(jù)。
決絕已知的錯(cuò)誤數(shù)據(jù)。接受不滿足錯(cuò)誤條件的數(shù)據(jù)。
審查。消除和翻譯不合法的數(shù)據(jù),使得輸入數(shù)據(jù)安全。
不同的表現(xiàn)層技術(shù)使用不同的驗(yàn)證方式。例如:WPF,使用xaml的轉(zhuǎn)換器和驗(yàn)證規(guī)格對(duì)象。在Windows Forms中使用驗(yàn)證和綁定事件。
模式 & 實(shí)踐小組的推薦
Composite Application Guidance for WPF and Silverlight
patterns & practices – Enterprise Library
Software Factory
patterns & practices - Unity
作者:Leo_wl
出處:http://www.cnblogs.com/Leo_wl/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
版權(quán)信息
總結(jié)
以上是生活随笔為你收集整理的.NET 应用架构指导 V2[19]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区块链钱包派生账户简介
- 下一篇: 本地部署modelscope-agent