專案需求:讀取阿里雲資料庫資料,通過webservice介面上傳給第三方。
概要設計,專案滿足以下幾點:
1、動態介面呼叫
2、給多平台上傳
3、資料保持(減輕資料庫壓力)
4、上傳任務管理
5、擴充套件成實時資料伺服器
實現方案:
設計1:對於第乙個需要我們上傳資料的平台給出的藉口是webservice介面(不能get/post表單訪問的那種),考慮到以後可能會有類似於restful/webapi之類的介面,
所以此處必須採用動態介面呼叫。目前實現了webservice動態介面訪問。關於動態訪問,有2中實現思路,第一種:預讀取wsdl,動態編譯,反射方法,呼叫。
由於我在專案中實現第一種方法失敗了(動態編譯時死活不能引導程式集,未解決的問題),因此我用了另外一種思路,通過字串構造滿足soap協議的xml傳送給介面。
此處採用了開源的
設計2:以後有類似於此專案結構的需求,為了避免重複開發,因此這裡定義了上傳平台,平台包括介面(全部構建在xml中),動態讀取。
但是目前所有的介面都未知,不知道將會是什麼結構或者需求,因此這裡實現的比較粗糙。但是比較大尺度的隔離了各個平台的操作,因此擴充套件性也是比較強。
設計3:當需要上傳的專案較多,重複索引同乙個專案的資料的時候,勢必會給資料庫伺服器造成很大的壓力,因此,這裡做了資料保持,通過專案的結構形式,將資料儲存在記憶體中,
滿足一定的條件才去從資料庫讀取資料。(為做成實時資料伺服器做準備)。但是由於時間 原因,沒有繼續朝設計5去設計實現。
設計4:系統採用quartz.net元件實現定時上傳作業,使用過程中碰到的坑有關於時區問題和單次觸發(triggerjob)無效。在實踐中發現時區問題不存在,即時存在也可以通過cronexpress 的合理設定而避免。單詞觸發無效,我找來了原始碼,一步步執行下去,發現又沒有問題了(amazing!懷疑跟載入的符號系統相關跟動態編譯不能引導程式集一樣沒解決)
關於任務管理,作為第二版的功能實現,此處暫時不實現。
設計5:預計將來擴充套件成實時資料伺服器,開放webservice給外界呼叫資料,目的為了減輕資料庫伺服器壓力,由於時間原因,暫未實現!
補充:該專案同時使用了log4net元件和newtonsoft.json。採用devexpress實現的簡單介面。
log4net使用步驟總結,引用元件、編寫log4net配置檔案、啟動log4net,通過assembly或者log4net.config.xmlconfigurator.configure()載入啟動、getlogger、寫入。
總用時11天。(框架設計4天,業務邏輯**實現2天,關於任務以及學習quartz.net2天,webservice動態呼叫2天,測試和補充log4net寫日誌1天)
首個MFC專案 總結3
彈出的選擇路徑視窗 1 選擇資料夾目錄的視窗。產生選擇視窗 browseinfo bi char name max path bi.hwndowner afxgetmainwnd getsafehwnd bi.pszdisplayname name bi.ulflags bif returnfsan...
高程3總結 第19章E4X
使用 has content 和 hascomplexcontent 方法,可以確定 xml 物件中是只包含文字,還是包含更複雜的內容。如果 xml 物件中只包含子文字節點,則前乙個方法會返回 true 如果 xml 物件的子節點中有任何非文字節點,則後乙個方法返回 true alert emplo...
Unity3D U3D開發專案總結
從2月份到現在第乙個u3d專案也基本收工,雖然專案結局不是太好,但總算也是成功賣掉並上線,總結將近10個月的時間大家從端遊轉到手遊或從cocos2轉到u3d的整個開發過程。1.資源 無疑這是整個專案我覺得做的最差的地方,也是前期最為忽略的地方,猶豫u3d元件式架構的原因和本身資源打包載入的乙個限制,...