Delphi DataSnap 的使用

DataSnap 2009是從Delphi2009開始提供的新的DataSnap,對原有DataSnap大副改進,雖然保留了原來的基於COM的方式,但默認是使用新的不基於COM的方式,這使得它成爲輕量級的、靈活的多層應用技術。這也爲未來的跨平臺提供了基礎。
Delphi2010繼續新的DataSnap,應該叫DataSnap 2009呢?仍是DataSnap 2010?命名不太明確。我更但願它叫DataSnap2.0。

1、新的DataSnap的第一種用法是服務器方法調用(server methods invoke),這個有嚮導,使用起來很簡單。
工具條上點擊New Items:



服務方法類的繼承,咱們就選默認的TDSServerModule,由於這個封裝得最全面,後面一個比一個簡單還須要咱們寫多餘的代碼。
ServerContainerUnit 容器內已經給咱們放置好了服務器端的控件,DSServerClass1.LifeCycle屬性有3個選項:Session、Server、 Invocation,咱們選默認的Session,這個使得咱們的ServerMethods類的實例的生命週期是一個鏈接會話。而Server是隻產 生一個實例服務於整個Server的運行期,咱們的ServerMethods類須要對多個線程同時訪問是安全的,也就是不能由於多線程訪問咱們的類而導 致出錯。Invocation是每次調用都產生一個實例,雖然節省內存,但顯然在大訪問量的狀況下效率低下。


若是咱們創建Service服務程序,在這個單元內還自動生成了控制DataSnap啓停的語句。
ServerMethodsUnit單元內已經爲咱們寫好了一個EchoString方法,咱們依樣畫葫蘆就好了。
運行這個服務器,點擊菜單Run,Run Without Debugging。
創建客戶端,生成一個普通窗體程序,放置一個TSQLConnection控件,設置它的Driver爲Datasnap,咱們就能夠勾選Connected屬性鏈接服務器了。
在TSQLConnection控件上點擊右鍵,選擇Generate DataSnap client classes,Delphi自動生成代理類,經過調用代理對象,咱們就能夠像調用本地方法同樣調用服務器上的方法。


2、新的DataSnap的第二種用法是IAppServer接口的應用,這可使新的DataSnap能夠像原來的舊的DataSnap同樣,直接用數據控件鏈接遠程服務器,讀取、編輯、更新數據。
⒈用DataSnap嚮導生成服務器框架程序,在ServerMethodsUnit單元的數據模塊窗體上,放上TSQLConnection、TSQLQuery、TDataSetProvide。


設置好它們的關聯,另外DataSetProvider1的Options要選中poAllowCommandText,以容許遠程客戶端發送命令。
咱們能夠看到,這些和舊的DataSnap的用法上基本上是同樣的。
2.設置客戶端。
   新創建一個VCL Forms程序,在窗體上放置TSQLConnection並設置鏈接剛纔的服務器。放置一個TDSProviderConnection,這個控件具備 和服務器上的TDataSetProvider對接的功能,設置它的SQLConnection屬性爲剛纔放置的SQLConnection1。另外要設 置它的ServerClassName屬性,這個比較關鍵,必須設置,不然打開數據集時會出現:Exception class EOleException with message 'Remote error: .AS_GetRecords method not found in the server method list'. 。這個屬性在Object Inspector內沒有下拉列表框,即便已經鏈接到服務器也沒有,必須手工輸入,這個或許是須要改進的地方。這裏咱們輸入嚮導自動生成的服務器的類 名:TServerMethods2。
而後放置TClientDataSet控件,設置它的RemoteServer屬性爲剛纔放置的 DSProviderConnection1,若是已經鏈接服務器了,就能夠在ProviderName屬性下拉框,選擇 DataSetProvider1,這個DataSetProvider1就是服務器那一端的那個DataSetProvider1。
之後再放置TDataSource、TDBGrid、TDBNavigator,並關聯,咱們就輕車熟路了。
放置一個按鈕,命名爲btnSave,雙擊寫事件:ClientDataSet1.ApplyUpdates(0);。
如圖:

這 裏我鏈接的BlackFish數據庫Employee,數據庫文件位於C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Demos\database\databases\BlackfishSQL\employee.jds。鏈接的Country 表。
咱們能夠運行客戶端,修改數據,點導航按鈕的保存後,再點擊btnSave保存到服務器數據庫。而後咱們用Data Explorer查看數據庫表,確實已經被修改了。數據庫

相關文章
相關標籤/搜索