SORUN: Olumsuz STA bileşenleri de ASP.NET ASPCOMPAT modu kurucu oluşturma performansı üzerindeki etkisi

Ö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.

308095
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
Bir ASP.NET sayfası ASPCOMPAT modu apartman iş parçacıklı bileşenler çaðýrdýðýnýzda, önemli performans düşüş olduğunu fark edebilirsiniz.
Neden
ASPCOMPAT modu kullanıyorsanız (yani bir sayfa ile kullanıyorsanız < % @ ASPCOMPAT = "true" %> yönergesini), ASP.NET sayfalardaki bir STA iş parçacığı havuzu üzerinde çalışır. Ancak, inşaat zaman oluşturulan Bileşen Nesne Modeli (COM) bileşenlerini isteği tek iş parçacıklı grup (STA) iş parçacığı havuzuna zamanlanmadan önce oluşturulur ve bu nedenle çok iş parçacıklı grup (MTA) bir iş parçacığından oluşturulur. Bu senaryoda, önemli bir performans düşüşü yaşarsınız.

En önemli ölçüde (STA ana bilgisayar) aynı iş parçacığının Grup iş parçacıklı bileşenler, MTA iş parçacığı oluşturulan tüm örneklerini yürütür. Tüm kullanıcıların, kendi COM bileşeninin örneğini başvuru sahip olsa bile, tüm bu bileşenler içine aramalarının bu bir iş parçacığına sıralanmış, yani (tek bir çağrı, bir kerede çalıştırılır).

Ayrıca, her arama bileşeni için bir iş parçacığı geçiş nedeniyle sayfa olaylarını yapılır'ı tıklatın, daha küçük bir performans yoktur. Bunun nedeni, sayfa olaylar <a0>STA</a0> havuzundan bir iş parçacığında yürütülür; (COM) bileşeni bir MTA istemciden oluşturulduğundan) COM bileşeni yine STA ana bilgisayarda gerçekleştirildiğinde olmasıdır. Kimliğe bürünme özelliğini kullanırsanız, bu iş parçacığının anahtar aynı zamanda diğer hatalar için müşteri adayı. Daha fazla bilgi için, bu makalenin "Başvurular" bölümüne bakın.
Çözüm
STA bileşenlerle ASPCOMPAT modu kullanıyorsanız, yalnızca bir yöntem veya sayfa olayların (örneğin, Page_Loadpage_ınit ve benzeri) bir COM bileşenleri oluşturmak ve bu COM bileşenleri inşaat zaman oluşturun.

Örneğin, bileşen yapım zaman oluşturur aşağıdakine benzer bir üye bildirimi kaçının:

Visual Basic. NET'e
<%@ Page Language="VB" ASPCOMPAT="TRUE" %><script runat="server">Dim comObj As MyComObject = New MyComObject()Public Sub Page_Load()   comObj.DoSomething()End Sub</script>				
Visual C# .NET
<%@ Page Language="C#" ASPCOMPAT="TRUE" %><script runat="server">MyComObject comObj = new MyComObject();public void Page_Load(){   comObj.DoSomething()}</script>				
Visual J#. NET'i
<%@ Page Language="VJ#" ASPCOMPAT="TRUE" %><script runat="server">MyComObject comObj = new MyComObject();public void Page_Load(){  comObj.DoSomething();}</script>				
bunun yerine, aşağıdaki kodu kullanın:

Visual Basic. NET'e
<%@ Page Language="VB" ASPCOMPAT="TRUE" %><script runat="server">Dim comObj As MyComObject Public Sub Page_Load()   comObj = New MyComObject()   comObj.DoSomething()End Sub				
Visual C# .NET
<%@ Page Language="C#" ASPCOMPAT="TRUE" %><script runat="server">MyComObject comObj;public void Page_Load(){   comObj = new MyComObject();   comObj.DoSomething();}				
Visual J# .NET
<%@ Page Language="VJ#" ASPCOMPAT="TRUE" %><script runat="server">MyComObject comObj;public void Page_Load(){  comObj = new MyComObject();  comObj.DoSomething();}</script>				
Durum
Bu davranış tasarım yüzündendir.
Referanslar
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
325791SORUN: ASP.NET ve arama STA COM bileşenleri belirlerken bir hata iletisi oluşur erişim engellendi
performans düşüyor kbreadme üzerinde olumsuz bir etkisi vardır

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 308095 - Son İnceleme: 02/24/2014 20:23:15 - Düzeltme: 2.9

  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft .NET Framework 1.1
  • kbnosurvey kbarchive kbmt kbhttpruntime kbinterop kbperformance kbprb kbreadme kbthread KB308095 KbMttr
Geri bildirim