我們的delphi程序很多是以前開(kāi)發(fā)的,采用典型的CS架構,由程序直接連接數據庫?,F在需要改成在外網(wǎng)可以直接操作軟件。先把數據庫搬到了阿里云上,測試發(fā)現直接連數據庫和VPN連接測試速度很慢,直連還容易掉線(xiàn)。服務(wù)器申請大的帶寬又太貴。把數據訪(fǎng)問(wèn)和一些業(yè)務(wù)邏輯改寫(xiě)成服務(wù),由于軟件太大,開(kāi)發(fā)和測試需要投入大量工作,也不現實(shí)。最后通過(guò)使用SATRDA解決了問(wèn)題。
SATRDA 服務(wù)器和客戶(hù)端通過(guò)HTTP實(shí)現通訊,只有需要數據交互的時(shí)候才與服務(wù)器通訊,解決了連接掉線(xiàn)的問(wèn)題。通過(guò)提供ODBC驅動(dòng)的方式,使得客戶(hù)端代碼不需要改變,就實(shí)現了兩層到三層的轉換。
SATRDA使用過(guò)程
1. 首先打開(kāi)server/config目錄下的dbconfig文件,
- {
- "mssql": {
- "DBType": "odbc",
- "Provider": "driver=sql server;server=127.0.0.1;uid=sa;pwd=sql;database=test"
- },
- "orcl": {
- "DBType": "odbc",
- "Provider": "driver=Oracle in OraDb10g_home1;SERVER=ORCL;uid=system;pwd=sql;EXC=T"
- }
- }
修改數據庫連接設置。其中 mssql是客戶(hù)端連接的名字,可以隨意取,DBType為odbc是固定的。server對應數據庫服務(wù)名,uid為用戶(hù)名,pwd為密碼,database為數據庫名,
2. 運行satserver.exe
3. 修改連接字符串如下。
- procedure TForm2.FormCreate(Sender: TObject);
- var
- server : string;
- db:string;
- begin
- server := '127.0.0.1:5555';
- db := 'mssql';<span style="white-space:pre"> </span>//mssql就是上面配置的名稱(chēng)
-
- <span style="color:#ff0000;"> ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;Password=sql;User ID=sa;Extended Properties="driver=Smart ODBC Driver;server=' + server + ';DB_NAME=' + db + ';"';
- ADOConnection1.CursorLocation := clUseClient; //注意需要設置為clUseClient</span>
- ADOStoredProc1.Connection := ADOConnection1;
- adoquery1.Connection := ADOConnection1;
- datasource1.DataSet := adoquery1;
- dbgrid1.DataSource := datasource1;
-
- end;
完成后,其它操作都和原來(lái)一樣。速度對比:
下載地址:
http://download.csdn.net/detail/pcwe2002/9620563
QQ群:345559891 (交流、下載最新版本)
http://blog.csdn.net/pcwe2002/article/details/52527782