全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1299
推到 Plurk!
推到 Facebook!

如何用2Tier 的方式執行 3Tier 資料庫不會被檔?

尚未結案
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-12-30 14:43:05 IP:36.224.xxx.xxx 訂閱
原本程式是 D5 cilent - service  架構   ADOConnection1
要變成可以 Client 可以 run apservice --> dbservice (連到dbservice會連線失敗,因為被檔)
如何用2Tier 的方式執行 apservice (例 在apservice上執行程式ok ,將apservice的 text.exe 建立捷徑到Client 執行 會被檔)

可否提拱大約方向!!

GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-12-30 15:15:15 IP:59.120.xxx.xxx 訂閱
Client 連得到ApService嗎?
===================引 用 chris681016 文 章===================
原本程式是 D5 cilent - service 架構 ADOConnection1
要變成可以 Client 可以 run apservice --> dbservice (連到dbservice會連線失敗,因為被檔)
如何用2Tier 的方式執行 apservice (例 在apservice上執行程式ok ,將apservice的 text.exe 建立捷徑到Client 執行 會被檔)

可否提拱大約方向!!

chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-12-30 15:23:35 IP:36.224.xxx.xxx 訂閱
感謝回應^^
連的到,但dbservice 有鎖ip 所以就無法連線上db,只能client打開程式後就跳出,無法連線db之類的
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-12-30 15:41:26 IP:59.120.xxx.xxx 訂閱
現在
Client和APService是如何連線的?
===================引 用 chris681016 文 章===================
感謝回應^^
連的到,但dbservice 有鎖ip 所以就無法連線上db,只能client打開程式後就跳出,無法連線db之類的
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-12-30 15:56:55 IP:36.224.xxx.xxx 訂閱
Client 在檔案總管輸入 「\\jun_ap」打密碼進入了  apserver  後  到程式目錄下 test.exe 點右健新增捷徑到 Client ,然後開啟程式 就會跳出 sql server 不存在或拒絕存取。
如果是 透過 UltraVNC Viewer 進入後 apserver 執行 test.exe 就 OK
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-12-30 16:10:51 IP:59.120.xxx.xxx 訂閱
1.那還是在你的Client啟動啊…
APService不會是這樣啟動的

2.用VNC是好方法
===================引 用 chris681016 文 章===================
Client 在檔案總管輸入 「\\jun_ap」打密碼進入了 apserver 後 到程式目錄下 test.exe 點右健新增捷徑到 Client ,然後開啟程式 就會跳出 sql server 不存在或拒絕存取。
如果是 透過 UltraVNC Viewer 進入後 apserver 執行 test.exe 就 OK
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-12-30 16:19:46 IP:36.224.xxx.xxx 訂閱
2只是在測式,客戶不是要用2 哈哈
1.有辨法改寫什麼RUN嗎,如果不改太多的情形下^^
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2015-12-30 16:29:46 IP:59.120.xxx.xxx 訂閱
1.花錢少時間少改
軟體 VPN:Devart SecureBridge
硬體 VPN:問網管或老闆

2.傷身花時間大改
自己刻中間層
看是DataSnap或DIY Socket Server都是可以的

最快的方式就是不要鎖IP,連改都不用改
===================引 用 chris681016 文 章===================

2只是在測式,客戶不是要用2 哈哈

1.有辨法改寫什麼RUN嗎,如果不改太多的情形下^^
編輯記錄
GrandRURU 重新編輯於 2015-12-30 16:31:03, 註解 無‧
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2015-12-30 16:41:25 IP:36.224.xxx.xxx 訂閱
感謝大大教學回應,2是不可能的哈哈,在思考看看,謝謝喔^^
pcplayer99
尊榮會員


發表:142
回覆:740
積分:591
註冊:2003-01-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2016-01-04 13:00:13 IP:120.236.xxx.xxx 訂閱
这种需求,一般来说,是 Client 放到远处,不在 Intranet 里面,也就是不在 LAN 里面,而是需要透过 Internet 来访问 DBServer。

那么,问题来了。如果之前的程式是:Client/ADOConnection --- DBServer,那么,用 VPN 肯定连接是没问题的。问题是,之前的 CODE 是工作在 LAN 里面的,也许有 select * from ATable 这样的情形存在。这在 LAN 里面问题不大。而通过 Internet,因为 Band width 比较低的原因,一次性打开很多数据,速度非常慢,用户会等好久。

如果你的程式,已经考虑到这个问题了,每次打开 DBSERVER 都只取很少量 Data,比如是 select top 100 * from ATable 这样,那就没问题了。

然后,才考虑如何连接的问题,用 VPN 是正解。我还想到一个办法:PortMapping。

DataBase 的访问的原理是: Client ---TCP---》DBServer(on DBServer port)

Delphi 带的 Indy 里面,有一个 PortMapping 的元件。可以用它来写一个【APP SERVER】,简单说,就是它对外的 Port 是你自己定的比如 9876;然后它对内的 PORT 就是你的 DB SERVER 的 PORT。

这里需要做两个 APP SERVER,在 Client 端放一个,让它代表 DB Server,我们称它是 A;在 Server 端放一个,我们称它是 B。假设 DB Server 的 PORT 是 1433(SQL Server default port)。我们自己选用的 Port 是 9876

Client -- TCP --> A:1433 -- TPC --> B:9876 -- TCP --> DBServer:1433;

上述 A 和 B 都可以用 Indy 的元件来搞定。这样就全部是自己写的了,不需要去搞 VPN。
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#11 引用回覆 回覆 發表時間:2016-01-04 14:05:08 IP:59.120.xxx.xxx 訂閱
好神奇的技巧,能否更深入的介紹下呢?

===================引 用 pcplayer99 文 章===================
这种需求,一般来说,是 Client 放到远处,不在 Intranet 里面,也就是不在 LAN 里面,而是需要透过 Internet 来访问 DBServer。

那么,问题来了。如果之前的程式是:Client/ADOConnection --- DBServer,那么,用 VPN 肯定连接是没问题的。问题是,之前的 CODE 是工作在 LAN 里面的,也许有 select * from ATable 这样的情形存在。这在 LAN 里面问题不大。而通过 Internet,因为 Band width 比较低的原因,一次性打开很多数据,速度非常慢,用户会等好久。

如果你的程式,已经考虑到这个问题了,每次打开 DBSERVER 都只取很少量 Data,比如是 select top 100 * from ATable 这样,那就没问题了。

然后,才考虑如何连接的问题,用 VPN 是正解。我还想到一个办法:PortMapping。

DataBase 的访问的原理是: Client ---TCP---》DBServer(on DBServer port)

Delphi 带的 Indy 里面,有一个 PortMapping 的元件。可以用它来写一个【APP SERVER】,简单说,就是它对外的 Port 是你自己定的比如 9876;然后它对内的 PORT 就是你的 DB SERVER 的 PORT。

这里需要做两个 APP SERVER,在 Client 端放一个,让它代表 DB Server,我们称它是 A;在 Server 端放一个,我们称它是 B。假设 DB Server 的 PORT 是 1433(SQL Server default port)。我们自己选用的 Port 是 9876

Client -- TCP --> A:1433 -- TPC --> B:9876 -- TCP --> DBServer:1433;

上述 A 和 B 都可以用 Indy 的元件来搞定。这样就全部是自己写的了,不需要去搞 VPN。
系統時間:2017-11-24 2:27:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!