Düzeltme:, Bir ServicedComponent yöntemleri çağrısı sırasında performansı düşüyor

Makale çevirileri Makale çevirileri
Makale numarası: 327782 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Bir uzak bir .NET AppDomain çağrısından yapılandırılmış COM + Microsoft .NET bileşenine yaptığınızda, aramayı başlatan uygulama içindeki bir performans Yavaşlatma karşılaşabilirsiniz. Bu sorun, bir COM + sunucu uygulaması tarafından barındırılan bir ServicedComponent yöntemlerini çağırdığınızda oluşur.

Neden

Yöntem çağrıları için bir COM + sunucu uygulamasına barındırılan bir ServicedComponent yönetilen uygulamayı gönderir, .NET Framework Yöntem parametrelerinin çağrılamadı gerekir. Performansı artırmak için <a0></a0>, sıralama ve parametreleri unmarshal önbelleğe alınmış bir MemoryStream nesnesi iç sıralama katmanı kullanır. Ancak, sıralayıcısı her zaman tam MemoryStream arabellek yalnızca en az gerekli verileri geçirmeden yerine, her arama için kullanır.

Bir defada büyük parametreleri kullanan uygulamalar, sıralanmış akış gerekli daha büyük olur çünkü daha küçük olan parametreler kullanan aramalar için performansın düşmesine karşılaşabilirsiniz.

Çözüm

Microsoft desteklenen bir düzeltme yayımlamıştır, ancak yalnızca bu makalede açıklanan sorunu gidermesi amaçlanmaktadır. Düzeltmeyi yalnızca bu sorunla karşılaşmış olan bilgisayarlara uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi olarak, Microsoft, bu düzeltmeyi içeren bir sonraki .NET Framework hizmet paketini beklemenizi önerir.

Bu sorunun derhal çözülmesini sağlayacak düzeltmeyi edinmek için Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not: Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için çözümleyeceğini giderler özel durumlarda, iptal edilebilir. Söz konusu güncelleştirme ile ilgili olmayan ek destek soruları ve sorunlar için normal destek ücretleri geçerlidir.

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yenisi) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   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
				

Bu düzeltmenin Microsoft olan bir sistemde özel olarak yüklenmesi için tasarlanmış .NET Framework Service Pack 1. Bu düzeltmenin Microsoft olan bir sistemde yüklü .NET Framework Service Pack 2, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
328545BILGI: Service Pack 2 sonrası .NET Framework düzeltme toplaması paketi 2

Durum

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

Bu makalede incelenen sorunu gösteren için ilgili bilgiler aşağıdadır. ServicedComponents oluşturma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306296NASıL YAPıLıR: Visual C# .NET bir servis verilen .NET bileşeni oluşturma
Sorunu yeniden oluşturmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Bir COM + bileşeni oluşturmak için şu kodu kullanın:
    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. Bir istemci uygulaması oluşturmak için şu kodu kullanın:
    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();
       }
    }
    					
Bu hata nedeniyle, ikinci çağrı CServer.Exec sürer için ilk çağrı sürece, parametre küçük olmasına karşın.

Özellikler

Makale numarası: 327782 - Last Review: 6 Şubat 2014 Perşembe - Gözden geçirme: 3.5
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp3fix kbqfe KB327782 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:327782

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com