はじめに
Delphi は Professional 版 (相当) ばかり使ってきたので、DataSnap については全く知りませんでした。
関連技術を調べたので、ついでに DataSnap についても調べてみたいと思ったのが、本記事を書くきっかけとなりました。但し、実際に試す事はしていない (できていない) ので 謳い文句 を鵜呑みにしています。
See also:
DataSnap とは?
DataSnap は元々、Delphi 3 (Client / Server 版) に追加された MIDAS (Multi-tier Distributed Application Services) というフレームワークです。
異なる種類の分散アーキテクチャを統合 (抽象化) するテクノロジーです。
- VisiBroker を使用した CORBA ベースの分散システム
- DCOM を使用した Windows NT ベースの分散システム
- TCP/IP Socket を使用した単純な3層システム
- HTTP/SSL での分散システム
- WebMIDAS による XML を利用したブラウザクライアント
...今の所は。
MIDAS (Multi-tier Distributed Application Services)
先述の通り、Delphi 3 (Client / Server 版) で追加されたフレームワークです。分散アーキテクチャの抽象化を行っており、アプリケーションサーバーの種類を意識せずに利用する事が可能となっています 1。
| バージョン | MIDAS | 説明 |
|---|---|---|
| Delphi 3 | MIDAS | 実験的 (過度に抽象化してしまった?) |
| Delphi 4 | MIDAS II | RemoteDataModule が追加された TDCOMConnection が追加された (DCOM のサポート) |
| Delphi 5 | MIDAS III | MidasLib が追加された TClientDataSet (MyBase) が Professional 版でも利用可能になった TOLEnterpriseConnection 等が削除された (コンポーネントパレットで非表示になっている) |
midas.dll の配布には配布ライセンスが必要です (有償)。
See also:
- MIDAS のライセンスに関する FAQ (Inprise: Internet Archive)
- Delphi 4 の MIDAS ライセンスについて (Inprise: Internet Archive)
DataSnap
MIDAS が DataSnap と名前を変えたのは Delphi 6 からです。3 層アプリケーション構築フレームワークとして再ブランド化された格好です。
| バージョン | DataSnap | 説明 |
|---|---|---|
| Delphi 6 | DataSnap | 再ブランド化 |
| Delphi 7 | DataSnap | TCORBAConnection が廃止された |
Delphi 7 以降、CORBA 関連が廃止されています。
midas.dll の配布には配布ライセンスが必要です (有償)。
DataSnap 2009
(D)COM 関連の技術を排除した新しい DataSnap です。便宜的に DataSnap 2009 と呼ぶ事にします。
新しい DataSnap はアプリケーションサーバーを作るためのフレームワークです ([DataSnap Server] カテゴリ)。
古いタイプの DataSnap も残ってはいます ([DataSnap Client] カテゴリ)。
データセット系としては DBX4 (dbExpress) 関連の TSqlServerMethod が追加されています。FireDAC 版 TSqlServerMethod に相当するものはありません。
| バージョン | DataSnap | 説明 |
|---|---|---|
| Delphi 2009 | DataSnap | (D)COM 関連の技術を排除 DataSnap RPC サーバーを作れるようになった |
| Delphi 2010 | DataSnap | DataSnap HTTP サーバー (WebBroker 統合) で作れるようになった DataSnap Server ウィザードが追加された |
| Delphi XE | DataSnap | DataSnap REST サーバー (WebBroker 統合) で作れるようになった |
| Delphi XE5 | DataSnap | 関連機能として REST クライアントライブラリが追加された (Professional でも利用可能) |
「DataSnap = MIDAS」という事だけを覚えていると、データベース関連フレームワークのように思いがちですが、DataSnap 2009 以降ではアプリケーションサーバーフレームワークという側面が強くなっています。
| DataSnap | 説明 |
|---|---|
| MIDAS | 分散アーキテクチャの抽象化 |
| DataSnap (旧) | 3 層アプリケーション構築フレームワーク |
| DataSnap 2009 | アプリケーションサーバー |
現在 DataSnap と呼ばれているものはこのような関係になっています。3 層アプリケーションのサーバー側もクライアント側も、すべて Delphi で完結できるようになりました 2。
| カテゴリ | DataSnap | 説明 |
|---|---|---|
| DataSnap Client | DataSnap (旧) | 3 層アプリケーション構築フレームワーク |
| DataSnap Server | DataSnap 2009 | アプリケーションサーバー |
DataSnap のアプリケーションサーバーへの転換 (拡充) は Windows Vista での セッション 0 の分離 (Session 0 Isolation) の影響が大きいと思われます。セッション 0 の分離により GUI アプリケーションとの連携が困難になったからです。
DataSnap 2009 以降、midas.dll の配布ライセンスが不要となっており、DataSnap 関連フレームワークはライセンスフリーで利用できるようになっています。
See also:
- The New DataSnap in Delphi 2009 (Embarcadero)
- Delphi 2010 DataSnap 活用ガイド (Embarcadero)
- 詳説!! DataSnap 2010 (Embarcadero)
- REST Servers in Delphi XE Using DataSnap (Embarcadero)
- 【Delphi】REST クライアントライブラリを使う (Qiita)
関連製品
OLEnterprise
元々は Open Environment Corporation 社が作った OLE を使った分散オブジェクトプラットフォーム。Open Environment Corporation 社は 1996 年に Borland に買収されている。
OLEnterprise は 4 つのコンポーネントから構成される。
-
Object Explorer
クライアントシステムやサーバーシステムにあるオブジェクトをブラウズしたりアクセスするためのユーザーインターフェース。 -
Business Object Broker
サーバーオブジェクトを検出するための中心的な役割を果たす。ディレクトリサービス。 -
Object Agent
クライアントシステムによって使用される。 -
Object Factory
サーバーシステムによって使用される。
Delphi 3 および 4 の Client \ Server 版以上の SKU に OLEnterprise がバンドルされていた。
OLEnterprise は「独自 DCOM」 というのが近い表現かもしれません。
OLEnterprise は DCOM が登場する前に独自に作られた分散 OLE 技術でしたが、1996 年の DCOM の登場で存在意義を失ったため、Delphi 4 で MIDAS に TDCOMConnection が追加され、Delphi 5 で TOLEnterpriseConnection が削除されたのだと考えられます。
See also:
- Open Environment Corporation (Wikipedia: en)
- Delphi 3 を使用したアプリケーションサーバーの構築 (citforum.ru)
- Borland MIDAS - 多層情報システムの信頼性と効率性を高めるためのツール (cs.vsu.ru)
VisiBroker
元々は Visigenic 社が作った CORBA 準拠のオブジェクトリクエストブローカー (ORB)。
Visigenic 社は 1998 年、Borland に買収されており、その際に社名が Inprise へと変更になっている。
Delphi 4~6 までの Client \ Server 版 または Enterprise 版以上の SKU に VisiBroker がバンドルされていた。
VisiBroker は Micro Focus 社、Open Text 社 へと移譲され、最終的な権利者は Rocket Software 社である模様。
See also:
Borland/Inprise Application Server
CORBA 準拠のアプリケーションサーバー。
- Inprise Application Server (Inprise: Internet Archive)
- インプライズ、開発者向けカンファレンスでアプリケーションサーバー最新版『Inprise Application Server 4』を発表 (ASCII.JP)
Borland Enterprise Server
CORBA 準拠のアプリケーションサーバー。
RAD Server
RAD Serverは、サービスベースのアプリケーションを迅速に構築・実装するためのアプリケーションプラットフォーム。
PAServer
PAServer は DataSnap の技術を使って作られている。
おわりに
DataSnap (MIDAS) は古くからあるものですが、Delphi は Professional 版 (相当) ばかり使ってきたので縁がなく、DataSnap (MIDAS) というワードが出る度に「あぁ、Enterprise 以上か」と聞き流していました。
そんな訳で、MyBase が Professional 版で使えるのを知ったのも遅かったですし、REST クライアントライブラリがProfessional 版で使えるのを知ったのも割と後になってからでした。ちゃんと機能一覧は確認すべきですね。
色々調べた今では「振り回されずに済んだな」という思いと「これは便利なのでは?」という思いが半々ですね...(^^;A
本記事のスクリーンショットは Delphi 13.1 Florence Architect Trial のものです。
See also:
- Unleash the power of Delphi with Delphi Labs - DataSnap (Embarcadero)
- MyBaseを試してみる。(Delphi-fan)
- [Delphi] 複数バージョンのmidasの問題点と対処方法 (くろねこ研究所)
- [Delphi] MidasLibの不具合 (くろねこ研究所)
- DataSnapを使用した3層アプリケーション構築技法 (ミガロ)
- Delphi 10.2 Tokyo Enterprise と RAD Server で REST JSON な Web API を作る (Qiita: @kazinoue)
- Delphi/C++BuilderでREST APIをカンタンに実装できるRAD ServerでJSONを返す方法を3種類作ってみる(Qiita: @kazinoue)
- 公式・準公式の Delphi 関連書籍を読んでみる (Qiita)
- Borland Press の Delphi 関連書籍を読んでみる (Qiita)
- 『Delphi マガジン』について (Qiita)






