複習上一篇的内容:
1. 一個典型的DataSnap伺服器至少需要三個控件:
TDSServer: DataSnap的邏輯核心控件,控制伺服器的運作。
TDSServerClass: DataSnap服務端服務導出控件,通過OnGetClass事件來導出服務端的類及方法供用戶端的遠端調用。
作為服務端導出給用戶端遠端調用的類需要滿足以下兩個條件:
從TComponent類派生。
需要有{$METHODINFOON}指令。
一個通訊控件:采用TCP的話,選用TDSTCPServerTransport控件,采用HTTP的話,選用IDSHTTPService控件。
2. 用戶端利用一個TSQLConnection控件,Driver設定為Datasnap後,點右鍵就可以從服務端導入可以遠端調用的類及方法。
這一篇較長的描述如何利用delphi提供的向導自動建立一個DataSnap伺服器。
File > New > Other > DelphiProjects [or C++Builder Projects] > DataSnap Server > DataSnap Server

1. 三種選擇:
- Forms Application : 标準的Forms類型V應用程式。
- Console Application: 工作台應用程式。
- Service Application: 服務類型的應用程式。
這裡選擇第一種Forms Application
2. 二種選擇:
- VCL application : 傳統的VCL架構
- FireMonkey application: 跨平台的FireMonkey架構
這裡選擇VCL application,因為DataSnap服務端通常運作在Windows伺服器上,是以選擇VCL架構即可。
3. 這裡包括通訊協定、遠端調用是否需要授權。。。。等等,這裡先按預設的設定。
- Protocols:服務端和用戶端之間的通訊協定。這裡可以多選,表示服務端同時支援多種通訊協定。
- Authentication:授權或驗證。如果勾選,表示用戶端連接配接到服務端的時候需要身份驗證。帶有Authentication的服務端會增加一個驗證控件TDSAuthenticationManager。
- Server Methods Class:伺服器方法類,由服務端導出給用戶端遠端調用。通常服務端要實作的供用戶端遠端調用的函數及方法都會放在這個類裡面,再通過TDSServerClass的OnGetClass事件導出給用戶端遠端調用。
- Filters:在用戶端和服務端之間過濾(加密或是壓縮)資料。勾選後,通常會在TDSTCPServerTransport和IDSHTTPService控件的Filters屬性中增加加密和壓縮的項。注意除了設定服務端TDSTCPServerTransport和IDSHTTPService控件Filters屬性外,也需要在用戶端指定一個相應的過濾器。
- JavaScript Files:在生成DataSnap REST Server的時候,生成JavaScript接口檔案,供用戶端調用使用。
- Mobile Connectors:提供移動端調用服務端導出類的一些接口檔案。
4. 選擇TCP的通訊端口,按預設設定。
5. 用于遠端調用的伺服器端函數方法所在類的實作方式(繼承方式,從不同的祖先類繼承,具備了不同的功能)。
- TComponnet:從TComponent類繼承,所有導出給用戶端使用的功能都需要進一步具體實作,因為TComponent類幾乎不提供什麼功能。
- TDataMoudle: 從TDataMoudle類繼承,可以放入非可視化控件,比如資料庫通路控件。這樣,服務端就可以直接利用這些控件通路資料庫伺服器。但是,通路資料庫的連接配接,資料和資料集不同直接導出給用戶端使用,需要服務端進一步實行将資料傳輸給用戶端使用。
- TDSServerModule: 從TDSServerModule類繼承,它既包含了TDataModule的功能,又可以直接将與資料庫伺服器的連接配接和資料集直接暴露給用戶端調用,用戶端可以非常友善的通過DataSnap服務端直接通路資料庫伺服器。這個方式廣泛應用于用戶端是移動端的應用中,因為通路各種資料庫需要資料庫用戶端的驅動或是函數,移動端通常都沒有或是安裝不了這些資料庫用戶端驅動,是以将這些資料庫用戶端驅動都安裝到DataSnap服務端上去,由DataSnap服務端來實作資料的通路和存取,而用戶端則直接使用DataSnap服務端導出的資料庫連接配接和資料集來通路和存取資料庫,同時用戶端并不需要安轉各種資料庫的用戶端驅動。
6. 選擇Finish,這樣一個DataSnapServer就建立了。