面對快速持續改善的多層架構系統要如何規劃版本更新架構呢? |
尚未結案
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮
如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新? 在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎?
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
自己實務上只有處理 CS 架構的更新,也只有一個主程式然後使用 AutoUpgrader 元件處理更新,更新的時機由用戶端決定
如果要開始踏入到 Delphi 三層架構,就會增加 AP Server 的版本管理,所以先提出這個疑問了解狀況。 所以就真的是我所說的配套方法嗎? ===================引 用 GrandRURU 文 章=================== 雪龍大的這個解法在實作上有遇到什麼問題嗎? ===================引 用 bestlong 文 章=================== 考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮 如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新? 在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎?
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
AP Server 更新相較 Client 是比較簡單的
只要不影響舊版Client的使用,雪龍大所說的方法就很好了 ===================引 用 bestlong 文 章=================== 自己實務上只有處理 CS 架構的更新,也只有一個主程式然後使用 AutoUpgrader 元件處理更新,更新的時機由用戶端決定 如果要開始踏入到 Delphi 三層架構,就會增加 AP Server 的版本管理,所以先提出這個疑問了解狀況。 所以就真的是我所說的配套方法嗎? ===================引 用 GrandRURU 文 章=================== 雪龍大的這個解法在實作上有遇到什麼問題嗎? ===================引 用 bestlong 文 章=================== 考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮 如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新? 在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎? |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
多层,有很多种写法,比如最新的 DataSnap,比如 WebService,甚至比如古老一点的 DCOM。如果简单地使用 DataSnap 的 211 连接这种模式,通常开发者会让 Client 一上来就连接 Server 的 211 而且一直连接不断开。这样的话,你的 Server 没法更新。
概念上来说,不管用哪个模式,都要注意,Client 向Server读取数据后,马上断开连接。Client 向 Server 提交数据时,如果没提交成功(网络不通等等状况),就下次再提交。如果这个时候用户要关机,就 SaveToFile 存在用户自己的电脑上,下次 Client 启动后自动 LoadFromFile 然后自动再次提交。提交的时候,才去连接 Server。 当然啦,如果是 WebService,本身每次 Client 向 Server 请求数据或者提交数据或者 Call 一个 server 的 function 后,就自动断开连接了(这个是 HTTP 本身的特性)。 做到以上的东西,你可以随便停掉 SERVER 再重新启动,不影响正在使用的 Client。并且,这样做的好处是一个 Server 可以同时服务更多的 Client。 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我的看法是:
建立二個或以上的 app server instance,可以是不同ip,或是同ip不同port。 舉例來說, 有 a,b 二台 app server,a 的 listen port 是123,b的是 456。 假如 a 是正常在服務的server。而 b 是正在修正或加功能的 server instance。 在client端上,有個 ini 或是類似的檔,或reg,記載 server 的ip與port。 ok的情形下,client 連入 a。 而當你覺得 b 已經開發ok,那就去更新部份,或全部的 client端的程式或僅是server ip port 的設定檔。 那麼就可以快速切換,或部份切換,或全面切換。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Ray_Lin
一般會員 發表:0 回覆:30 積分:11 註冊:2015-07-21 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
Ray_Lin
一般會員 發表:0 回覆:30 積分:11 註冊:2015-07-21 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
一旦需求變動,AP和Client幾乎同時都要調整
正式區和測試區的環境還要並存 專案一趕時很容易就混亂了,有解決的方法嗎? ===================引 用 Ray_Lin 文 章=================== 目前我們三層的做法是這樣,AP(主要是和資料庫連接,取得資料或存取資料),這部分是手動更改,主要是這部分和資料庫的變動很密切。一般資料庫的結構改變,AP的程式也會變動結構。不太可能只改資料庫不改AP端。所以基本上這二個是同步的,所以確認可以更改的時間手動更改。 Client端是使用者有用再改。因為不確定使用者何時才會使用,不使用下載程式也佔頻寬,所以使用者啟動程式時,檢查程式版本是否一樣,不一樣就先下載再啟動新程式。 |
Ray_Lin
一般會員 發表:0 回覆:30 積分:11 註冊:2015-07-21 發送簡訊給我 |
。
接下來,會有一個共同的檔案管理區,這個區域存放大家寫的程式,當個人要修改程式時,就要從這個區域CHECK OUT程式,這時程式就得屬CHECK OUT的人了,除非該名程式人員把程式更新CHECK IN,否則是不可以更動的。這樣才不會有程式互改的情形發生。 程式測試OK後,就會把程式上傳到共同的檔案管理區,這時個人的程式就告一段落了。 至於不緊急的程式,可以等大家都下級時做更新,因為有一堆人做修改,其實也很難知道每一個人改了什麼。但是可以確定,就是在共同管理區的程式是可以正確WORK的。那就用平台工具,把資料庫CREATE一次(平台工具會先比對TABLE,有修改的才做修改),再把程式全部重BUILD,COPY到主機。這樣更新的工作就完成了。主要是資料庫和AP程式會同步更新,Client端是使用者有用到程式,才比對做更新。 沒有特別好,也很平實,不過會有問題通常都是程式人員程式有BUG,很少是更新的錯誤。 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
目前看起來最簡單的方式應該就是先用雙 AP Server 的的架構來處理應用伺服器的更新
而用戶端的設定上可以用 TSimpleObjectBroker 元件來處理自動切換 AP Server 的主機列表 ===================引 用 aftcast 文 章=================== 我的看法是: 建立二個或以上的 app server instance,可以是不同ip,或是同ip不同port。 舉例來說, 有 a,b 二台 app server,a 的 listen port 是123,b的是 456。 假如 a 是正常在服務的server。而 b 是正在修正或加功能的 server instance。 在client端上,有個 ini 或是類似的檔,或reg,記載 server 的ip與port。 ok的情形下,client 連入 a。 而當你覺得 b 已經開發ok,那就去更新部份,或全部的 client端的程式或僅是server ip port 的設定檔。 那麼就可以快速切換,或部份切換,或全面切換。
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |