2

私は、同じ WebSite/WebApplication 内にある WebService を消費することについて、何がより速く/最も良いかについて心配しています。

同じ WebSite に 20 ページと 1 つの WebService があるとします。

各ページで、WebService からすべてを消費する必要があります...

しかし、私の懸念は、それがどのように消費されるべきかということです。同じWebサイトにあるWebServiceのWeb参照を追加し、そのWebserviceのプロキシ生成ですべてを使用する必要があります..または、通常のクラスのようにWebServiceを直接インスタンス化し、メソッドを使用する必要がありますか?

ベスト プラクティスは、SOA 仕様の webService のように使用し、ソリューション内の別の Web サイトに WebService を配置することです。

しかし、私の推論では、WebService を使用するには、このプロトコルを介して要求を行う http プロトコルが必要であり、Web サービスは応答をシリアル化する必要があります...

私が推測する重要な点は、My WebService の webmethods が複数のレコード/情報/データを返す可能性があるため、シリアル化の手順が問題またはパフォーマンスの問題になる可能性があることです。

これを行う最善の方法を探しています。

WebService を別のサイトに移動して、自分のページで使用する必要がありますか? パフォーマンスに影響しますが?または私はすべきではありませんか?はいの場合、いくらですか?それは費用がかかります ?または影響は重要ではありませんか?

WebService を移動する必要がある場合、... 192.168.1.1 の代わりに http:// localhost .. のように使用するか、localhost よりも Web ドメインを使用すると影響がありますか? それは同じですか、それとも何かに影響しますか?

よろしくお願いします。

4

1 に答える 1

2

しかし、私の推論によれば、Webサービスを使用するには、このプロトコルを介して要求を行うhttpプロトコルが必要であり、Webサービスは応答をシリアル化します...

あなたの推論は絶対に正しいです。同じプロジェクト内にいる場合は、無駄なHTTPリクエストでCPUサイクルを無駄にする必要はありません。Webサービスメソッドがすでに使用しているのと同じリポジトリレイヤーを直接呼び出すことができます。.NET以外のクライアントでWebサービスを利用する必要がある場合は、相互運用可能な形式(SOAPなど)を使用してWebサービスを公開できます。それ以外の場合は、実際には必要ないと思います。実際、そもそもなぜWebサービスを開発したのですか?将来の消費者に期待していたと思いますか?経験則では、再利用可能なサービスドメインロジックを常にサービスレイヤーにカプセル化し、それを使用する必要があるユーザーに応じて、この機能を実装したアセンブリを直接使用するか(.NETクライアントについて話している場合)、相互運用性が必要です」

ただし、正確な数値に関心がある場合は、負荷テストを実行して、消費型Webアプリケーション内から直接.NETメソッドを呼び出した場合と、相互運用可能なプロトコルを使用したHTTPリクエストとの間の応答時間を比較することを躊躇しないでください。

備考:WebReferenceクライアントは現在非推奨です。ネットワーク接続全体でサービスを呼び出す場合は、代わりにServiceReferenceを使用する必要があります。

于 2012-07-03T22:24:37.203 に答える