軟體的流暢性是個十分重要的問題,不論是什麼軟體,重要的,一般的;運行在關係國計民生的地方,或者普通的使用者使用。首先要讓使用者用的舒坦,也就是使用者體驗要好,如何體現這些呢,流暢性無疑是最直觀的了。與流暢相對應的就是卡、反應遲鈍、慢...試想,開發出的軟體或者系統,既卡又慢,還反映遲鈍,我想無論是多麼重要的軟體系統都不會得到使用者認可的,而且如今都是市場經濟了,不好的東西肯定是被淘汰掉的對象。
因為程式的運行是需要一個過程的,一般主要有:資料擷取(網路,本地;擷取的資料來源無非是資料庫和設定檔)、資料載入(指載入至某種控制項上,以供顯示)、操作資料(也表現在對控制項的操作)、資料封裝,資料運算,資料轉換等,還有邏輯處理,包括操作步驟,方法的調用,對象的執行個體化等等。
對資料方面,需要良好的資料庫設計,使資料的讀取和寫入不要有太複雜的邏輯,以減少已耗用時間。盡量寫高效能的sql語句。一般這方面最佳化空間比較小。
隨著現在所謂“雲”的概念的出現,從網路讀取資料的方式用的越來越多了,其實這塊是比較耗時的。將資料從網路讀取下來,或者從本地上傳至網路總是需要時間的。在C#中表現為webservice、WCF等服務的使用。這方面除了要最佳化好資料庫和sql語句外,還應該首先要減少在服務端對資料的操作,比如讀取的資料一般為datatable什麼的,我們可能在服務端就定義了類,然後用類將datatable資料進行封裝,此時肯定要花費不少時間尤其是大量資料時。如果對速度要求高,可以去掉這一步,在用戶端完成這些封裝。其次就是在服務端對資料的運算,比如string要轉為int,要進行加減乘除的運算,要轉換為某種格式...因為服務端總是有多個用戶端去訪問的,如此多的操作肯定對讀取時間造成影響。其次,傳輸的問題,讀取出來的資料總是要傳給用戶端的,可以對資料進行處理,比如壓縮。最後,當然是對網路的要求了,這個無非就是提高頻寬,使用多伺服器等,分布的伺服器。
邏輯處理方面,最大的法寶就是非同步作業了,因為無論效能如何高,總是有必要的已耗用時間。這時就需要非同步處理,使用線程Thread,4.0後的BackgroundWorker等,這樣避免在處理子業務的時候,造成主流程卡住。一般常用的方法就是使用提示或等待框,讓使用者知道進行中某項處理,同時使用者可以隨時取消當前的操作,從而轉入另外的操作步驟。也可以適量使用一些緩衝,儲存一些常用資料,避免重複讀取某些資料。可以將過長的操作邏輯分布進行,避免需要使用者長時間的等待。
當然了在這些過程中,演算法是很重要的,利用演算法提高效能。
總之,一款使用流暢的軟體,總能給使用者帶來更好的滿意程度。畢竟軟體的價值只有在使用者手裡才能體現出來的。