2009-05-06 13 views
2

私はCOMに精通しておらず、そこにいる誰かが私が以下のものが正しいことを確認するのに役立つことを期待していました。ASP.NET、IIS、COM

2つの完全に別々のリクエスト(リクエスト1 &リクエスト2)がある場合、これは私のWebApplicationの2つの別々のインスタンスを作成します。今のところ退屈だ。

各インスタンスがSAME Webサービスに接続すると、Webサービスの2つのインスタンスもインスタンス化されます。

これは興味深いところです。

これらのWebサービスは、インプロセス(regsvr32経由で登録)COM-dll(Interop経由)を参照する.NETアセンブリを作成します。

私の図は正しいですか?

alt text

このCOM-DLLは、データベースに接続し、クエリを実行し、クライアントにJSONデータを返すウェブサービスにデータを返します。すべてのAJAXyを完了しました。

私が持っているもう1つの質問は、この大丈夫なパフォーマンスですか?なぜスケールしてはならないのか分かりません。ユーザーにデータを返すことができません。

答えて

4

論理パターンとしてOKです。しかし、いつものように。悪魔は詳細です。

サービスの実装におけるすべてのヒンジは、COMコンポーネント、特にスレッドのCOMコンポーネントの使用を使用します。 COMコンポーネントがスレッドセーフで、MTA(マルチスレッドアパートメント)を使用するようにマークされていればOKです。しかし、多くのCOMオブジェクトはSTAとしてマークされています(したがって、Single Threaded Apartmentを使用します)。

「これは大丈夫ですか?」との関連では、COMコンポーネントがSTAであればVB 6.0で作成された)スレッド解きのビットを行う必要があります(さもなければ、すべてのサービス要求が待ち行列に入り、パフォーマンスが負荷の下で悪化します)

この記事では、 ASMXサービス)...あなたはWCF Sを使用している場合

http://msdn.microsoft.com/en-us/magazine/cc163544.aspx

..andソリューション...

http://blogs.catalystss.com/blogs/scott_seely/archive/2007/09/27/203.aspx