0. はじめに
「DataSnap」(旧MIDAS)は、多層型のデータベースアプリケーションをRAD(Rapid Application Development)手法ですばやく構築するためのフレームワークです。DelphiやC++ Builderといった、エンバカデロ・テクノロジーズ製の開発ツールで利用することができます。もともとWin32ベースのWindowsネイティブアプリケーション開発を前提とした技術でしたが、前バージョンのDelphi 2009からはCOM依存性を排除して再構築され、.NETクライアントからも接続できるようになりました。最新版のDelphi 2010ではさらなる機能拡充によって、WindowsサービスやWebサービス、インターネットサーバーAPIといった新しいターゲットやHTTP認証などをサポートし、適用範囲がかなり広がりつつあります。
このデータベースを利用するさまざまなアプリケーションの構築に有益な「DataSnap」ですが、残念ながら紙面やWebにおいてまとまった日本語の技術資料がまだまだ少ないのが現状です。そのような状況の中、58ページに及ぶホワイトペーパー「Delphi 2010 DataSnap活用ガイド」(原著:BoB Swart氏)のダウンロード提供が2009年12月より開始され、無償で利用できるようになりました(個人情報の入力が必要)。
DataSnapによるクライアントサーバーアプリケーション作成の初歩から、.NETやインターネットプロトコル、コールバックを活用した手法までステップバイステップで詳細に解説した貴重な日本語のドキュメントです。本稿では、その一部を簡単に紹介したいと思います。
1. DataSnap の歴史 1.1 DataSnap サンプルデータ 2. DataSnap Windows ターゲット 2.1. DataSnap サーバーサンプル 2.1.1. マルチターゲットプロジェクトグループ . VCL フォーム 2.1.2. マルチターゲットプロジェクトグループ . コンソール 2.1.3. マルチターゲットプロジェクトグループ . Windows サービス 2.1.4. Server Methods 2.2. DataSnap クライアント 2.2.1. DataSnap クライアントクラス 2.3. DataSnap サーバーの配布 2.3.1. DataSnap クライアントの配布 3. DataSnap とデータベース 3.1. TSqlServerMethod 3.2. TDSProviderConnection 3.2.1. TDSProviderConnection クライアント 3.2.2 データベースの更新 3.2.3. 調停エラー 3.2.4. 調停エラーのデモ 3.3. DataSnap「データベース」の配布 3.4. 既存のリモートデータモジュールの再利用 4. DataSnap フィルター 4.1. ZlibCompression フィルター 4.2. Log フィルター 4.3. Encryption フィルター 5. DataSnap Web ターゲット 5.1. Web アプリケーションデバッカ用実行形式ターゲット 5.2. ISAPI ターゲット 5.3. サーバーメソッド - 配布とクライアント 6. REST とJSON 6.1. コールバック 7. DataSnap と.NET 7.1. WinForms クライアント 8. まとめ
1. DATASNAPの歴史
DataSnapは、元来、Delphi 3で「MIDAS」、Delphi 4ではMIDAS II、Delphi 5ではMIDAS IIIとして、TCP/IP、HTTP、(D)COMの接続機能におけるCOMベースのリモートデータモジュールを構築するとても強力な手段として提供されてきました。Delphi 6からは、「DataSnap」という名称に変更され、Delphi 2007までこのフレームワークはほぼそのままで提供されていました。
Delphi 2009で、DataSnapは再構築され、COM依存性の排除、リモートサーバーオブジェクトの軽量化が行われ、TCP/IPのみに限られていたクライアント接続が、Delphi Prism 2009では、.NETクライアントの構築もサポートしました。
Delphi 2010では、DataSnap 2009アーキテクチャー上に、このフレームワーク向けの2つのウィザードで新しいターゲット(VCLフォーム、Windowsサービス、コンソール、さらにWebターゲットとしてISAPI、CGIまたはWeb App Debugger)をサポートし、HTTP(S)トランスポートプロトコル、HTTP認証、クライアントコールバック機能、RESTとJSONのサポート、圧縮(組み込み済み)と暗号化をサポートするフィルタを含む、新しい拡張された機能が提供されました。
1.1 DATASNAPサンプルデータ
このホワイトペーパーでは、デモと使用例をあわせて演習していただくよう強くお勧めします。Delphiでは、DBX4、dbGo for ADOやその他のデータアクセステクノロジーなどにより、多くの異なったデータベースシステムをサポートしていますが、デモと使用例の演習を簡単にするために、以下のディレクトリ上のemployee.jdsデータベースと、BlackfishSQLを使用したDBX4をDBMSとして使用します。
Windows XPでは、employee.jdsデータベースは、
C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Demos\database\databases\BlackfishSQL
フォルダ内に、Windows Vista、または Windows 7では、
C:\Users\Public\Documents\RAD Studio\7.0\Demos\database\databases\BlackfishSQL
フォルダ内にあります。
画面ショットからお分かりのように、使用例の作成にはOSとしてWindows 7 Professionalを、そしてDataSnap ISAPIサーバーの配布にはWindows Server 2008 Web Editionを使用しています。