<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      唯一不變的就是一直在變”--“數(shù)據(jù)”的華麗“變身術(shù)”

       

       系列文章索引:

      [WCF郵件通信系統(tǒng)應(yīng)用 之 數(shù)據(jù)同步程序 之 設(shè)計內(nèi)幕 之 一]

      同步一個數(shù)據(jù)庫要發(fā)多少個數(shù)據(jù)包?

       [WCF郵件通信系統(tǒng)應(yīng)用 之 數(shù)據(jù)同步程序 之 設(shè)計內(nèi)幕 之 二]
      "開門待客"還是“送貨上門”?

      [WCF郵件通信系統(tǒng)應(yīng)用 之 數(shù)據(jù)同步程序 之 設(shè)計內(nèi)幕 之 三]

      “設(shè)計應(yīng)對變化”--實例講解一個數(shù)據(jù)同步系統(tǒng)

      [WCF郵件通信系統(tǒng)應(yīng)用 之 數(shù)據(jù)同步程序 之 設(shè)計內(nèi)幕 之 四]

      唯一不變的就是一直在變”--“數(shù)據(jù)”的華麗“變身術(shù)”

       

       
      1,“唯一不變的就是一直在變”
      “唯一不變的就是一直在變”--記不清楚這句名言是誰說的了,也許是從牛頓運動定律推導出的:)
      來到這里的看客應(yīng)該都是跟IT相關(guān)的人士,IT變化之多,變化之快是不用多說的了,對于我們這些從事軟件開發(fā)的人來說,最害怕的就是這個“變”字:
      需求改變;
      設(shè)計改變;
      代碼改變
      ... ...
      現(xiàn)在,我們?yōu)榱丝s短“變化的距離”,索性不要“設(shè)計”了,這樣需求改變可以直接到代碼改變,最近我們推崇“敏捷”,敏捷開發(fā),敏捷過程,敏捷實踐,敏捷到了1天1個迭代,需求變更的太快了,哪里還有時間談設(shè)計?甚至,還有人大聲高呼:“設(shè)計已死”!
      對于1天1個迭代的開發(fā)模式,我也看不出設(shè)計有啥用,但是對于1個星期,1個月有可能有重大變更的情況,我建議還是有設(shè)計來應(yīng)對變更,就像我之前的幾篇文章,“設(shè)計應(yīng)對變化”,至少,有設(shè)計,需求改變在設(shè)計這里得到了驗證,得到了緩沖,而不至于直接上代碼,累的半死,結(jié)果勞而無功,成不了英雄,卻成了炮灰。
       
      2,兩種數(shù)據(jù)同步方案
      回到我們的這部討論數(shù)據(jù)同步的系列文章,我們來看看做一個數(shù)據(jù)同步系統(tǒng)應(yīng)該做成什么樣子:
      方案1:將數(shù)據(jù)直接導出數(shù)據(jù)包,用郵件發(fā)到客戶那里,然后導入;
      方案2:將數(shù)據(jù)映射成數(shù)據(jù)實體對象,采用郵件系統(tǒng)作為通信的通道,就像采用HTTP通道一樣,客戶端接收到實體對象,最后導入數(shù)據(jù)。
       
      方案1只需要5天(2人=10人天)而且有原來的代碼可以參考;方案2可能要30人天但卻是全新的方案沒有現(xiàn)成的方案和代碼可以參考。
      假設(shè)系統(tǒng)的環(huán)境在以后發(fā)生了下列變化:
      1,目標數(shù)據(jù)庫對應(yīng)的表增加了某些字段,這些字段是業(yè)務(wù)系統(tǒng)需要的不能同步;
      2,將源數(shù)據(jù)的某一個表導入到目標數(shù)據(jù)庫的另外一個表,這兩個表內(nèi)容相似但結(jié)構(gòu)卻不相同;
      3,數(shù)據(jù)的發(fā)送方式不用郵件了,改用FTP或者其它方式;
      4,由于目標數(shù)據(jù)庫和源庫在一個網(wǎng)絡(luò)了,不想用數(shù)據(jù)包導入了,效率太慢
      5,除了在“源系統(tǒng)”和“目標系統(tǒng)”直接同步數(shù)據(jù),還想同步一點其它東西,比如業(yè)務(wù)對象
      ... ...
       
      可以肯定,方案1永遠只能做原來的數(shù)據(jù)同步,需求稍稍改變就得改代碼,最后代碼越來越復雜,最后沒有人能夠維護...
      方案2非常方便的適應(yīng)了新需求,運行良好,需要修改的代碼非常少。
       
      對于兩套方案,你選擇哪個?
          作為項目經(jīng)理,多半是方案1,它成熟簡單,至于下個項目要用數(shù)據(jù)同步,那是下一個項目經(jīng)理的事情,拿方案1去修改吧。
          作為產(chǎn)品經(jīng)理或者研發(fā)經(jīng)理,方案2有可能衍生出一個新的技術(shù)解決方案(產(chǎn)品),而且它的可重用性很強,可以應(yīng)對以后各種項目類似的需求。
       
      既然寫本篇文章,方案1的具體實現(xiàn)細節(jié)就不討論了,我們來看看方案2中的數(shù)據(jù),在系統(tǒng)中是怎么樣變化,系統(tǒng)又是怎么樣適應(yīng)未來的變化的。
       
      3,“數(shù)據(jù)同步”之應(yīng)用架構(gòu)
      先看下數(shù)據(jù)同步系統(tǒng)的應(yīng)用架構(gòu)圖:
       
       

      數(shù)據(jù)同步系統(tǒng)分為數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端,

       

      在數(shù)據(jù)發(fā)送端,數(shù)據(jù)的“變化過程”如下:

      1,使用ORM框架,從數(shù)據(jù)源查詢出數(shù)據(jù)到數(shù)據(jù)實體對象中;

      2,數(shù)據(jù)實體對象經(jīng)過“消息轉(zhuǎn)換”組件,轉(zhuǎn)換成系統(tǒng)消息對象;

      3,將系統(tǒng)消息對象放到郵件消息對象中(可能需要壓縮編碼等輔助工作);

      4,使用郵件發(fā)送組件,將郵件消息對象發(fā)送到數(shù)據(jù)接收端。

       

      在數(shù)據(jù)接收端,數(shù)據(jù)的變化過程跟發(fā)送端恰恰相反:

      1,使用郵件收發(fā)組件,將郵件消息對象接收到消息隊列;

      2,從郵件消息中取出系統(tǒng)消息對象;

      3,使用“消息轉(zhuǎn)換”組件,獲得數(shù)據(jù)實體對象;

      4,使用ORM組件,將數(shù)據(jù)實體對象存儲到目標數(shù)據(jù)庫中。

       

      4,由數(shù)據(jù)同步系統(tǒng)到ESB

       

      從上面的應(yīng)用架構(gòu)圖中我們看到,系統(tǒng)大致分為3部分:

      1,數(shù)據(jù)處理子系統(tǒng),包括數(shù)據(jù)源、目標數(shù)據(jù)庫,ORM組件,數(shù)據(jù)實體對象;

      2,消息處理子系統(tǒng),包括“消息轉(zhuǎn)換”組件,系統(tǒng)消息對象;

      3,郵件通信子系統(tǒng),包括郵件郵件消息對象,郵件收發(fā)組件,郵件服務(wù)器;

       

      整個系統(tǒng)的3大子系統(tǒng)都是獨立的,其核心在于“消息處理”子系統(tǒng),從應(yīng)用擴展來看,我們很容易想到以后系統(tǒng)可以擴展為如下結(jié)構(gòu):

       

      A:業(yè)務(wù)處理子系統(tǒng)+消息處理子系統(tǒng)+郵件通信子系統(tǒng);

      B:業(yè)務(wù)處理子系統(tǒng)+消息處理子系統(tǒng)+WCF / FTP子系統(tǒng);

      C:業(yè)務(wù)處理子系統(tǒng)+消息處理子系統(tǒng)+消息總線

      方案C,是不是很像我們常提起的ESB(企業(yè)服務(wù)總線)嗎?我們由一個設(shè)計方案,很順利的擴展出N種新方案,這就是“設(shè)計的魔力”,誰說設(shè)計沒用?

      也許,你會覺得我“嘩眾取寵”,這些設(shè)計算啥啊,只是概念而已,項目有需要大伙加加班一樣可以很快搞出來,還是看不出設(shè)計有啥用。你要是這么說請給本文一個“雞蛋”,不用給“鮮花”了。

       

      5,數(shù)據(jù)的“華麗”變身

      我們先看看系統(tǒng)中的類關(guān)系圖,看看數(shù)據(jù)是怎么變化的:

      第1變:由數(shù)據(jù)表到實體對象

       

      在本系統(tǒng)中,數(shù)據(jù)不在是單純的數(shù)據(jù),而是對象,對象本身就是封裝數(shù)據(jù)和操作數(shù)據(jù)的方法的,系統(tǒng)使用PDF.NET數(shù)據(jù)開發(fā)框架將數(shù)據(jù)映射到了對象中,這樣的對象稱為“實體對象”,對于我們習慣的“數(shù)據(jù)表”而言,這是它的第一次變身;

      第2變:由實體對象到消息對象

       

      對于單純的數(shù)據(jù)處理系統(tǒng),將數(shù)據(jù)表映射成實體對象已經(jīng)足夠了,但是我們的設(shè)計目標是系統(tǒng)不僅僅只是處理數(shù)據(jù)的,至少,我們需要有“反饋對象”告訴我們數(shù)據(jù)的處理結(jié)果,“命令對象”告訴我們該怎么樣處理其它問題,而這些對象是不能夠直接跨越兩個局域網(wǎng)的,需要把它放到郵件或者其它地方,來和其它系統(tǒng)完成通信。所以,系統(tǒng)要求有統(tǒng)一的“消息對象”,方便系統(tǒng)內(nèi)部和系統(tǒng)間交互數(shù)據(jù)和調(diào)用功能、服務(wù)。

      在這里,所有的其它對象到消息對象的轉(zhuǎn)換都是通過“消息處理”組件完成,其中,實體對象到消息對象的轉(zhuǎn)換使用了PDF.NET數(shù)據(jù)開發(fā)框架內(nèi)置的轉(zhuǎn)換類,將實體對象序列化成高效的二進制數(shù)據(jù)。

       

      第3變:由系統(tǒng)消息對象到郵件消息對象

       

      在步驟2中,轉(zhuǎn)換的都是普通的系統(tǒng)消息對象,經(jīng)過該步驟的轉(zhuǎn)換,系統(tǒng)間已經(jīng)可以正常交換消息了,但要把它通過郵件發(fā)送出去,還得有幾個處理過程,編碼,加密,壓縮,處理成最適合郵件系統(tǒng)處理的消息格式,最后使用郵件收發(fā)組件將郵件消息對象發(fā)送出去或者將郵件消息接收下來,存入郵件消息隊列。

      至此,我們由普通的數(shù)據(jù),變成了普通消息對象,再到郵件消息對象,完成了我們的“華麗變身”,我們的數(shù)據(jù)不再是單純的數(shù)據(jù)了,它變成了對象,能夠適應(yīng)各種變化的對象。也許這個過程沒有那么直接,甚至效率會有一點點影響,但它能夠應(yīng)對各種可能的變化,能夠讓我們以統(tǒng)一的對象思維模式來考慮問題,現(xiàn)在,你問我這個系統(tǒng)干了什么,我的回答是:

       

      “將對象由一個系統(tǒng)同步到了另外一個系統(tǒng)”,

      而不是

      “將數(shù)據(jù)從A庫同步到了另外一個局域網(wǎng)中的B庫”。

       

      所以,我們的系統(tǒng)應(yīng)該改一個名字,不是現(xiàn)在的“數(shù)據(jù)同步系統(tǒng)”,而應(yīng)該是“對象同步系統(tǒng)”。

      posted on 2011-02-23 13:48  深藍醫(yī)生  閱讀(2155)  評論(6)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产精成人品日日拍夜夜| 72种姿势欧美久久久久大黄蕉| 亚洲视频免费一区二区三区| 无遮挡aaaaa大片免费看| 91久久精品美女高潮不断| 国产一区二区三区亚洲精品| 中文字幕人妻熟女人妻a片| 俄罗斯老熟妇性爽xxxx| 国产SUV精品一区二区四| 亚洲春色在线视频| 亚洲永久精品ww47永久入口| 97久久精品午夜一区二区| 潮喷无码正在播放| 国产精品人妇一区二区三区| 囊谦县| 国产成人亚洲老熟女精品| 婷婷久久香蕉五月综合加勒比| 国产精品中文字幕观看| 国产精品毛片一区视频播| 美女无遮挡免费视频网站| 日韩精品 在线 国产 丝袜| 亚洲天堂伊人久久a成人| 亚洲自拍偷拍激情视频| 亚洲 欧美 综合 另类 中字| 国内外成人综合免费视频| gogogo高清在线播放免费| 国产线播放免费人成视频播放| 日韩精品中文字幕第二页| 免费午夜无码片在线观看影院| 91网站在线看| 久久久久久性高| 人妻少妇偷人作爱av| 美女一区二区三区在线观看视频| 久久精品国产一区二区三区不卡| 亚洲另类激情专区小说婷婷久| 孕妇怀孕高潮潮喷视频孕妇| 日韩精品一区二区亚洲专区| 精品偷拍一区二区三区| 日本亚洲中文字幕不卡| 久久中文字幕国产精品| 国产果冻豆传媒麻婆精东|