1

Delphi (XE2) でデータベース サーバーに接続するには、ソケット、データ スナップ、Web サービス、リモート データ モジュール (¿?)、dbExpress、および UniDAC のような他のサードパーティなど、さまざまな方法があることを知っています。私は通常UniDACを使用していますが、いつ、どのように適切に使用するかを知りたいです。どうやら DataSnap は Delphi の主力製品です。これらの質問に答える便利なチュートリアルは見つかりませんでした。では、Win32 アプリの場合、セキュリティ、柔軟性、およびスケーラビリティを考慮して、クライアント アプリを開発するための推奨オプションはどれでしょうか?

データベース アクセスの変更に関して、クライアントの Win32 アプリに対して透過的に行う方法はありますか? つまり、100 個のクライアント アプリを配布していて、データベース アクセス用のパスワードを変更したい場合、すべてのクライアント アプリを更新する必要があるのは問題です。

クライアント アプリ用のデータベースへの唯一の接続を持つことは推奨されますか?

DBExpress (Delphi XE2 にバンドルされている) と AnyDAC をテストして、リモートの MySQL データベースに接続しようとしましたが、VendorLib に問題があります。テストしたいすべての RDBMS をインストールせずにこれを解決する便利な方法はありますか?

DBExpress は無料ですか、それとも機能を追加するには料金を支払う必要がありますか?

DataSnap やミドルウェア アプリなどについて学ぶのに非常に優れた本を推薦してくれる人はいますか?

前もって感謝します。

4

2 に答える 2

1

複数の分散クライアントがある場合は、サーバー側で単一の永続データ接続が実行され、各クライアントがそのサーバー アプリケーションに接続するだけの多層ソリューション (DataSnap や DataAbstract など) を使用することをお勧めします。要求データ。

DataSnap は、ソケット化、REST など、複数の異なるクライアント/サーバー接続ソリューションを提供するため、システムに最適なものを決定するのはあなた次第です。

DataAbstract は、(THE ではないにしても) 市場で最も人気のある多層データ アプリケーション ソリューションの 1 つであるように思われます。また、多くの開発者がさまざまな理由で DataAbstract を信頼していることを知っています (セキュリティはその 1 つ、使いやすさは別の理由です)。

クライアント アプリケーションがデータベースへの直接接続を必要とする場合、それは間違っていると常に主張してきました。

DataSnap の詳細については、最近の CodeRage イベントで興味深いセッションがいくつかありました。これらのセッションは、 Embarcadero の CodeCentral サブサイトで (無料で) ダウンロード/視聴できます。

書籍に関しては、Marco Cantú の Delphi ハンドブック (特に、XE2 用の DataSnap に関して今でも大部分が適用される XE の書籍) が最善の策です。

DataSnap は、Delphi の Enterprise、Ultimate、および Architect エディションにのみ同梱されていることに注意してください。Pro または Starter では使用できません。

それでも、独自のサーバー層でいつでも ODBC を使用して任意の ODBC データベース (MySQL、MSSQL、Oracle を含む... 「過去からの爆発」を楽しみたい場合は MS Access も含む) に接続してから、任意のネットワークを使用できます。好みのソケット ソリューション (Delphi [すべてのエディション] に標準で付属する Indy など) を使用して、クライアント アプリケーションをサーバー層にリンクします。TADOConnection、TADOQueryなどを見てください。

この情報がお役に立てば幸いです。

于 2011-10-25T17:39:31.237 に答える
0

実際のアプリケーションのニーズに応じて、2 層 (データベースとファット クライアント) または n 層 (データベース、アプリケーション サーバー、シン クライアント) ソリューションのいずれかを選択する必要があります。2 層ソリューションは開発が簡単で、n 層ソリューションはより複雑です。

dbExpress、UniDAC、ecc。db アクセス ライブラリです。Datasnap、Web サービスなどは、リモート データへのアクセスにも使用できるRPC (リモート プロシージャ コール) フレームワークです(サーバー側で db アクセス ライブラリを使用)。ソケットは、非常に低レベルの通信デバイスです。

そのため、これらのコンポーネントのスタックを使用して、データベース アクセス レイヤーを構築する必要があります。たとえば、dbExpress を使用して DB にアクセスし、Datasnap を中間層として使用できます。

セキュリティの観点からすると、Datasnap は非常に安全ではありませんが、DCOM の実装は、使用されるアルゴリズムとパスワード/証明書の管理のためです。データベースのパスワードをクライアントに保存している場合、とにかく大きなセキュリティ上の問題があります。ユーザーアカウントセキュリティを使用してデータベースに接続できるようにするオペレーティングシステム認証などの方法があります。データベースへの単一の「接続」を使用すると、データベースのアクセス制御がその接続ユーザーの権限に制限されるため、セキュリティの一部 (または多く) が失われる可能性があります。また、監査が失われる可能性があります。

新しい層を導入するときは、スケーラビリティを設計し、その層に適切にコーディングする必要があります。データベース サーバーはスケーラブルになるように設計およびコーディングされているため、不適切な中間層がボトルネックになる可能性があります。

MySQL は通常、接続に使用するライブラリについてうるさいですが、他のデータベースはそれほど多くありません。

于 2011-12-22T12:06:58.853 に答える