私は確信が持てません - Web サービスの上にフロントエンド アプリを構築できるさまざまなコンシューマーにデータを公開することは有用かもしれないと思います。
Webサービスを使用してデータアクセスレイヤーをラップするのが悪い考えである場合のサンプルを誰かが提供できますか?
私は確信が持てません - Web サービスの上にフロントエンド アプリを構築できるさまざまなコンシューマーにデータを公開することは有用かもしれないと思います。
Webサービスを使用してデータアクセスレイヤーをラップするのが悪い考えである場合のサンプルを誰かが提供できますか?
「データアクセス層」として何を定義するかによって、それを行う正当な理由がある場合とない場合があります。従来、Web サービスや RPC レイヤーなどの分散 API は、次のレイヤーに存在します。これには次の利点があります。
DB への密結合がなければ、このレイヤーを調整して、分散アクセスでうまく機能させることができます。たとえば、ラウンドトリップを最小限に抑えるように API を編成します。
API に追加の検証レイヤーを配置できます。生データ アクセス層により、システムに不正なデータが書き込まれる可能性があります。このため、信頼できないクライアントに公開するのは良くありません。
データ アクセス レイヤーでは不可能な方法で、アプリケーション レベルのセキュリティをサービス レイヤーに配置できます。
ポイント 1 と 2 は、中間層でビジネス ルールの検証を再利用できることを意味します。
CRUD 操作用の単純な API を公開することは、データベース サーバーに直接接続することによっても実現できます。そのため、この上にある Web サービス レイヤーは、DBMS がまだ提供していないものを提供することはありません。一部の DB エンジンは、HTTP を介してクエリを直接処理できるため、ほとんどのファイアウォールをトンネリングできます。ただし、これのセキュリティ面は、これを公共のインターネットに公開したくないことをほぼ確実に意味します。
理論的には、Web サービスを介して CRUD 操作 (「データ アクセス レイヤー」の意味であると私が想定しているもの) を公開することはできますが、これを行うべきではないかなりの理由があり、そうするメリットは比較的少ないです。
今日の世界での主な推進力は、クラウドまたは SaaS コンピューティングに向かっています。
それを念頭に置いて、SalesForce (CRM)、Google、Parature (ヘルプデスク) などを含む多くの主要なアプリケーションが、Web サービスを介してアプリケーションを公開しています。
これは単なる良いアイデアではありません。アプリケーションを環境に統合しようとしている企業にアプリケーションを真剣に受け止めてもらう唯一の方法です。
とは言っても、Web サービスを利用して DAL をラップするときに考えられる唯一の例は、1 つのアプリケーションだけが DAL を呼び出し、それが開発者の直接の制御下にある場合です。これは、Web サービスの境界を越えてデータをシリアル化/逆シリアル化するために支払われるパフォーマンス ペナルティによるものです。
.NET では、WCF が Chris が言及したパフォーマンス ヒットを回避する方法を提供しているようです。WCF を使用すると、データ アクセス コンポーネントを独自のアプリケーションのインプロセスで実行できるだけでなく、Web サービスとして簡単に公開することもできます。(免責事項:私は実際にこれを実装していません。見ただけです。)
セキュリティなしで Web サービスを介して API 全体を公開している場合、それは悪い考えかもしれません。
しかし、必要な部分を安全な読み取り専用の方法で公開し、顧客がそれを気に入るなら、それは確かに良いことです。
経営陣を説得する必要がある場合は、「Google がやります」と覚えておいてください。