COM Sarmalayıcıları

COM, çeşitli önemli yollarla .NET çalışma zamanı nesne modelinden farklıdır:

  • COM nesnelerinin istemcileri bu nesnelerin yaşam ömrünü yönetmelidir; ortak dil çalışma zamanı, ortamındaki nesnelerin ömrünü yönetir.

  • COM nesnelerinin istemcileri, hizmeti sağlayan bir arabirim isteyerek ve arabirim işaretçisini geri alarak bir hizmetin kullanılabilir olup olmadığını bulur. .NET nesnelerinin istemcileri yansıma kullanarak bir nesnenin işlevselliğinin açıklamasını alabilir.

  • NET nesneleri .NET çalışma zamanı yürütme ortamı tarafından yönetilen bellekte bulunur. Yürütme ortamı, performans nedeniyle nesneleri bellek içinde taşıyabilir ve taşınan nesnelere yapılan tüm başvuruları güncelleştirebilir. Bir nesnenin işaretçisini alan yönetilmeyen istemciler, nesnenin aynı konumda kalmasını sağlar. Bu istemcilerin konumu sabit olmayan bir nesneyle ilgilenmeye yönelik bir mekanizması yoktur.

Çalışma zamanı, bu farklılıkların üstesinden gelmek için hem yönetilen hem de yönetilmeyen istemcilerin kendi ortamlarındaki nesneleri çağırdıklarını düşünmelerini sağlamak için sarmalayıcı sınıfları sağlar. Yönetilen istemciniz COM nesnesinde bir yöntemi her çağırışında, çalışma zamanı bir çalışma zamanı çağrılabilen sarmalayıcı (RCW) oluşturur. RCW'ler, yönetilen ve yönetilmeyen başvuru mekanizmaları arasındaki farkları ve diğer şeyleri soyutlar. Çalışma zamanı işlemi tersine çevirmek için com çağrılabilen sarmalayıcı (CCW) da oluşturur ve com istemcisinin .NET nesnesinde bir yöntemi sorunsuz bir şekilde çağırmasını sağlar. Aşağıdaki çizimde gösterildiği gibi, çağıran kodun perspektifi çalışma zamanının hangi sarmalayıcı sınıfını oluşturduğunu belirler.

COM wrapper overview

Çoğu durumda, çalışma zamanı tarafından oluşturulan standart RCW veya CCW, COM ile .NET çalışma zamanı arasındaki sınırı geçen çağrılar için yeterli sıralama sağlar. Özel öznitelikleri kullanarak, isteğe bağlı olarak çalışma zamanının yönetilen ve yönetilmeyen kodu temsil ettiği şekli ayarlayabilirsiniz.

Ayrıca bkz.