青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我生如山

一個小型CRM系統的設計(未完成版本)

Core-Man System Design Document Version 1.0 9/29/2009 Contents 簡介 4 系統總體架構介紹 4 系統具體設計 6 后記 6 簡介 本文檔用來描述Core-Man這個用來為汽配行業做貨物、訂單、客戶關系管理的系統功能和設計。本文檔基于該系統的需求分析和前期市場調研,關于需求分析和市場調研的結果,可以查看文檔XXXX. 1. 系統設計目標 為了使得系統能最大程度的滿足用戶的需求,盡可能的減少以后再定制維護過程中的代價,Core-Man系統應該達到以下幾個目標: ? 可定制性:雖然本系統是為了汽配行業的客戶管理而設計的,但是本系統需要達到在特定的需求下經過適當的配置(數據庫配置,配置文件更改)而達到滿足其他行業需求的目的。 ? 可維護性:本系統的設計應該達到可維護的目的,因為用戶的需求可能會變化(企業規模擴大,經營業務增多)。在用戶變化需求的時候,我們的系統就需要升級,那么在升級的過程,至少需要滿足兩方面的可重用,一是數據上的可重用??蛻粼谝欢ǖ慕洜I過程中積累了一定數目的用戶資源和經營經驗數據,這部分數據對于客戶以后繼續經營,擴大業務規模都是有重要作用的。在我們的系統升級的過程,應該使得客戶可以重用這部分數據,即使得升級后的系統能夠識別維護舊的數據。另一方面的可重用性是指代碼上的可重用性,系統的升級不能使推到系統重來。新系統應該基于舊系統已有的代碼,這樣可以最大程度上的節省成本。 ? 安全性:雖然在系統初期,客戶對于安全性上的要求不會很高,但是隨著企業業務規模的擴大,必然涉及到很多的商業保密信息。企業的客戶數據,訂單數據,管理模式都有很重要的商業價值,此時對于我們系統的安全性就提出了要求。Core-Man系統的安全性主要體現在一下幾個方面: ? 用戶認證:系統應該區分登錄的會話中用戶的身份,以此來判斷用戶可訪問哪些數據,可更改哪些數據,這個對于一個中大型企業里面,各個管理層面(老板,總經理,經理,員工)應用同一個系統式很重要的。 ? 權限管理:驗證用戶后,需要判斷已驗證用戶是否被允許訪問其所請求的數據,在判斷通過的情況下,系統返回正確的響應;否則,系統告知客戶端無權訪問。 ? 數據加密:企業的客戶數據,員工數據,訂單數據都涉及到商業秘密。這些數據都需要經過加密后存儲在系統的文件系統或者數據庫中。 系統總體架構介紹 很明顯的Core-Man系統是一個以數據庫為中心,以多終端進行數據處理維護的分布式系統,一個Core-Man系統的典型的應用場景可以用下圖來描述: 在上面的應用場景中,各個角色的分工如下: ? 中心數據庫:負責提供整個系統的數據的存貯,這里包含兩部分內容 ? 由數據庫管理系統托管的數據庫表,視圖,存儲過程,數據等信息。 ? 由文件系統托管的圖片,文件等信息。 ? 請求監聽/代理服務器:負責作為終端用戶和數據庫之間通信的一個代理人的角色。所有客戶端的操作如果涉及到數據庫查詢/更改請求,由請求監聽/代理服務器將其轉換為對相應數據庫項目的查詢/更新操作。這樣的設計能使得終端用戶和數據庫的耦合性降到最低,使得在需要更換數據庫的時候,我們只需要更新請求監聽/代理服務器里面與數據庫交互的那部分代碼。同時,加進一層請求監聽/代理服務器,可以讓我們的系統在這一層進行安全性上的檢查更改等操作,比如,在這一層做終端用戶身份的鑒別,只有終端用戶是授權用戶的時候,我們才允許客戶端進行后續操作。 ? 超級管理終端:這個終端有最大的管理權限,用于進行數據的備份,緊急模式下的更改等操作。 ? 分布式終端1:本系統眾多分布式終端的其中一個,用戶為普通用戶(經理,員工,客戶)提供訪問我們系統的功能。每一個分布式終端在發起連接請求監聽/代理服務器的時候,都需要提供用戶身份的信息,請求監聽/代理服務器用這些信息來判斷發起連接的用戶是否是一個經過授權的用戶。 下圖描述了我們的數據庫設計的基本輪廓: 下圖描述了我們的請求監聽/代理服務器的設計模塊以及模塊之間的聯系: 自上至下,三個大的模塊分別是: ? 請求監聽層:負責監聽客戶端的操作請求,檢查客戶端的身份,以及客戶端的權限。如果客戶端是經授權的用戶并且其請求操作被策略允許,請求監聽層會將該請求放進該層維護的請求隊列中。放進請求隊列中的請求包含請求的客戶端信息,請求的優先級,請求所要進行的具體操作等等。請求監聽層會有一個請求分發線程,從請求隊列中按照一定的策略找出一個請求,將該請求送往邏輯處理層。 ? 邏輯處理層:邏輯處理層的主要功能是維護抽象的數據模型,使得請求層不必與具體的數據庫訪問器接口方法做交互。邏輯處理層將請求監聽層分發過來的請求轉換為對特定抽象數據的操作,這就使得在這一層能盡最大可能地應用面向對象設計的好處,為以后的升級,定制提供方便。邏輯處理層由請求監聽模塊,邏輯處理模塊和邏輯對象管理器組成。請求監聽模塊將請求監聽層分發過來的請求轉換為對特定邏輯對象的操作。邏輯處理模塊是一個特定的線程,負責調用邏輯對象管理器的方法來進行邏輯多項生命周期的維護。邏輯對象管理器負責提供邏輯對象的管理接口,比如邏輯對象的創建,刪除等操作。 ? 數據庫訪問層:數據庫訪問層主要由數據庫訪問器接口和數據庫訪問器實現來組成。這一層提供具體的數據訪問操作給邏輯處理層使用。數據庫訪問器接口和數據庫訪問器實現分屬于不同的程序集,這樣就使得數據庫訪問器實現能很方便的被替換,使系統能遷移到使用新的數據庫系統,只要我們提供新數據庫系統的數據庫訪問器實現,并且更改數據庫訪問層的程序配置文件指向新的數據庫訪問器實現。 系統具體設計 本章節按照“系統總體架構介紹”里面描述的模塊順序逐個介紹這些模塊的具體實現策略。 請求監聽層: 請求監聽模塊: 設計請求監聽模塊涉及到設計我們所使用的具體的網絡協議的格式,在初步的設計里面,我們使用 .Net對于 WinSocket的封裝來實現網絡數據的傳輸,使用TCP/IP協議。在TCP的payload里面傳輸我們的請求消息和響應消息。消息格式如下: 其中各個字段的含義如下: Command Value: 用于指示操作碼,如果系統最高位是0,表明這是系統定義的操作碼;如果最高位是1,則表明是用戶定義的操作碼。對于每一個特定的操作碼,系統應該提供一個該操作碼下的Request Data的解析函數;所以,如果用戶需要定義自己的操作碼,那么他也應該提供該操作碼下的Request Data的解析函數實現。解析函數有特定的格式如下: public Dictionary RequestDataParser(ushort commandValue, ushort flags, Guid sessionId, byte[] requestData); 其輸入為一個完整的包結構,輸出為解析出來的Request Data中包含的有意義的字段對應C#中的數據類型,以及這些數據的值。這樣子就是得我們能在我們的請求監聽層初始化的時候根據配置文件中的解析函數配置注冊合適的解析函數,在運行中能夠調用注冊好的配置函數解析對應的網絡數據將其轉換為有意義的邏輯數據。 在這種設計之下,用戶如果需要定義自己的Command Value,假設其值為0xF000,那么用戶提供一個叫做CustomeRequestDataParser.dll的程序集,其中包含了對于Command Value0xF0000下的Request Data的解析函數實現,其實現如下: public class CustomeRequestDataParser { public Dictionary RequestDataParser(ushort commandValue, ushort flags, Guid sessionId, byte[] requestData) { Dictionary result = new Dictionary(); if (requestData.Length != 8) { throw new ArgumentException("Invalid network data received."); } byte[] field1 = new byte[4]; byte[] field2 = new byte[4]; Array.Copy(requestData, field1, 4); Array.Copy(requestData, field2, 4, 4); result.Add( typeof(uint), BitConverter.ToUInt32(field1, 0)); result.Add(typeof(uint), BitConverter.ToUInt32(field2, 0)); return result; } } 在我們的請求監聽層的程序配置文件中存在這么一項: 在我們的請求監聽層的初始化代碼中存在這么幾行代碼: public void RegisterRequestDataParsers() { System.Collections.Specialized.NameObjectCollectionBase.KeysCollection keysCOllection = ConfigurationSettings.AppSettings.Keys; List requestDataParserKeys = new List(); foreach (string keyValue in keysCOllection) { if (keyValue.Contains("CommandValueParser")) { requestDataParserKeys.Add(keyValue); } } foreach (string keyValue in requestDataParserKeys) { string assemblyPath = GetAssemblyPath(ConfigurationSettings.AppSettings[keyValue]); if (!IsAssemblyLoaded(assemblyPath)) { AppDomain.CurrentDomain.Load(assemblyPath); } string typeName = GetTypeName(ConfigurationSettings.AppSettings[keyValue]); ushort commandValue=GetCommandValue(ConfigurationSettings.AppSettings[keyValue]); if (!registeredRequestDataParsers.ContainsKey(commandValue)) { registeredRequestDataParsers.Add(commandValue, Type.GetType(GetTypeFullName(typeName))); } } } 當請求監聽模塊收到一個請求之后,它會將其轉換為一個事件,將其放進事件隊列中,一個事件應該包含以下信息: public class Event { private DateTime timeStamp; private ushort commandValue; private ushort flags; private Guid sessionId; Dictionary requestData; } 一個時間隊列的可能定義如下: public class EventQueue { private List eventPool; private uint eventCount; private Event mostPrioritizedEvent; } 請求調度模塊不斷的查詢事件隊列中的時間,按照特定的調度策略找出一個合適的事件交給邏輯層處理: public abstract class EventSelectionPolicy { } public class EventQueueProcessor { private EventQueue eventQueue; private EventSelectionPolicy eventSelectionPolicy; public void RegisterEventQueue(EventQueue queue) { if (this.eventQueue != null) { throw new ArgumentException("Unable to register another event queue when a queue is still in processing."); } this.eventQueue = queue; } public EventQueue UnregisterEventQueue() { if (this.eventQueue == null) { throw new InvalidOperationException("Unable to unregister an event queue when the queue is not intialized."); } EventQueue queue = this.eventQueue; this.eventQueue = null; return queue; } public void RegisterEventSelectionPolicy(EventSelectionPolicy policy) { this.eventSelectionPolicy = policy; } public Event SelectEvent() { // //return ...; } } EventQueueProcessor調用SelectEvent方法按照注冊過的調度策略選擇一個event交給邏輯處理層處理。 后記

posted on 2009-11-06 13:26 悟山 閱讀(232) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品在线观看免费| 欧美在线观看www| 亚洲国产毛片完整版| 欧美大秀在线观看| 国产精品videosex极品| 久久婷婷综合激情| 一区精品久久| 欧美成人一二三| 欧美精品三级日韩久久| 香蕉视频成人在线观看| 国产精品av一区二区| 久久九九热re6这里有精品| 看欧美日韩国产| 久久一区二区三区国产精品| 欧美午夜在线观看| 亚洲欧洲日本mm| 一区二区三区国产在线观看| 国产精品嫩草影院一区二区| 亚洲精品激情| 亚洲视频图片小说| 国产视频丨精品|在线观看| 嫩模写真一区二区三区三州| 亚洲第一福利视频| 欧美精品久久99久久在免费线| 日韩视频永久免费观看| 91久久一区二区| 国产精品二区三区四区| 另类综合日韩欧美亚洲| aⅴ色国产欧美| 99亚洲精品| 精品99视频| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 亚洲九九精品| 在线一区二区三区四区| 久久亚洲影音av资源网| 一区二区欧美亚洲| 欧美成人免费观看| 国产欧美日韩综合| 一区二区三区久久精品| 欧美顶级艳妇交换群宴| 欧美在线观看网站| 国产精品久久久久久久久久三级| 最近中文字幕日韩精品| 狠狠色综合网| 久久久美女艺术照精彩视频福利播放| 亚洲视频久久| 欧美色偷偷大香| 一卡二卡3卡四卡高清精品视频| 欧美不卡在线视频| 久久久久久噜噜噜久久久精品| 国产日韩欧美一区二区三区四区| 午夜精品久久久久久久久久久久 | 久久成人这里只有精品| 亚洲精品一区二区在线| 欧美激情一区二区三区成人 | 久久综合亚州| 久久精品视频在线| 红桃视频亚洲| 久久精品视频网| 亚洲欧美日韩国产成人| 欧美成人激情视频| 欧美一区二区视频在线观看2020| 国产女主播一区二区三区| 亚洲欧美日本在线| 亚洲综合精品一区二区| 国产欧美一区二区三区久久| 久久成人av少妇免费| 欧美亚洲一区在线| 国产午夜精品一区二区三区欧美 | 亚洲免费在线视频一区 二区| 日韩午夜精品视频| 国产精品女人久久久久久| 欧美一区二区三区免费看| 香蕉免费一区二区三区在线观看| 国产亚洲成av人在线观看导航| 久久久久久久久久码影片| 久久久久国产免费免费| 亚洲欧洲一区| 亚洲图片欧洲图片av| 国产日韩欧美一区二区三区在线观看| 久久久国际精品| 久久最新视频| 在线视频亚洲一区| 亚洲欧美成人一区二区在线电影 | 亚洲一区二区三区在线观看视频| 一区二区三区高清不卡| 国产真实乱子伦精品视频| 欧美激情黄色片| 欧美午夜精品久久久久久孕妇| 久久国产精品99精品国产| 久久一区精品| 亚洲欧美日韩国产综合| 久久综合九色综合久99| 亚洲视频一区二区| 欧美在线国产| 国产精品99久久久久久www| 欧美在线观看www| 亚洲日本va午夜在线电影| 亚洲一区二区三区免费观看| 亚洲国产欧美日韩精品| 亚洲性感美女99在线| 亚洲黄色精品| 久久精品亚洲一区二区| 亚洲一区二区三区精品在线观看| 欧美在线视频播放| 亚洲四色影视在线观看| 男人的天堂亚洲在线| 欧美一区=区| 欧美日韩国产在线播放网站| 久久亚洲高清| 国产区欧美区日韩区| 这里是久久伊人| 99re这里只有精品6| 久久综合电影| 久久免费视频网| 国产手机视频一区二区| 亚洲欧美国产制服动漫| 另类尿喷潮videofree| 欧美在线视频免费| 欧美系列一区| 99国内精品| 日韩西西人体444www| 久久婷婷丁香| 美女免费视频一区| 国产日韩精品在线| 亚洲一区在线免费观看| 亚洲一级黄色片| 欧美日韩高清区| 亚洲人永久免费| 尤物在线精品| 久久精品国产亚洲5555| 久久不射网站| 国产在线精品一区二区中文| 午夜亚洲性色福利视频| 亚洲自拍都市欧美小说| 国产精品老牛| 亚洲欧美在线视频观看| 欧美一区二区在线免费播放| 国产精品视屏| 亚洲免费在线精品一区| 欧美在线视频免费观看| 国产日韩欧美精品一区| 久久久久久久久久久久久女国产乱| 久久久国产精品一区二区中文| 国模套图日韩精品一区二区| 久久人人超碰| 亚洲国产视频a| 亚洲手机视频| 国产精品爽爽ⅴa在线观看| 欧美制服丝袜| 欧美黑人多人双交| 亚洲视频欧美视频| 国产日韩亚洲欧美| 久久久噜噜噜久久久| 亚洲国产精品高清久久久| 一区二区三区欧美在线观看| 国产精品日韩在线观看| 久久久久久欧美| 亚洲免费观看高清完整版在线观看熊 | 久久精品国产999大香线蕉| 你懂的一区二区| 亚洲免费一级电影| 影音先锋久久久| 欧美视频一区二区三区…| 性欧美办公室18xxxxhd| 亚洲大胆av| 亚洲综合999| 亚洲福利视频免费观看| 国产精品高清在线| 久久久久久精| 一区二区三区鲁丝不卡| 免费观看在线综合| 亚洲中无吗在线| 91久久午夜| 国内精品久久久| 欧美调教视频| 久久婷婷国产综合精品青草| 99视频一区| 免费黄网站欧美| 欧美一级理论性理论a| 亚洲国产精品小视频| 国产日韩欧美一区在线| 欧美日韩伦理在线免费| 免费观看成人| 欧美诱惑福利视频| 亚洲视频一区二区免费在线观看| 夜夜嗨av一区二区三区网页 | 亚洲影院一区| 亚洲精品视频在线| 国产一区二区三区最好精华液| 欧美另类变人与禽xxxxx| 久久久精品国产99久久精品芒果| 亚洲午夜在线视频| 亚洲人成毛片在线播放女女| 老司机成人网| 美国十次成人| 免费国产一区二区| 蜜桃精品久久久久久久免费影院| 久久精品国产综合精品| 亚洲在线观看视频|