[FIX パフォーマンス低下、ServicedComponent のメソッドをコールする場合

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

327782
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
COM + で構成されている Microsoft .NET コンポーネントへのリモートの .NET アプリケーション ドメインからの呼び出しを行ったとき、呼び出しを開始したアプリケーション ドメインでのパフォーマンスが低下があります。 この問題は、COM + サーバー アプリケーションでホストされている ServicedComponent のメソッドを起動する場合にのみ発生します。
原因
マネージ アプリケーションは COM + サーバー アプリケーションでホストされている ServicedComponent へのメソッド呼び出しをディスパッチ、ときに、.NET Framework メソッドのパラメーターをマーシャリングする必要があります。 内部のマーシャリング レイヤーをパフォーマンスを向上させるのにはキャッシュの MemoryStream オブジェクトをマーシャリングし、パラメーターのマーシャリングを解除使用します。 ただし、このマーシャラーは常に完全な MemoryStream バッファーを最低限必要なデータだけを渡すの代わりに、すべての呼び出しの使用します。

マーシャリングされたストリームを必要以上になることができます、ため一度に大きなパラメーターを使用するアプリケーション小さなパラメーターを後で使用する通話のパフォーマンスの低下があります。
解決方法
マイクロソフトでは、現在この問題を修正する修正プログラムを提供中ですが、修正プログラムはこの資料に記載された問題のみを修正することを目的としています。 障害があったコンピュータに対してのみ適用することを推奨します。 この修正プログラムは、今後さらにテストを行う場合があります。 この問題で深刻な影響を受けていない場合は、この修正プログラムを含む次の .NET Framework Service Pack まで待つことを推奨します。

この問題を直ちに解決、する問い合わせのマイクロソフト製品サポート サービスに、修正プログラムを入手します。 Microsoft Product Support Services の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください:: 特別な場合は、料金がサポート通常発生する可能性があります取り消せません Microsoft Support 担当者により、特定の更新は問題が解決される場合。 通常のサポート料金が追加の質問および問題の特定のアップデートの対象とならない問題について適用されます。

修正プログラム (英語版) のファイル属性は次表のとおりです。 これらのファイルの日時に協定時刻 (UTC) 記載します。 各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。 UTC および現地時間の時差を確認するには、コントロール パネル]、日付と時刻ツールの [ タイム ゾーン ] タブを使用してください。
   Date          Time    Version        Size      File name   ----------------------------------------------------------------------------------   10-Aug-2002   09:51   1.0.3705.302   208,896   System.EnterpriseServices.dll   09-Aug-2002   23:23   1.0.3705.302    47,104   System.EnterpriseServices.Thunk.dll				

よう、Microsoft が既にシステムにインストールするに特別にこの修正プログラムが設計された .NET Framework Service Pack 1 をインストールします。 Microsoft 搭載されたシステムにこの修正プログラムを適用する必要がありますがある場合 .NET Framework の Service Pack 2 のインストールをクリック資料以下、「サポート技術情報」(Microsoft Knowledge Base) を表示します。
328545情報: Post-Service パック 2 .NET Framework 修正プログラム ロールアップ パッケージ 2
状況
マイクロソフトとして認識していますこの問題をこの資料の冒頭に記載されているマイクロソフト製品の問題。
詳細

動作を再現する手順

以下は、この資料で説明されている問題を示すに関連の最小限の情報です。 ServicedComponents を作成する方法についてはをクリック資料以下、「サポート技術情報」(Microsoft Knowledge Base) を表示します。
306296方法: Visual C# .NET でのサービスの .NET コンポーネントを作成
問題を再現するには、以下の手順に従って操作します:
  1. COM + コンポーネントを作成するには、次コードを使用:
    using System;using System.Reflection;using System.Runtime.CompilerServices;using System.EnterpriseServices;[assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyKeyFile("ComPlusTest.snk")][assembly: ApplicationName("ComPlusTest")][assembly: ApplicationActivation(ActivationOption.Server)]public class CServer : ServicedComponent{   [AutoComplete]   public String Exec(byte [] param)   {	return "done";   }}					
  2. クライアント アプリケーションを作成するには、次のコードを使用:
    using System;public class CClient{   public static void Main()   {      CServer pObj = new CServer();      byte [] pLarge = new byte [2000];      byte [] pSmall = new byte [10];      // method call with large param      pObj.Exec(pLarge);      // method call with small param      // takes just as long as the earlier call      pObj.Exec(pSmall);      pObj.Dispose();   }}					
このバグのため 2 番目の呼び出しを CServer.Exec は最初を呼び出す場合に限り、パラメーターが小さいします。

警告: この資料は、自動翻訳されています

プロパティ

文書番号:327782 - 最終更新日: 02/12/2014 09:48:54 - リビジョン: 3.5

  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • kbnosurvey kbarchive kbbug kbfix kbqfe kbnetframe100presp3fix kbhotfixserver kbmt KB327782 KbMtja
フィードバック