COM+ Uygulamaları ile Tümleştirme Genel Bakış
Windows Communication Foundation (WCF), dağıtılmış uygulamalar oluşturmak için zengin bir ortam sağlar. COM+'da barındırılan bileşen tabanlı uygulama mantığını zaten kullanıyorsanız, WCF kullanarak var olan mantığınızı yeniden yazmak yerine genişletebilirsiniz. Yaygın bir senaryo, Web Hizmetleri aracılığıyla mevcut COM+ veya Enterprise Services iş mantığını kullanıma sunmanızdır.
COM+ bileşenindeki bir arabirim Bir Web hizmeti olarak kullanıma sunulduğunda, bu hizmetlerin belirtimi ve sözleşmesi, uygulama başlatma zamanında gerçekleştirilen otomatik eşleme tarafından belirlenir. Aşağıdaki listede bu eşlemenin kavramsal modeli gösterilmektedir:
Kullanıma sunulan her COM sınıfı için bir hizmet tanımlanır.
Hizmet sözleşmesi, yapılandırmada tanımlanan yöntem dışlama olasılığıyla doğrudan seçili bileşenin arabirim tanımından türetilir.
Bu sözleşmedeki işlemler doğrudan bileşenin arabirim tanımındaki yöntemlerden türetilir.
Bu işlemlerin parametreleri doğrudan bileşenin yöntem parametrelerine karşılık gelen COM birlikte çalışabilirlik türünden türetilir.
Hizmet için varsayılan adresler ve aktarım bağlamaları bir hizmet yapılandırma dosyasında sağlanır, ancak bunlar gerektiği gibi yeniden yapılandırılabilir.
Not
Kullanıma sunulan Web hizmetlerinin sözleşmeleri, COM+ arabirimleri ve yapılandırması değişmediği sürece sabit kalır. Çeşitli arabirimlerde yapılan bir değişiklik, kullanılabilir hizmetleri otomatik olarak güncelleştirmez ve COM+ Hizmet Modeli Yapılandırma aracının (ComSvcConfig.exe) yeniden çalıştırılmasını gerektirir.
COM+ uygulamasının ve bileşenlerinin kimlik doğrulaması ve yetkilendirme gereksinimleri, Web hizmeti olarak kullanıldığında uygulanmaya devam eder.
Çağıran bir Web hizmeti işlemi başlatırsa, bu işlem kapsamında işlem listesi olarak işaretlenmiş bileşenler.
Com+ bileşeninin arabirimini, bileşeni değiştirmeden Web hizmeti olarak kullanıma açmak için aşağıdaki adımlar gereklidir:
COM+ bileşeninin arabiriminin bir Web hizmeti olarak gösterilip gösterilmeyebileceğini belirleyin.
Uygun bir barındırma modu seçin.
Arabirim için bir Web hizmeti eklemek için COM+ Hizmet Modeli Yapılandırma aracını (ComSvcConfig.exe) kullanın. ComSvcConfig.exe kullanma hakkında daha fazla bilgi için bkz . Nasıl yapılır: COM+ Hizmet Modeli Yapılandırma Aracı'nı kullanma.
Uygulama yapılandırma dosyasındaki ek hizmet ayarlarını yapılandırın. Bir bileşeni yapılandırma hakkında daha fazla bilgi için bkz . Nasıl yapılır: COM+ Hizmet Ayarlarını Yapılandırma.
Desteklenen Arabirimler
Web hizmeti olarak gösterilebilen arabirim türleriyle ilgili bazı kısıtlamalar vardır. Aşağıdaki arabirim türleri desteklenmez:
Nesne başvurularını parametre olarak geçiren arabirimler - Sınırlı Nesne Başvurusu Desteği bölümünde aşağıdaki sınırlı nesne başvurusu yaklaşımı açıklanmıştır.
.NET Framework COM birlikte çalışabilirlik dönüştürmeleriyle uyumlu olmayan türleri geçiren arabirimler.
COM+ tarafından barındırıldığında uygulama havuzu etkinleştirilmiş uygulamalar için arabirimler.
Uygulamaya özel olarak işaretlenmiş bileşenlerin arabirimleri.
COM+ altyapı arabirimleri.
Sistem uygulamasından arabirimler.
Genel derleme önbelleğine eklenmemiş Enterprise Services bileşenlerinden arabirimler.
Sınırlı Nesne Başvurusu Desteği
Dağıtılan bir dizi COM+ bileşeni, ADO Kayıt Kümesi nesnesi döndürme gibi başvuru parametrelerine göre nesneleri kullandığından, COM+ tümleştirmesi nesne başvuru parametreleri için sınırlı destek içerir. Destek, COM arabirimini uygulayan nesnelerle IPersistStream
sınırlıdır. Bu, ADO Kayıt Kümesi nesnelerini içerir ve uygulamaya özgü COM nesneleri için uygulanabilir.
Bu desteği etkinleştirmek için ComSvcConfig.exe aracı, normal yöntem imzası parametresini devre dışı bırakır ve nesne başvuru parametrelerinin kullanılmadığından emin olmak için aracın çalıştığını denetleyen allowreferences anahtarını sağlar. Ayrıca, parametre olarak geçirdiğiniz nesne türleri, öğesinin <persistableTypes>
alt <comContract>
öğesi olan yapılandırma öğesinde adlandırılmalı ve tanımlanmalıdır.
Bu özellik kullanıldığında, COM+ tümleştirme hizmeti nesne örneğini IPersistStream
serileştirmek veya seri durumdan çıkarmak için arabirimini kullanır. Nesne örneği desteklemiyorsa IPersistStream
bir özel durum oluşturulur.
İstemci uygulaması içinde, nesnedeki PersistStreamTypeWrapper yöntemler bir nesneyi hizmete geçirmek ve benzer şekilde bir nesneyi almak için kullanılabilir.
Not
Serileştirme yaklaşımının özel ve platforma özgü yapısı nedeniyle bu, WCF istemcileri ile WCF hizmetleri arasında kullanım için en uygun yöntemdir.
Barındırma Modunu Seçme
COM+, Web hizmetlerini aşağıdaki barındırma modlarından birinde kullanıma sunar:
COM+barındırılan
Web hizmeti, uygulamanın ayrılmış COM+ sunucu işlemi (Dllhost.exe) içinde barındırılır. Bu mod, web hizmeti isteklerini alabilmesi için uygulamanın açıkça başlatılmasını gerektirir. Uygulamanın ve hizmetlerinin boşta kapatılmasını önlemek için "NT Hizmeti Olarak Çalıştır" veya "Boştayken çalışmaya bırak" COM+ seçenekleri kullanılabilir. Bu mod, sunucu uygulamasına hem Web hizmeti hem de DCOM erişimi sağlar.
Web'de barındırılan
Web hizmeti bir Web sunucusu çalışan işlemi içinde barındırılır. Bu mod, ilk istek alındığında COM+'nın etkin olmasını gerektirmez. Bu istek alındığında uygulama etkin değilse, istek işlenmeden önce otomatik olarak etkinleştirilir. Bu mod, sunucu uygulamasına hem Web hizmeti hem de DCOM erişimi sağlar, ancak Web hizmeti istekleri için işlem atlamasına neden olur. Bu genellikle istemcinin kimliğe bürünme özelliğini etkinleştirmesini gerektirir. WCF'de bu, genel Impersonation ChannelFactory<TChannel> sınıfın AllowedImpersonationLevel özelliği olarak erişilen sınıfın WindowsClientCredential özelliği ve numaralandırma değeri ile yapılabilir.
Web'de barındırılan işlem içi
Web hizmeti ve COM+ uygulama mantığı, Web sunucusu çalışan işlemi içinde barındırılır. Bu, Web hizmeti istekleri için işlem atlamasına neden olmadan Web'de barındırılan modun otomatik olarak etkinleştirilmesini sağlar. Dezavantajı, sunucu uygulamasına DCOM üzerinden erişilememesidir.
Güvenlikle İlgili Dikkat Edilmesi Gerekenler
Diğer WCF hizmetleri gibi, kullanıma sunulan hizmetin güvenlik ayarları da WCF kanalının yapılandırma ayarları aracılığıyla yönetilir. DCOM makine genelinde izin ayarları gibi geleneksel DCOM güvenlik ayarları zorunlu tutulmaz. COM+ uygulama rollerini zorunlu kılmak için, bileşen için "bileşen düzeyinde erişim denetimleri" yetkilendirmesi etkinleştirilmelidir.
Güvenli olmayan bir bağlamanın kullanılması, iletişimi kurcalamaya veya bilgilerin açığa çıkmasına açık bırakabilir. Bunu önlemek için güvenli bir bağlama kullanmanız önerilir.
COM+barındırılan ve Web'de barındırılan modlar için istemci uygulamalarının sunucu işleminin istemci kullanıcının kimliğine bürünebilmesine izin vermesi gerekir. Bu, kimliğe bürünme düzeyi Impersonationolarak ayarlanarak WCF istemcilerinde yapılabilir.
HTTP aktarımını kullanan Internet Information Services (IIS) veya Windows İşlem Etkinleştirme Hizmeti (WAS) ile, aktarım uç noktası adresini ayırmak için Httpcfg.exe aracı kullanılabilir. Diğer yapılandırmalarda, amaçlanan hizmet olarak davranan sahte hizmetlere karşı koruma sağlamak önemlidir. Bir düzenbaz hizmetin istenen uç noktada başlatılmasını önlemek için, geçerli hizmet NT hizmeti olarak çalışacak şekilde yapılandırılabilir. Bu, yasal hizmetin herhangi bir sahte hizmetlerden önce uç nokta adresini talep etmelerini sağlar.
Yapılandırılmış COM+ rollerine sahip bir COM+ uygulamasını Web'de barındırılan bir hizmet olarak kullanıma sunarken, uygulamanın rollerinden birine "IIS İşlem Hesabını Başlat" eklenmelidir. Genellikle adı IWAM_machinename olan bu hesap, kullanımdan sonra nesnelerin temiz kapatılmasını sağlamak için eklenmelidir. Hesaba ek izin verilmemelidir.
COM+ işlem geri dönüştürme özellikleri tümleşik uygulamalarda kullanılamaz. Uygulama işlem geri dönüşümü kullanacak şekilde yapılandırılmışsa ve bileşenler COM+ tarafından barındırılan bir işlemde çalışıyorsa, hizmet başlatılamaz. İşlem geri dönüşüm ayarları uygulanmadığından bu gereksinim, Web'de barındırılan işlem içi modunu kullanan hizmetleri içermez.