夢想創造可能——盤點微軟 .NET 技術八年發展歷程
文 / 劉如鴻
文 / 劉如鴻
我所負責的XXX.CN平臺前期由于網站整體運行效率低因此采用了文件緩存的方式(文件緩存就是當某個頁面第一次接受用戶訪問時將數據庫中獲取到的內容轉化成xml文件的形式,并且存儲在服務器硬盤當中,當后面的人再來訪問時就只需要直接讀取xml緩存文件即可,減少了讀取數據庫的次數,從而達到提高網站運行效率的目的),但是使用了這種方式其中有一個更新數據的問題,在更新和讀取是就產生了并發的問題,說白了就是讀取和寫入的矛盾,當你的網站的訪問量達到一定程度后,產生這種矛盾的概率越來越大,已至于訪問者無法訪問網站,流失了客戶,對于我們酒店預訂平臺來說,流失的不是客戶,而是白花花的金子,這個問題已經困撓了我許久,直到前幾天,我在坐公交時回想起前一天給面試的人打印試卷的事,突然腦子里出現了“復制”這個詞,并且把它擴展開想到了我們網站文件緩存的占用問題上,且已經用程序的方式成功運用到我們的網站中,下面就講一下運行過程。
我們知道在Visual Studio 2010的非空Web項目(含Webform和MVC)中,都自動包含了jQuery庫在項目的Scripts文件夾中。
前面兩篇(《服務如何能被”發現”》和《客戶端如何能夠“探測”到可用的服務?》)我們分別介紹了可被發現服務如何被發布,以及客戶端如果探測可用的服務。接下來我們通過一個簡單的例子來演示如果創建和發布一個可被發現的服務,客戶端如何在不知道服務終結點地址的情況下動態探測可用的服務并調用之。該實例的解決方案采用如下圖所示的結構,即包含項目Service.Interface(類庫)、Client(控制臺應用)和Service(控制臺應用)分別定義服務契約、服務(包括服務寄宿)和客戶端程序。[源代碼從這里下載,DynamicEndpoint方式進行服務調用源代碼從這里下載]。
Microsoft .NET Framework Base Class Library 中的 Stream.Read 方法:
第一、按詞條搜索 - TermQuery
當應用了ServiceDiscoveryBehavior行為的服務通過標準終結點DiscoveryEndpoint被發布出來之后(《[WCF-Discovery]服務如何能被”發現”》),客戶端就可以按照WS-Discovery中定義的方式對可用的目標方式進行探測和解析了。由于這個過程本質上就是一次普通的服務調用,具體來說是針對發布發現服務(非目標服務)的標準終結點DiscoveryEndpoint的調用,所以客戶端也需要具有這么一個匹配的終結點。
WPF企業內訓全程實錄由于文章比較長,所以一共拆分成了三篇,上篇WPF企業內訓全程實錄(上)主要講了基礎,這篇作為該實錄的中篇,起著承上啟下的作用,主要講解開發模式、團隊協作及應用框架。其實如果大家仔細看目錄,可以發現我安排的順序是首先講解最基本的概念和基礎內容、然后過渡到開發模式及框架、最后結合其他技術和項目實際運用,這也是學習并應用一門技術最好的流程。上篇實際上主要有兩個側重點:一則就是理清脈絡——歷史淵源、概念引入及基本闡述;二則是講解WPFBasic——主要講解WPF的每個知識點,涵蓋了WPF的方方面面;如果大家感興趣,可以下載代碼進行仔細研究,如果有不懂的地方也可以參考我寫的WPF 基礎到企業應用系列,這里受篇幅限制,就不詳細論述。今天的中篇主要圍繞WPF開發模式、WPF團隊協作和MVVM框架三個議題進行闡述,希望能給大家帶來一些參考和幫助。