Temel Windows Communication Foundation Kavramları
Bu belge, Windows Communication Foundation (WCF) mimarisinin üst düzey bir görünümünü sağlar. Temel kavramları ve bunların nasıl bir araya toplandığı açıklanmaktadır. WCF hizmetinin ve istemcisinin en basit sürümünü oluşturma öğreticisi için bkz . Başlarken Öğreticisi. WCF programlamayı öğrenmek için bkz . Temel WCF Programlama.
WCF Ile İlgili Temel Bilgiler
WCF, hizmetler ve istemciler arasında ileti gönderen sistemler oluşturmaya yönelik bir çalışma zamanı ve API kümesidir. Aynı altyapı ve API'ler, aynı bilgisayar sisteminde veya başka bir şirkette bulunan ve İnternet üzerinden erişilen bir sistemde diğer uygulamalarla iletişim kuran uygulamalar oluşturmak için kullanılır.
Mesajlaşma ve Uç Noktalar
WCF, ileti tabanlı iletişim kavramlarını temel alır ve ileti olarak modellenebilen her şey (örneğin, HTTP isteği veya Message Queuing (MSMQ olarak da bilinir) iletisi) programlama modelinde tekdüzen bir şekilde temsil edilebilir. Bu, farklı aktarım mekanizmaları arasında birleşik bir API'ye olanak tanır.
Model, iletişim başlatan uygulamalar olan istemciler ile istemcilerin iletişim kurmasını ve bu iletişime yanıt vermesini bekleyen uygulamalar olan hizmetleri birbirinden ayırır. Tek bir uygulama hem istemci hem de hizmet olarak görev yapabilir. Örnekler için bkz . Çift Yönlü Hizmetler ve Eşler Arası Ağ.
İletiler uç noktalar arasında gönderilir. Uç noktalar, iletilerin gönderildiği veya alındığı yerlerdir (veya her ikisi de) ve ileti değişimi için gereken tüm bilgileri tanımlar. Bir hizmet, bir veya daha fazla uygulama uç noktasını (sıfır veya daha fazla altyapı uç noktasının yanı sıra) kullanıma sunar ve istemci, hizmetin uç noktalarından biriyle uyumlu bir uç nokta oluşturur.
Uç nokta , iletilerin nereye gönderilmesi gerektiğini, nasıl gönderilmesi gerektiğini ve iletilerin nasıl görünmesi gerektiğini standart tabanlı bir şekilde açıklar. Bir hizmet bu bilgileri istemcilerin uygun WCF istemcileri ve iletişim yığınları oluşturmak için işleyebileceği meta veriler olarak kullanıma açabilir.
İletişim Protokolleri
İletişim yığınının gerekli öğelerinden biri aktarım protokolüdür. İletiler, HTTP ve TCP gibi yaygın aktarımlar kullanılarak intranetler ve İnternet üzerinden gönderilebilir. Eş Ağ ağındaki Message Queuing uygulamaları ve düğümleriyle iletişimi destekleyen diğer aktarımlar da dahildir. WCF'nin yerleşik uzantı noktaları kullanılarak daha fazla taşıma mekanizması eklenebilir.
İletişim yığınındaki bir diğer gerekli öğe, belirli bir iletinin nasıl biçimlendirildiğini belirten kodlamadır. WCF aşağıdaki kodlamaları sağlar:
Birlikte çalışabilen bir kodlama olan metin kodlaması.
İleti İletim İyileştirme Mekanizması (MTOM) kodlaması, bir hizmete ve hizmete yapılandırılmamış ikili verileri verimli bir şekilde göndermek için birlikte çalışabilir bir yoldur.
Verimli aktarım için ikili kodlama.
WCF'nin yerleşik uzantı noktaları kullanılarak daha fazla kodlama mekanizması (örneğin, sıkıştırma kodlaması) eklenebilir.
İleti Desenleri
WCF istek-yanıt, tek yönlü ve çift yönlü iletişim de dahil olmak üzere çeşitli mesajlaşma desenlerini destekler. Farklı aktarımlar farklı mesajlaşma düzenlerini destekler ve bu nedenle destekledikleri etkileşim türlerini etkiler. WCF API'leri ve çalışma zamanı, iletileri güvenli ve güvenilir bir şekilde göndermenize de yardımcı olur.
WCF Koşulları
WCF belgelerinde kullanılan diğer kavramlar ve terimler şunlardır:
İleti
Gövde ve üst bilgiler de dahil olmak üzere çeşitli bölümlerden oluşabilen bağımsız bir veri birimi.
Hizmet
Her uç noktanın bir veya daha fazla hizmet işlemini ortaya çıkararak bir veya daha fazla uç noktayı kullanıma sunan bir yapı.
Uç nokta
İletilerin gönderildiği veya alındığı bir yapı (veya her ikisi). İletilerin gönderilebileceği yeri tanımlayan bir konum (adres), iletilerin nasıl gönderileceğini açıklayan iletişim mekanizmasının belirtimi (bağlama) ve bu konumda gönderilebilen veya alınabilen (veya her ikisini birden) içeren bir ileti kümesi tanımı (hizmet sözleşmesi) içerir.
WCF hizmeti, uç nokta koleksiyonu olarak dünyaya sunulur.
Uygulama uç noktası
Uygulama tarafından kullanıma sunulan ve uygulama tarafından uygulanan bir hizmet sözleşmesine karşılık gelen uç nokta.
Altyapı uç noktası
Hizmet sözleşmesiyle ilgili olmayan hizmet tarafından gerekli veya sağlanan işlevleri kolaylaştırmak için altyapı tarafından kullanıma sunulan uç nokta. Örneğin, bir hizmetin meta veri bilgilerini sağlayan bir altyapı uç noktası olabilir.
Adres
İletilerin alındığı konumu belirtir. Tekdüzen Kaynak Tanımlayıcısı (URI) olarak belirtilir. URI şema bölümü, http ve TCP gibi adrese ulaşmak için kullanılacak aktarım mekanizmasını adlandırıyor. URI'nin hiyerarşik bölümü, biçimi aktarım mekanizmasına bağımlı olan benzersiz bir konum içerir.
Uç nokta adresi, bir hizmetteki her uç nokta için benzersiz uç nokta adresleri oluşturmanıza veya belirli koşullar altında bir adresi uç noktalar arasında paylaşmanıza olanak tanır. Aşağıdaki örnekte, varsayılan olmayan bir bağlantı noktasıyla HTTPS protokolü kullanan bir adres gösterilmektedir:
HTTPS://cohowinery:8005/ServiceModelSamples/CalculatorService
Bağlama
Uç noktanın dünyayla nasıl iletişim kuracaklarını tanımlar. İletişim altyapısını oluşturmak için birbirinin üzerine "yığan" bağlama öğeleri adlı bir bileşen kümesinden oluşturulur. En azından bağlama, aktarım (HTTP veya TCP gibi) ve kullanılan kodlamayı (metin veya ikili gibi) tanımlar. Bağlama, iletilerin güvenliğini sağlamak için kullanılan güvenlik mekanizmaları veya uç nokta tarafından kullanılan ileti düzeni gibi ayrıntıları belirten bağlama öğeleri içerebilir. Daha fazla bilgi için bkz . Hizmetleri Yapılandırma.
Bağlama öğesi
Bağlamanın aktarım, kodlama, altyapı düzeyi protokolü (WS-ReliableMessaging gibi) uygulaması veya iletişim yığınının diğer bileşenleri gibi belirli bir parçasını temsil eder.
Davranışlar
Bir hizmetin, uç noktanın, belirli bir işlemin veya istemcinin çeşitli çalışma zamanı yönlerini denetleen bileşen. Davranışlar kapsama göre gruplandırılır: genel davranışlar genel olarak tüm uç noktaları etkiler, hizmet davranışları yalnızca hizmetle ilgili yönleri etkiler, uç nokta davranışları yalnızca uç noktayla ilgili özellikleri etkiler ve işlem düzeyi davranışları belirli işlemleri etkiler. Örneğin, bir hizmet davranışı azaltmadır ve fazla sayıda ileti işleme özelliklerini aşırı kullanmakla tehdit ettiğinde hizmetin nasıl tepki verdiği gösterilir. Öte yandan bir uç nokta davranışı, yalnızca güvenlik kimlik bilgilerinin nasıl ve nerede bulunacağı gibi uç noktalarla ilgili yönleri denetler.
Sistem tarafından sağlanan bağlamalar
WCF, sistem tarafından sağlanan bir dizi bağlama içerir. Bunlar, belirli senaryolar için iyileştirilmiş bağlama öğeleri koleksiyonlarıdır. Örneğin, çeşitli WSHttpBinding WS-* belirtimlerini uygulayan hizmetlerle birlikte çalışabilirlik için tasarlanmıştır. Bu önceden tanımlanmış bağlamalar, yalnızca belirli senaryoya doğru şekilde uygulanabilen seçenekleri sunarak zaman kazandırır. Önceden tanımlanmış bir bağlama gereksinimlerinizi karşılamıyorsa kendi özel bağlamanızı oluşturabilirsiniz.
Yapılandırma ve kodlama karşılaştırması
Bir uygulamanın denetimi kodlama, yapılandırma veya her ikisinin birleşimi aracılığıyla yapılabilir. Yapılandırma, kod yazıldıktan sonra ve yeniden derlemeye gerek kalmadan geliştiriciden (örneğin bir ağ yöneticisi) başka birinin istemci ve hizmet parametrelerini ayarlamasına izin verme avantajına sahiptir. Yapılandırma yalnızca uç nokta adresleri gibi değerler ayarlamanıza olanak sağlamakla kalmaz, aynı zamanda uç noktalar, bağlamalar ve davranışlar eklemenizi sağlayarak daha fazla denetime de olanak tanır. Kodlama, geliştiricinin hizmet veya istemcinin tüm bileşenleri üzerinde sıkı denetim sahibi olmasını sağlar ve yapılandırma aracılığıyla yapılan tüm ayarlar incelenebilir ve gerekirse kod tarafından geçersiz kılınabilir.
Hizmet işlemi
Bir hizmetin kodunda tanımlanan ve bir işlemin işlevselliğini uygulayan yordam. Bu işlem, bir WCF istemcisinde yöntemler olarak istemcilere sunulur. yöntemi bir değer döndürebilir ve isteğe bağlı sayıda bağımsız değişken alabilir veya bağımsız değişken alıp yanıt döndüremez. Örneğin, basit bir "Hello" işlevi gösteren bir işlem, bir istemcinin varlığının bildirimi olarak ve bir dizi işlemi başlatmak için kullanılabilir.
Hizmet sözleşmesi
Birden çok ilişkili işlemi tek bir işlevsel ünitede birleştirir. Sözleşme, hizmetin ad alanı, karşılık gelen bir geri çağırma sözleşmesi ve diğer bu tür ayarlar gibi hizmet düzeyi ayarlarını tanımlayabilir. Çoğu durumda sözleşme, istediğiniz programlama dilinde bir arabirim oluşturularak ve özniteliği arabirime ServiceContractAttribute uygulanarak tanımlanır. Gerçek hizmet kodu, arabirimini uygulayarak sonuç alır.
İşlem sözleşmesi
İşlem sözleşmesi, bir işlemin parametrelerini ve dönüş türünü tanımlar. Hizmet sözleşmesini tanımlayan bir arabirim oluştururken, özniteliğini sözleşmenin OperationContractAttribute parçası olan her yöntem tanımına uygulayarak bir işlem sözleşmesini imzalarsınız. İşlemler, tek bir ileti alıp tek bir ileti döndürmek veya bir tür kümesi alıp bir tür döndürmek olarak modellenebilir. İkinci durumda, sistem bu işlem için değişimi gereken iletilerin biçimini belirler.
İleti sözleşmesi
İletinin biçimini açıklar. Örneğin, ileti öğelerinin gövde yerine üst bilgilerde bulunup bulunmayacağını, iletinin hangi öğelerine hangi güvenlik düzeyinin uygulanması gerektiğini vb. bildirir.
Hata sözleşmesi
Çağırana döndürülebilecek hataları belirtmek için bir hizmet işlemiyle ilişkilendirilebilir. Bir işlemin kendisiyle ilişkilendirilmiş sıfır veya daha fazla hatası olabilir. Bu hatalar, programlama modelinde özel durumlar olarak modellenen SOAP hatalarıdır.
Veri sözleşmesi
Bir hizmetin kullandığı veri türlerinin meta verilerindeki açıklamalar. Bu, başkalarının hizmetle birlikte çalışabilmesini sağlar. Veri türleri, iletinin herhangi bir bölümünde, örneğin parametre veya dönüş türü olarak kullanılabilir. Hizmet yalnızca basit türler kullanıyorsa, veri sözleşmelerini açıkça kullanmanıza gerek yoktur.
Barındırma
Bir hizmetin bir süreçte barındırılması gerekir. Konak, hizmetin ömrünü denetleen bir uygulamadır. Hizmetler şirket içinde barındırılabilir veya mevcut bir barındırma işlemi tarafından yönetilebilir.
Şirket içinde barındırılan hizmet
Geliştiricinin oluşturduğu bir işlem uygulaması içinde çalışan bir hizmet. Geliştirici, ömrünü denetler, hizmetin özelliklerini ayarlar, hizmeti açar (bunu bir dinleme moduna ayarlar) ve hizmeti kapatır.
Barındırma işlemi
Hizmetleri barındırmak için tasarlanmış bir uygulama. Bunlar Internet Information Services (IIS), Windows Etkinleştirme Hizmetleri (WAS) ve Windows Hizmetleri'dir. Bu barındırılan senaryolarda konak, hizmetin ömrünü denetler. Örneğin, IIS kullanarak hizmet derlemesini ve yapılandırma dosyasını içeren bir sanal dizin ayarlayabilirsiniz. bir ileti alındığında IIS hizmeti başlatır ve ömrünü denetler.
Örnek Oluşturma
Bir hizmette bir instancing modeli vardır. Üç örnek model vardır: tek bir CLR nesnesinin tüm istemcilere hizmet ettiği "single"; " her istemci çağrısını işlemek için yeni bir CLR nesnesinin oluşturulduğu çağrı başına"; ve her ayrı oturum için bir CLR nesnesi kümesinin oluşturulduğu "oturum başına". Bir instancing modeli seçimi, uygulama gereksinimlerine ve hizmetin beklenen kullanım düzenine bağlıdır.
İstemci uygulaması
Bir veya daha fazla uç noktayla ileti alışverişi sağlayan bir program. İstemci uygulaması bir WCF istemcisi örneği oluşturarak ve WCF istemcisinin yöntemlerini çağırarak başlar. Tek bir uygulamanın hem istemci hem de hizmet olabileceğini unutmayın.
Kanal
Bağlama öğesinin somut bir uygulaması. Bağlama, yapılandırmayı temsil eder ve kanal bu yapılandırmayla ilişkili uygulamadır. Bu nedenle, her bağlama öğesiyle ilişkilendirilmiş bir kanal vardır. Bağlamanın somut uygulamasını oluşturmak için kanallar üst üste yığılmış: kanal yığını.
WCF istemcisi
Hizmet işlemlerini yöntemler olarak kullanıma sunan bir istemci-uygulama yapısı (Visual Basic veya Visual C# gibi seçtiğiniz .NET Framework programlama dilinde). Herhangi bir uygulama, bir hizmeti barındıran bir uygulama da dahil olmak üzere bir WCF istemcisi barındırabilir. Bu nedenle, diğer hizmetlerin WCF istemcilerini içeren bir hizmet oluşturmak mümkündür.
WcF istemcisi, ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) kullanılarak ve meta verileri yayımlayan çalışan bir hizmete işaret edilerek otomatik olarak oluşturulabilir.
Meta veriler
Bir hizmette, bir dış varlığın hizmetle iletişim kurmak için anlaması gereken hizmetin özelliklerini açıklar. Meta veriler ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) tarafından bir WCF istemcisi ve bir istemci uygulamasının hizmetle etkileşimde bulunabileceği ek yapılandırma oluşturmak için kullanılabilir.
Hizmet tarafından sunulan meta veriler, hizmetin veri sözleşmesini tanımlayan XML şema belgelerini ve hizmetin yöntemlerini açıklayan WSDL belgelerini içerir.
Etkinleştirildiğinde, hizmet için meta veriler WCF tarafından hizmeti ve uç noktalarını inceleyerek otomatik olarak oluşturulur. Bir hizmetten meta verileri yayımlamak için meta veri davranışını açıkça etkinleştirmeniz gerekir.
Güvenlik
WCF'de gizlilik (gizlice dinlemeyi önlemek için iletilerin şifrelenmesi), bütünlük (iletide kurcalama algılama araçları), kimlik doğrulaması (sunucuların ve istemcilerin doğrulama araçları) ve yetkilendirmeyi (kaynaklara erişimin denetimi) içerir. Bu işlevler, HTTP üzerinden TLS (HTTPS olarak da bilinir) gibi mevcut güvenlik mekanizmalarından yararlanılarak veya çeşitli WS-* güvenlik belirtimlerinden biri veya daha fazlası uygulanarak sağlanır.
Aktarım güvenlik modu
Gizlilik, bütünlük ve kimlik doğrulamasının aktarım katmanı mekanizmaları (HTTPS gibi) tarafından sağlandığını belirtir. HTTPS gibi bir aktarım kullanırken, bu mod performansında verimli olma avantajına sahiptir ve İnternet'teki yaygınlığı nedeniyle iyi anlaşılmıştır. Dezavantajı, bu tür bir güvenliğin iletişim yolundaki her atlamaya ayrı olarak uygulanması ve iletişimin bir "ortadaki adam" saldırısına duyarlı hale getirilmesidir.
İleti güvenlik modu
Güvenliğin, Web Hizmetleri Güvenliği: SOAP İleti Güvenliği adlı belirtim gibi bir veya daha fazla güvenlik belirtimi uygulanarak sağlandığını belirtir. Her ileti, aktarım sırasında güvenlik sağlamak ve alıcıların kurcalama algılamasını ve iletilerin şifresini çözmesini sağlamak için gerekli mekanizmaları içerir. Bu anlamda, güvenlik her ileti içinde kapsüllenmiş ve birden çok atlamada uçtan uca güvenlik sağlar. Güvenlik bilgileri iletinin bir parçası haline geldiğinden, iletiye birden çok kimlik bilgisi türü eklemek de mümkündür (bunlar talep olarak adlandırılır). Bu yaklaşım ayrıca, iletinin kaynağı ve hedefi arasındaki birden çok taşıma dahil olmak üzere herhangi bir taşıma üzerinde güvenli bir şekilde seyahat etmesini sağlama avantajına da sahiptir. Bu yaklaşımın dezavantajı, kullanılan şifreleme mekanizmalarının karmaşıklığıdır ve bu da performans üzerindeki etkilere neden olur.
İleti kimlik bilgisi güvenlik moduyla aktarım
İletilerin gizliliğini, kimlik doğrulamasını ve bütünlüğünü sağlamak için aktarım katmanının kullanımını belirtirken, iletilerin her biri iletinin alıcıları için gereken birden çok kimlik bilgisi (talep) içerebilir.
WS-*
WCF'de uygulanan WS-Security, WS-ReliableMessaging gibi büyüyen Web Hizmeti (WS) belirtimleri kümesinin kısaltması.