delphi三層架構(使用SATRDA改造,客戶端代碼不變)


  我們的delphi程序很多是以前開發的,采用典型的CS架構,由程序直接連接數據庫。現在需要改成在外網可以直接操作軟件。先把數據庫搬到了阿里雲上,測試發現直接連數據庫和VPN連接測試速度很慢,直連還容易掉線。服務器申請大的帶寬又太貴。把數據訪問和一些業務邏輯改寫成服務,由於軟件太大,開發和測試需要投入大量工作,也不現實。最后通過使用SATRDA解決了問題。

    SATRDA 服務器和客戶端通過HTTP實現通訊,只有需要數據交互的時候才與服務器通訊,解決了連接掉線的問題。通過提供ODBC驅動的方式,使得客戶端代碼不需要改變,就實現了兩層到三層的轉換。

SATRDA使用過程

1. 首先打開server/config目錄下的dbconfig文件,

 

[html]  view plain  copy
 
  1. {  
  2.     "mssql": {  
  3.         "DBType": "odbc",  
  4.         "Provider": "driver=sql server;server=127.0.0.1;uid=sa;pwd=sql;database=test"  
  5.     },  
  6.     "orcl": {  
  7.         "DBType": "odbc",  
  8.         "Provider": "driver=Oracle in OraDb10g_home1;SERVER=ORCL;uid=system;pwd=sql;EXC=T"  
  9.     }  
  10. }  


修改數據庫連接設置。其中  mssql是客戶端連接的名字,可以隨意取,DBType為odbc是固定的。server對應數據庫服務名,uid為用戶名,pwd為密碼,database為數據庫名,

 

2. 運行satserver.exe

3. 修改連接字符串如下。

 

[csharp]  view plain  copy
 
  1. procedure TForm2.FormCreate(Sender: TObject);  
  2. var  
  3.   server : string;  
  4.   db:string;  
  5. begin  
  6.   server := '127.0.0.1:5555';  
  7.   db := 'mssql';<span style="white-space:pre">        </span>//mssql就是上面配置的名稱  
  8.   
  9. <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 + ';"';  
  10.   ADOConnection1.CursorLocation := clUseClient;   //注意需要設置為clUseClient</span>  
  11.   ADOStoredProc1.Connection := ADOConnection1;  
  12.   adoquery1.Connection := ADOConnection1;  
  13.   datasource1.DataSet := adoquery1;  
  14.   dbgrid1.DataSource := datasource1;  
  15.   
  16. end;  


完成后,其它操作都和原來一樣。速度對比:

 

 

下載地址:

http://download.csdn.net/detail/pcwe2002/9620563

QQ群:345559891  (交流、下載最新版本)

http://blog.csdn.net/pcwe2002/article/details/52527782


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM