2

SOAP Web サービスを介して CRUD 操作を公開するのは悪い考えですか? 私の本能は、データベース呼び出しのオーバーヘッドを実行するオーバーヘッドが巨大になる可能性があるため、どれが重要であるかを教えてくれます。私は、この (アンチ) パターンの賛成/反対のドキュメントを見つけるのに苦労しているので、誰かが私にいくつかのドキュメントを指摘したり、この問題について意見を持ったりできるかどうか疑問に思っていました.

また、soap サービスを設計する際のベスト プラクティス (および/またはその効果に関するドキュメント) を知っている人がいれば、それは素晴らしいことです。

Web サービスがどのように見えるかの例を次に示します。

  • 作成
  • 消去
  • 実行する
  • フェッチ
  • アップデート

そして、実装は次のようになります。

[WebMethod]
public byte[] Fetch(byte[] requestData)
{
    SelectRequest request = (SelectRequest)Deserialize(requestData);

    DbManager crudManager = new DbManager();
    object result = crudManager.Select(request.ObjectType, request.Criteria);

    return Serialize(result);
}
4

4 に答える 4

3

SOAP を RESTful な方法で使用したい場合は、興味深い標準WS-Transferがあります。疎結合の CRUD エンドポイントを提供します。そこからメッセージを検査し、それに応じてエンティティに対処します。

次に、WS-Secure、WS-Reliable メッセージングなど、必要なものを上に重ねることができます。

于 2008-10-09T14:20:56.310 に答える
2

CRUD操作を匿名のパブリック「ユーザー」に公開するSOAPサービスを公開することは、特に悪い考えだと思います。ただし、これらの警告の一方または両方を制限できる場合は、何も問題はありません(さらに、このようなサービスを何度も実装しています)。

  • 操作を実行するために必要なメソッドパラメータに加えて、リクエストを処理する前に発信者を実際に認証するユーザー名とパスワードのパラメータを要求できます。認証に失敗すると、SOAP例外が返されます。特にパラノイアの場合は、オプションでSSL経由でサービスを実行できます

  • IPに基づいたリクエストフィルターの送受信を処理するサーバーソリューションを使用して、承認されたアドレスのリストからのリクエストを許可することができます。

はい、(データベースへの直接アクセスを公開するのではなく)SOAPを介してリクエストを実行することにはオーバーヘッドがあります。つまり、リクエストをHTTPリクエストにラップし、ソケットを開いて送信する処理時間です(受信側とその逆)。応答について)-しかし、それは利点があります。

Java(NetBeans IDEを介して)と.Net(VSを介して)はどちらも、プロジェクト/ソリューションへのWebサービスの消費をサポートします-これの最大の利点は、リモートサービス上のオブジェクト/構造が消費アプリケーションでネイティブオブジェクトに自動的に変換されることです、これは非常に便利です。

于 2008-10-09T14:12:20.413 に答える
2

Web 上で CRUD を実行したいだけなら、WS* を使用する代わりに REST を実行するためのさまざまなテクノロジーを検討します。 SQL Data Services (以前の Project Astoria) は、実際には良い代替手段かもしれません。

于 2008-10-09T14:12:40.880 に答える
0

SOAPWebサービス自体を介してCRUD操作を公開することに何の問題もありません。

あなたは明らかにそのようなサービスのかなりの数の例を見つけるでしょう。

ただし、特定の要件によっては、SOAPを使用するとオーバーヘッドが大きすぎる場合や、JSON/AJAXなどを使用した方がよい場合があります。

ですから、あなたがあなたの特定の詳細について追加の詳細を提供しない限り、あなたの質問に対する良い答えはないと私は信じています。

于 2008-10-09T14:07:05.697 に答える