Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
COM, istemcilerin, bu nesnelerin çalıştığı yerden bağımsız olarak, aynı işlemde, aynı bilgisayarda veya farklı bir bilgisayarda nesnelerle saydam bir şekilde iletişim kurmasına olanak sağlamak için tasarlanmıştır. Bu, her tür nesne için ve hem nesne istemcileri hem de nesne sunucuları için tek bir programlama modeli sağlar.
İstemcinin bakış açısından, tüm nesnelere arabirim işaretçileri aracılığıyla erişilir. İşaretçinin işlemde olması gerekir. Aslında, bir arabirim işlevine yapılan herhangi bir çağrı her zaman önce işlem içi kodun bir parçasına ulaşır. Nesne işlem halindeyse, çağrı, araya girmemiş sistem altyapısı kodu olmadan doğrudan ona ulaşır. Nesne işlem dışıysa, çağrı önce COM veya nesne (uygulayıcı isterse) tarafından sağlanan "proxy" nesnesi olarak adlandırılan nesneye ulaşır. Ara sunucu paketleri parametreleri (arabirim işaretçileri dahil) çağırır ve nesne uygulamasının bulunduğu diğer işleme veya diğer bilgisayara uygun uzak yordam çağrısını (veya özel oluşturulan proxy'ler söz konusu olduğunda başka bir iletişim mekanizmasını) oluşturur. İşlem sınırları arasında iletim için işaretçileri paketleme işlemi, hazırlamaolarak adlandırılır.
Sunucunun bakış açısından, bir nesnenin arabirim işlevlerine yapılan tüm çağrılar, bu arabirime yönelik bir işaretçi aracılığıyla yapılır. Yine bir işaretçinin bağlamı yalnızca tek bir işlemdedir ve çağıranın her zaman işlem içi kodun bir parçası olması gerekir. Nesne işlemdeyse, çağıran istemcinin kendisidir. Aksi takdirde, çağıran COM veya nesnenin kendisi tarafından sağlanan bir "saplama" nesnesidir. Saptama, istemci işlemindeki "ara sunucudan" uzak yordam çağrısını (veya özel oluşturulan proxy'ler söz konusu olduğunda başka bir iletişim mekanizmasını) alır, parametrelerin özetini kaldırır ve sunucu nesnesinde uygun arabirimi çağırır. Hem istemcilerin hem de sunucuların bakış açısından, her zaman diğer işlem içi kodlarla doğrudan iletişim kurarlar.
COM, standart hazırlamaolarak adlandırılan bir hazırlama uygulaması sağlar. Bu uygulama çoğu nesne için çok iyi çalışır ve programlama gereksinimlerini büyük ölçüde azaltarak hazırlama işlemini etkili bir şekilde saydam hale getirir.
Ancak, arabirimin COM'un işlem saydamlığının uygulanmasından net bir şekilde ayrılması, bazı durumlarda engel olabilir. İşlevine istemcinin bakış açısından odaklanan bir arabirimin tasarımı, bazen bu arabirimin ağ üzerinde verimli bir şekilde uygulanmasıyla çakışan tasarım kararlarına yol açabilir. Böyle durumlarda, gerekli olan saf süreç şeffaflığı değil, "önem vermeniz gerekmediği sürece süreç şeffaflığıdır." COM, nesne uygulayıcının özel hazırlama (IMarshal hazırlama olarak da adlandırılır) desteklemesine izin vererek bu özelliği sağlar. Standart sıralama aslında bir özel sıralama örneğidir; bir nesne özel hazırlama gerektirmediğinde kullanılan varsayılan uygulamadır.
Bir nesnenin ağ üzerinden kullanıldığında yerel erişim altında olduğundan farklı eylemler gerçekleştirmesine ve istemci için tamamen saydam olmasına izin vermek için özel hazırlama uygulayabilirsiniz. Bu mimari, ağ performansı sorunlarına bakılmaksızın istemci/nesne arabirimleri tasarlamayı ve daha sonra yerleşik tasarımı kesintiye uğratmadan ağ performansı sorunlarını gidermeyi mümkün kılar.
COM, bileşenlerin nasıl yapılandırılacağını belirtmez; nasıl etkileşime geçtiğini belirtir. COM, bir bileşenin iç yapısıyla ilgili endişeyi programlama dillerine ve geliştirme ortamlarına bırakır. Buna karşılık, programlama ortamları, anlık uygulamanın dışındaki nesnelerle çalışmak için belirlenmiş standartlara sahip değildir. Örneğin, Microsoft Visual C++, bir uygulama içindeki nesneleri işlemek için son derece iyi çalışır, ancak uygulama dışındaki nesnelerle çalışmayı desteklemez. Genel olarak, diğer tüm programlama dilleri bu konuda aynıdır. Bu nedenle, ağ genelinde birlikte çalışabilirlik sağlamak için, dilden bağımsız arabirimler aracılığıyla COM, programlama dillerinin nerede kaldığını belirler.
vtbl yapısının çift dolaylı olması, işlev işaretçileri tablosundaki işaretçilerin gerçek nesnedeki gerçek uygulamaya doğrudan işaret etmelerine gerek olmadığı anlamına gelir. Bu süreç şeffaflığının kalbidir.
Nesnenin doğrudan istemci işlemine yüklendiği işlem içi sunucular için, tablodaki işlev işaretçileri doğrudan gerçek uygulamaya işaret eder. Bu durumda, istemciden arabirim yöntemine yapılan işlev çağrısı, yürütme denetimini doğrudan yöntemine aktarır. Ancak, bellek işaretçileri işlemler arasında paylaşılamadığından, bu yerel, uzak nesneler için kullanılamaz. Bununla birlikte, istemcinin gerçek uygulamayı çağırır gibi arabirim yöntemlerini çağırabilmesi gerekir. Bu nedenle, istemci çağrısını yaparak denetimi bir nesnedeki bir yönteme tekdüzen olarak aktarır.
İstemci her zaman bazı işlem içi nesnelerde arabirim yöntemlerini çağırır. Gerçek nesne yerel veya uzaksa, çağrı bir ara sunucu nesnesine yapılır ve ardından gerçek nesneye uzak yordam çağrısı yapar.
Peki gerçekte hangi yöntem yürütülür? Yanıt, işlem dışı bir arabirime çağrı olduğunda her arabirim yönteminin bir ara sunucu nesnesi tarafından uygulanmasıdır. Proxy nesnesi her zaman çağrılan nesne adına hareket eden bir işlem içi nesnedir. Bu proxy nesnesi, gerçek nesnenin yerel veya uzak bir sunucuda çalıştığını bilir.
Proxy nesnesi, bazı veri paketlerinde işlev parametrelerini paketler ve yerel veya uzak nesneye bir RPC çağrısı oluşturur. Bu paket, sunucunun yerel veya uzak bilgisayardaki işlemindeki bir saplama nesnesi tarafından alınır ve bu da parametreleri açar ve yöntemin gerçek uygulamasına çağrı yapar. Bu işlev döndürdüğünde, saplama tüm out parametrelerini ve dönüş değerini paketler ve proxy'ye geri gönderir; bu da bunları açar ve özgün istemciye döndürür.
Bu nedenle, istemci ve sunucu her zaman her şey yolundaymış gibi birbirleriyle konuşur. İstemciden gelen tüm çağrılar ve sunucuya yapılan tüm çağrılar bir noktada işlemdedir. Ancak vtbl yapısı COM gibi bazı aracıların tüm işlev çağrılarını ve işlevlerden gelen tüm dönüşleri kesmesine izin verdiğinden, bu aracı bu çağrıları gerektiği gibi bir RPC çağrısına yönlendirebilir. İşlem içi çağrılar, işlem dışı çağrılardan daha hızlı olsa da, işlem farklılıkları istemci ve sunucu için tamamen saydamdır.
Daha fazla bilgi için aşağıdaki konulara bakın:
- Hazırlama Ayrıntıları
- proxy
- Saptama
- Kanal
- Microsoft RPC
İlgili konular