COM Uygulamaları ile Tümleştirme Genel Bakış
Windows Communication Foundation (WCF), yönetilen kod geliştiricisine bağlı uygulamalar oluşturmak için zengin bir ortam sağlar. Ancak yönetilmeyen COM tabanlı koda önemli bir yatırım yaparsanız ve geçiş yapmak istemiyorsanız WCF hizmet adını kullanarak WCF Web hizmetlerini mevcut kodunuzla doğrudan tümleştirmeye devam edebilirsiniz. Hizmet adı Office VBA, Visual Basic 6.0 veya Visual C++ 6.0 gibi çok çeşitli COM tabanlı geliştirme ortamlarından kullanılabilir.
Not
Hizmet adı, tüm iletişimler için bir WCF iletişim kanalı kullanır. Bu kanalın güvenlik ve kimlik mekanizmaları, standart COM ve DCOM proxy'lerinde kullanılanlardan farklıdır. Ayrıca, hizmet adı bir WCF iletişim kanalı kullandığından, varsayılan zaman aşımı süresi tüm çağrılar için bir dakikadır.
Hizmet takma adı, yönetilmeyen geliştiriciye WCF Web hizmetlerini çağırmak için kesin olarak türü belirlenmiş, COM'a özgü bir yaklaşım sağlamak için işleviyle birlikte GetObject
kullanılır. Bu, WCF Web hizmeti sözleşmesinin yerel, COM tarafından görünür bir tanımını ve kullanılacak bağlamayı gerektirir. Diğer WCF istemcilerinde olduğu gibi hizmet takma adı da hizmete türetilen bir kanal oluşturmalıdır, ancak bu kanal oluşturma işlemi ilk yöntem çağrısında COM programcısı için saydam bir şekilde gerçekleşir.
Diğer WCF istemcileriyle ortak olarak, uygulamalar bilinen adı kullanırken bir hizmetle iletişim kurmak için adresi, bağlamayı ve sözleşmeyi belirtir. Sözleşme aşağıdaki yollardan biriyle belirtilebilir:
Yazılan sözleşme – sözleşme, istemci makinesinde COM görünür türü olarak kaydedilir.
WSDL sözleşmesi – sözleşme bir WSDL belgesi biçiminde sağlanır.
MEX sözleşmesi – sözleşme çalışma zamanında Meta Veri Değişimi (MEX) uç noktasından alınır.
Hizmet Takma Adı Tarafından Desteklenen Parametreler
Aşağıdaki tabloda hizmet adı tarafından desteklenen parametreler gösterilmektedir.
Parametre | Açıklama |
---|---|
address |
Hizmetin URL konumu. |
binding |
Uygulama yapılandırmasından bölüm adını bağlama. |
bindingConfiguration |
Adlandırılmış bağlama bölümünden adlandırılmış bağlama örneği. |
contract |
Hizmet sözleşmesini veya sözleşme adını (MEX'ten) temsil eden arabirim tanımlayıcısı (IID). |
wsdl |
Alternatif bir sözleşme tanımı biçimi sağlayan WSDL belgesi. |
spnIdentity |
Hizmetle iletişim kurmak için kullanılacak sunucu asıl adı (SPN) kimliği. |
upnIdentity |
Hizmetle iletişim kurmak için kullanılacak kullanıcı asıl adı (UPN) kimliği. |
dnsIdentity |
Hizmetle iletişim kurmak için kullanılacak DNS kimliği. |
mexAddress |
Hizmetin Meta Veri Değişimi (MEX) uç noktasının URL konumu. |
mexBinding |
MEX uç noktasına bağlanmak için uygulama yapılandırmasından bölüm adını bağlama. |
mexBindingConfiguration |
MEX uç noktasına bağlanmak için adlandırılmış bağlama bölümünün içinden adlandırılmış bağlama örneği. |
bindingNamespace |
Alınan MEX'ten bağlama bölümü adının ad alanı. |
contractNamespace |
Alınan MEX'ten sözleşmenin ad alanı. |
mexSpnIdentity |
MEX uç noktasıyla iletişim kurmak için kullanılacak sunucu asıl adı (SPN) kimliği. |
mexUpnIdentity |
MEX uç noktasıyla iletişim kurmak için kullanılacak kullanıcı asıl adı (UPN) kimliği. |
mexDnsIdentity |
MEX uç noktasıyla iletişim kurmak için kullanılacak DNS kimliği. |
serializer |
"xml" veya "datacontract" serileştiricisinin kullanımını belirtin. |
Not
Tamamen COM tabanlı istemcilerle kullanıldığında bile hizmet takma adı, istemci bilgisayara WCF ve destekleyici .NET Framework 2.0'ın yüklenmesini gerektirir. Hizmet takma adını kullanan istemci uygulamalarının .NET Framework çalışma zamanının uygun sürümünü yüklemesi de kritik önem taşır. Office uygulaması lications içinde takma ad kullanılırken, doğru çerçeve sürümünün yüklendiğinden emin olmak için bir yapılandırma dosyası gerekebilir. Örneğin, Excel ile aşağıdaki metin Excel.exe dosyasıyla aynı dizinde Excel.exe.config adlı bir dosyaya yerleştirilmelidir:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns=
http://schemas.microsoft.com/.NetConfiguration/v2.0
>
<startup>
<requiredRuntime version="v2.0.50727" />
</startup>
</configuration>