標籤:
註:本文是別人寫的,感覺寫得很好就轉過來,著作權歸原作者所有哦,誰知道出處可以告訴我,謝謝。
根據以上的會議室應用現狀分析,該架構的核心是把曆史發生的會議室申請資料定時同步到Redis記憶體資料庫中,對於現在和未來時間的會議室資料(目前可以提前7天申請資料)則通過專用介面在Exchange會議室資料庫即時查詢,根據使用者選取查詢時間,系統自動判斷訪問哪個資料庫或進行資料合併(曆史資料與現在或未來時間的資料),通過減少訪問Exchange會議室資料庫以提高查詢效能,從而大大改善使用者體驗,通過與Windows活動目錄的使用者的整合,為會議室分析和考核提供資料支援。
(二)關鍵技術簡介
1、ServiceStack.Redis驅動
ServiceStack.Redis是最受歡迎的開源C#驅動之一,用於訪問和讀取Redis,它封裝了大量方法和對象,這樣使二次開發相當容易,如提供了基本KEY/VALUE索引值對操作、儲存物件、儲存表格對象、使用用戶端連結池模式提升連結速度等。
本文採用了ServiceStack.Redis進行二次開發,通過二次開發的介面把Exchange的會議室和Windows活動目錄的所有在職使用者資料同步Redis中,同時對於曆史會議室資料提供查詢介面。
2、Microsoft.Exchange.WebServices類庫
Microsoft.Exchange.WebServices類庫是微軟官方提供的專門訪問Exchange郵件伺服器的API,如可以根據此類庫編程實現讀取會議室資料、郵件、連絡人、議程等,可以根據需要進行定製開發以滿足不同的應用需求。
本文主要使用此類庫讀取會議室的資料,並結合SystemComponent.ADHelper類庫讀取會議申請人和參與人的部門資訊。
3、SystemComponent.ADHelper類庫
SystemComponent.ADHelper類庫是本人為BPM項目開發的操作windows活動目錄(組織單位、組、使用者)的通用類庫,可以進行複用,目前在BPM項目中已有廣泛應用。
本文主要使用此類庫根據電子郵箱獲得會議申請人和參與人的所屬部門資訊。
4、Quartz.NET作業架構
Quartz.NET是一個開源的作業調度架構,是OpenSymphony 的 Quartz API的.NET移植,它用C#寫成,可用於winform和asp.net應用中。它提供了巨大的靈活性而不犧牲簡單性。能夠用它來為執行一個作業而建立簡單的或複雜的調度。它有很多特徵,如:資料庫支援,叢集,外掛程式,支援cron-like運算式等等。
本文主要使用此作業架構進行定製開發同步程式,實現定時同步Exchange會議室資料到Redis中,並在Windows服務中運行(實現自動化作業,無需人工幹預)。
Redis記憶體資料庫在Exchange會議室的整體應用架構