我們的delphi程序很多是以前開發的,采用典型的CS架構,由程序直接連接數據庫。現在需要改成在外網可以直接操作軟件。先把數據庫搬到了阿里雲上,測試發現直接連數據庫和VPN連接測試速度很慢,直連還容易掉線。服務器申請大的帶寬又太貴。把數據訪問和一些業務邏輯改寫成服務,由於軟件太大,開發和測試需要投入大量工作,也不現實。最后通過使用SATRDA解決了問題。
SATRDA 服務器和客戶端通過HTTP實現通訊,只有需要數據交互的時候才與服務器通訊,解決了連接掉線的問題。通過提供ODBC驅動的方式,使得客戶端代碼不需要改變,就實現了兩層到三層的轉換。
SATRDA使用過程
1. 首先打開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是客戶端連接的名字,可以隨意取,DBType為odbc是固定的。server對應數據庫服務名,uid為用戶名,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就是上面配置的名稱
- <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;
完成后,其它操作都和原來一樣。速度對比:
下載地址:
http://download.csdn.net/detail/pcwe2002/9620563
QQ群:345559891 (交流、下載最新版本)
http://blog.csdn.net/pcwe2002/article/details/52527782