Windows Communication Foundation 4.5'teki yenilikler

Bu konuda, Windows Communication Foundation (WCF) sürüm 4.5'te yeni özellikler ele alınmaktadır.

WCF'ye alternatif olarak gRPC

gRPC, WCF'ye popüler bir alternatif olan modern bir RPC çerçevesidir. gRPC, AŞAĞıDAKIler dahil olmak üzere WCF'ye göre bir dizi avantaj sağlayan HTTP/2 üzerine kurulmuştur:

  • Performans: gRPC, özellikle uzun süre çalışan bağlantılar için WCF'den çok daha verimlidir.
  • Ölçeklenebilirlik: gRPC, çok sayıda istemci ve sunucuya ölçeklendirilecek şekilde tasarlanmıştır.
  • Güvenlik: gRPC, TLS ve kimlik doğrulaması dahil olmak üzere çeşitli güvenlik mekanizmalarını destekler.
  • Platformlar arası: gRPC platformdan bağımsızdır ve çeşitli programlama dilleri ile kullanılabilir.

WCF uygulamalarını geliştirme veya gRPC'ye geçirme hakkında daha fazla bilgi için bkz:

WCF Basitleştirme Özellikleri

WCF 4.5 uygulamalarının geliştirilmesini ve bakımını kolaylaştırmak için çok fazla çalışma yapılmıştır. Daha fazla bilgi için bkz. WCF Basitleştirme Özellikleri.

Görev Tabanlı Asenkron Desteği

Varsayılan olarak, Hizmet Başvurusu Ekleme, Görev döndüren asenkron hizmet işlem yöntemleri oluşturur. Bu, hem zaman uyumlu hem de zaman uyumsuz yöntemler için yapılır. Bu, yeni Görev tabanlı zaman uyumsuz programlama modelini kullanarak hizmet işlemlerini zaman uyumsuz olarak çağırmanızı sağlar. Oluşturulan proxy yöntemini çağırdığınızda, WCF zaman uyumsuz işlemi temsil etmek için bir Task nesnesi oluşturur ve bu Görevi size döndürür. İşlem tamamlandığında Görev tamamlar. Zaman uyumsuz bir işlem uygularken, bunu görev tabanlı bir zaman uyumsuz işlem olarak uygulayabilirsiniz. Daha fazla bilgi için bkz. Zaman Uyumlu ve Zaman Uyumsuz İşlemler.

Basitleştirilmiş Oluşturulan Yapılandırma Dosyaları

Visual Studio'da bir hizmet başvurusu eklediğinizde veya SvcUtil.exe aracını kullandığınızda, bir istemci yapılandırma dosyası oluşturulur. WCF'nin önceki sürümlerinde bu yapılandırma dosyaları, değeri varsayılan değer olsa bile her bağlama özelliğinin değerini içeriyordu. WCF 4.5'te oluşturulan yapılandırma dosyaları yalnızca varsayılan olmayan bir değere ayarlanmış bağlama özelliklerini içerir.

Daha fazla bilgi için bkz. WCF Basitleştirme Özellikleri.

Contract-First Geliştirme

WCF artık sözleşme öncelikli geliştirme desteğine sahiptir. svcutil.exe bir WSDL belgesinden hizmet ve veri sözleşmeleri oluşturmanıza olanak tanıyan bir /serviceContract anahtarı vardır.

Taşınabilir Alt Küme Projesinden Servis Referansı Ekle

Taşınabilir alt küme projeleri, .NET derleme programcılarının tek bir kaynak ağacı ve derleme sistemini koruyabilmesini sağlarken aynı anda birden çok .NET platformlarını (masaüstü, Silverlight, Windows Phone ve Xbox) desteklemeye devam eder. Taşınabilir alt küme projeleri yalnızca herhangi bir .NET platformunda kullanılabilen derlemeler olan .NET taşınabilir kitaplıklarına başvurur. Geliştirici deneyimi, başka bir WCF istemci uygulamasına hizmet başvurusu eklemekle aynıdır. Daha fazla bilgi için bkz. Taşınabilir Alt Küme Projesinde Hizmet Başvurusu Ekleme.

ASP.NET Uyumluluk Modu Varsayılan Olarak Değiştirildi

WCF, wcf hizmetleri yazarken geliştiricilere ASP.NET HTTP işlem hattındaki özelliklere tam erişim vermek için ASP.NET uyumluluk modu sağlar. Bu modu kullanmak için web.config içindeki aspNetCompatibilityEnabled bölümündeki < özniteliğini true olarak ayarlamanız gerekir. Ayrıca, bu appDomain'deki herhangi bir hizmetin, > niteliğini veya RequirementsMode olarak ayarlanmış bir AspNetCompatibilityRequirementsAttribute özelliğine sahip olması gerekir. Varsayılan olarak AspNetCompatibilityRequirementsAttribute artık olarak Allowedayarlanır. Daha fazla bilgi için bkz . WCF Hizmetleri ve ASP.NET.

Yeni Taşıma Varsayılan Değerleri

Yapılandırmayı basitleştirmek için bir dizi aktarım özelliği varsayılan değeri değişmiştir. Daha fazla bilgi için bkz. WCF Basitleştirme Özellikleri.

XmlDictionaryReaderQuotas

XmlDictionaryReaderQuotas , bir kodlayıcı tarafından ileti oluşturulurken kullanılan bellek miktarını sınırlayan XML sözlük okuyucuları için yapılandırılabilir kota değerleri içerir. Bu kotalar yapılandırılabilir olsa da, varsayılan değerler bir geliştiricinin bunları açıkça ayarlama olasılığını azaltacak şekilde değişmiştir. Daha fazla bilgi için bkz. WCF Basitleştirme Özellikleri.

WCF Yapılandırma Doğrulaması

Visual Studio'da derleme işleminin bir parçası olarak, WCF yapılandırma dosyaları artık proje içinde tanımlanan öznitelikler için doğrulanıyor. Doğrulama başarısız olursa Visual Studio'da doğrulama hatalarının veya uyarılarının listesi görüntülenir.

XML Düzenleyicisi Araç İpuçları

Yeni ve mevcut WCF hizmeti geliştiricilerinin hizmetlerini yapılandırmalarına yardımcı olmak için, Visual Studio XML düzenleyicisi artık hizmet yapılandırma dosyasının parçası olan her yapılandırma öğesi ve özellikleri için araç ipuçları sağlar.

Akış Geliştirmeleri

Artık gerçek asenkron akış desteği eklendi; bu sayede alma tarafı okumuyor veya yavaş okuyorsa gönderme tarafı iş parçacıklarını engellemez ve böylece ölçeklenebilirlik artar. İstemci, IIS tarafından barındırılan WCF hizmetine akışla ileti gönderdiğinde ileti arabelleğe alma sınırlaması kaldırıldı. Daha fazla bilgi için bkz. WCF Basitleştirme Özellikleri.

IIS ile HTTPS Üzerinden Uç Noktanın Yayınlanmasının Basitleştirilmesi

HTTPS üzerinden bir uç noktanın açığa çıkartılması basitleştirmek için bir HTTPS protokolü eşlemesi eklenmiştir. HTTPS uç noktasını etkinleştirmek için web sitenizin yapılandırılmış bir HTTPS bağlaması ve SSL sertifikası olduğundan emin olun ve ardından hizmeti barındıran sanal dizin için HTTPS'yi etkinleştirmeniz yeterlidir. Hizmet için meta veriler etkinleştirildiyse HTTPS üzerinden de kullanıma sunulur.

Tek Bir WSDL Belgesi Oluşturma

Bazı üçüncü taraf WSDL işleme yığınları, xsd:import aracılığıyla diğer belgelere bağımlılıkları olan WSDL belgelerini işleyemez. WCF artık tüm WSDL bilgilerinin tek bir belgede döndürüleceğini belirtmenize olanak tanır. Tek bir WSDL belgesi istemek için hizmetten meta veriler istenirken URI'ye "?singleWSDL" ekleyin.

WebSocket Desteği

WebSockets, TCP'ye benzer performans özelliklerine sahip 80 ve 443 numaralı bağlantı noktaları üzerinden gerçek çift yönlü iletişim sağlayan bir teknolojidir. WebSocket aktarımı üzerinden iletişimi desteklemek için iki yeni bağlama eklendi. NetHttpBinding ve NetHttpsBinding. Daha fazla bilgi için bkz. System-Provided Bağlamaları.

Yeni Taşıma Varsayılan Değerleri

Aşağıdaki tabloda değiştirilen ayarlar ve ek bilgilerin nerede bulunacağı açıklanmaktadır.

Mülkiyet On Yeni Varsayılan Daha fazla bilgi için bkz.
kanalBaşlatmaZamanAşımı NetTcpBinding 30 saniye ChannelInitializationTimeout
yorumlama listesi NetTcpBinding 12 * işlemci sayısı ListenBacklog
maxPendingAccepts (Beklenen Kabul Sayısı Maksimumu) ConnectionOrientedTransportBindingElement (Bağlantı Yönelimli Taşıma Bağlama Öğesi)

SMSvcHost.exe
Taşıma için 2 * işlemci sayısı

SMSvcHost.exe için 4 * işlemci sayısı
MaxPendingAccepts Net.TCP Bağlantı Noktası Paylaşım Hizmetini Yapılandırma
maxPendingConnections ConnectionOrientedTransportBindingElement (Bağlantı Yönelimli Taşıma Bağlama Öğesi) 12 * işlemci sayısı MaxPendingConnections
receiveTimeout SMSvcHost.exe 30 saniye Net.TCP Bağlantı Noktası Paylaşım Hizmetini Yapılandırma

WCF Hizmetlerini Kodda Yapılandırma

Windows Communication Foundation (WCF), geliştiricilerin yapılandırma dosyalarını veya kodunu kullanarak hizmetleri yapılandırmasına olanak tanır. Yapılandırma dosyaları, bir hizmetin dağıtıldıktan sonra yapılandırılması gerektiğinde kullanışlıdır. Yapılandırma dosyalarını kullanırken, bir BT uzmanının yalnızca yapılandırma dosyasını güncelleştirmesi gerekir, yeniden derleme gerekmez. Ancak yapılandırma dosyalarının bakımı karmaşık ve zor olabilir. Yapılandırma dosyalarında hata ayıklama desteği yoktur ve yapılandırma öğelerine adlar tarafından başvurulur ve bu da yapılandırma dosyalarını yazmanın hataya açık ve zor olmasını sağlar. WCF, hizmetleri kodda yapılandırmanıza da olanak tanır. WCF'nin önceki sürümlerinde (4.0 ve önceki sürümlerde) hizmetleri kodda yapılandırmak şirket içinde barındırılan ServiceHost senaryolarda kolaydı, sınıfı ServiceHost.Open çağrısından önce uç noktaları ve davranışları yapılandırmanıza izin verdi. Ancak web'de barındırılan ServiceHost senaryolarda sınıfına erişiminiz yoktur. Web'de barındırılan bir hizmeti yapılandırmak için System.ServiceModel.ServiceHostFactory öğesini oluşturan ve gerekli yapılandırmayı gerçekleştiren bir ServiceHostFactory oluşturmanız gerekiyordu. .NET Framework 4.5'den itibaren, WCF, kodda hizmetleri yapılandırmak için daha kolay bir yol sağlayarak hem özyönetimli hem de web üzerinde barındırılan hizmetleri destekler. Daha fazla bilgi için bkz. Kodda WCF Hizmetlerini Yapılandırma.

ChannelFactory Önbelleğe Alma

WCF istemci uygulamaları, ChannelFactory<TChannel> wcf hizmetiyle iletişim kanalı oluşturmak için sınıfını kullanır. "ChannelFactory<TChannel> örnekleri oluşturmak, aşağıdaki işlemleri içerdiğinden bazı ek yüklere neden olur:"

  1. ContractDescription ağacını oluşturmak

  2. Tüm gerekli CLR türlerini yansıtma

  3. Kanal yığınını oluşturma

  4. Kaynakları yok etme

Bu ek yükü en aza indirmeye yardımcı olmak için WCF, bir WCF istemci proxy'si kullanırken kanal fabrikalarını önbelleğe alabilir. Daha fazla bilgi için bkz. Channel Factory ve Önbelleğe Alma.

Sıkıştırma ve İkili Kodlayıcı

WCF 4.5'le başlayarak WCF ikili kodlayıcı sıkıştırma desteği ekler. Sıkıştırma türü, CompressionFormat özelliği ile yapılandırılır. hem istemci hem de hizmet CompressionFormat özelliğini yapılandırmalıdır. Sıkıştırma HTTP, HTTPS ve TCP protokolleri için çalışır. İstemci sıkıştırma kullanmayı belirtiyorsa ancak hizmet bunu desteklemiyorsa protokol uyuşmazlığı belirten bir protokol özel durumu oluşturulur. Daha fazla bilgi için bkz. İleti Kodlayıcı Seçme.

Kullanıcı Datagram Protokolü (UDP)

Geliştiricilerin "tetikle ve unut" mesajlaşması kullanan hizmetler yazmasına olanak tanıyan bir UDP aktarımı için destek eklendi. İstemci bir hizmete ileti gönderir ve hizmetten yanıt beklemez.

Birden Çok Kimlik Doğrulama Desteği

HTTP aktarım ve aktarım güvenliği kullanılırken iis tarafından desteklenen birden çok kimlik doğrulama modunu desteklemek için tek bir WCF uç noktasına destek eklendi. IIS, bir sanal dizinde birden çok kimlik doğrulama modunu etkinleştirmenize olanak tanır, bu özellik tek bir WCF uç noktasının WCF hizmetinin barındırıldığı sanal dizin için etkinleştirilen birden çok kimlik doğrulama modunu desteklemesine olanak tanır.

IDN Desteği

Uluslararası Etki Alanı Adlarına sahip WCF hizmetlerine izin vermek için destek eklendi. Daha fazla bilgi için bkz . WCF ve Uluslararası Etki Alanı Adları.

HttpClient

HTTP istekleriyle çalışmayı çok daha kolay hale getirmek için adlı HttpClient yeni bir sınıf eklendi. Daha fazla bilgi için bkz HttpClient . ve HttpClient kullanma yönergeleri.

IntelliSense yapılandırması

Projede tanımlanan özel öznitelikler için yapılandırma dosyalarındaki öznitelik değerleri artık yapılandırmalarla hızlı ve doğru bir şekilde çalışmayı kolaylaştırmak için IntelliSense'i destekliyor.

Yapılandırma araç ipuçları

WCF öğelerinin ve özniteliklerinin artık XML düzenleyicisinde, öğenin veya özniteliğin amacını daha kolay ve doğru bir şekilde tanımlamak için araç ipuçları vardır.

Verileri Sınıf Olarak Yapıştır

WCF projesinde, XML'de tanımlanan veri türleri (örneğin, bir hizmette gösterilir) doğrudan bir kod sayfasına yapıştırılabilir. XML türü CLR türü olarak yapıştırılır. Diğer ayrıntılar için bkz. XML'den Veri Türü Sınıfları Oluşturma .

WebServiceHost ve varsayılan uç noktalar

Visual Studio 2010'da WebServiceHost, açıkça bir uç nokta belirtseniz de belirtmeseniz de otomatik olarak bir varsayılan uç nokta oluşturmuştur. Visual Studio 2012 ve sonraki sürümlerde, WebServiceHost yalnızca açıkça hiçbir uç nokta eklenmediyse varsayılan bir uç nokta oluşturur. İstemciniz varsayılan uç noktayı bekliyorsa, açıkça bir uç nokta ekleyebilir ve istemciyi buna işaret edebilirsiniz. Alternatif olarak, uygulamanızın yapılandırma dosyasına aşağıdaki ayarı ekleyerek WCF'ye önceki davranışa geri dönmesini söyleyebilirsiniz

<appSettings>
    <add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>
  </appSettings>

IHttpCookieContainerManager

tarafından IChannelFactory<TChannel>kullanıma sunulan bu arabirim, istemci tarafındaki tanımlama bilgileriyle çalışmayı çok daha kolay hale getirir. Bağlamada AllowCookies true olarak ayarlandığında, aşağıdaki kodu kullanarak tanımlama bilgilerine erişebilirsiniz:

IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>();
System.Net.CookieContainer container = cookieManager.CookieContainer;

Ardından tanımlama bilgilerini CookieContainer konumundan alabilir veya ayarlayabilirsiniz. AllowCookies 'false' olarak ayarlandığında, OperationContext kullanarak tanımlama bilgilerini el ile alabilir ve başka bir OperationContext veya ileti denetçisi kullanarak diğer isteklerde gönderebilirsiniz. IHttpCookieContainerManager arabirimi, bir hizmetle kullanıcının kimliğini doğrulamanıza ve bu hizmet tarafından döndürülen kimlik doğrulama tanımlama bilgisini kullanarak diğer hizmetlerle kimlik doğrulaması yapmanıza olanak tanır.