Aracılığıyla paylaş


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 Kolaylaştırma Ö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ı Zaman Uyumsuz Destek

Varsayılan olarak, Hizmet Başvurusu Ekle, Görev döndüren zaman uyumsuz hizmet işlemi 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.

Sözleşme öncelikli 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 Hizmet Başvurusu Ekleme

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 Telefon 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 dosyasının aspNetCompatibilityEnabled<serviceHostingEnvironment> bölümünde özniteliğini true olarak ayarlamanız gerekir. Ayrıca, bu appDomain içindeki herhangi bir hizmetin veya Requiredolarak ayarlanmış özelliğine AllowedAspNetCompatibilityRequirementsAttribute sahip RequirementsMode olması gerekir. Varsayılan olarak AspNetCompatibilityRequirementsAttribute artık olarak Allowedayarlanır. Daha fazla bilgi için bkz . WCF Hizmetleri ve ASP.NET.

Yeni Aktarım 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

Alma tarafı okunmuyorsa veya yavaş okunmuyorsa artık gönderme tarafının iş parçacıklarını engellemediği ve dolayısıyla ölçeklenebilirliği artırdığı gerçek zaman uyumsuz akış desteği eklendi. İ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 Açığa Çıkartılması Basitleştirme

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. Sistem Tarafından Sağlanan Bağlamalar.

Yeni Aktarım Varsayılan Değerleri

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

Özellik Açık Yeni Varsayılan Daha fazla bilgi için bkz.
channelInitializationTimeout NetTcpBinding 30 saniye ChannelInitializationTimeout
Listenbacklog NetTcpBinding 12 * işlemci sayısı ListenBacklog
maxPendingAccepts ConnectionOrientedTransportBindingElement

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

SMSvcHost.exe için 4 * işlemci sayısı
MaxPendingAcceptsNet.TCP Bağlantı Noktası Hizmetini Yapılandırma
maxPending Bağlan ions ConnectionOrientedTransportBindingElement 12 * işlemci sayısı MaxPendingConnections
receiveTimeout SMSvcHost.exe 30 saniye Net.TCP Bağlantı Noktası 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, öğesini oluşturan ve gerekli yapılandırmayı ServiceHostFactory gerçekleştiren bir System.ServiceModel.ServiceHostFactory oluşturmanız gerekiyordu. .NET Framework 4.5'den başlayarak WCF, kodda hem şirket içinde barındırılan hem de web'de barındırılan hizmetleri yapılandırmak için daha kolay bir yol sağlar. 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. Örnekleri oluşturmak ChannelFactory<TChannel> , aşağıdaki işlemleri içerdiğinden bazı ek yüklere neden olur:

  1. Ağacı oluşturma ContractDescription

  2. Tüm gerekli CLR türlerini Düşünceler

  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ü özelliğiyle CompressionFormat yapılandırılır. hem istemci hem de hizmet özelliğini yapılandırmalıdır CompressionFormat . 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.

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 adresinden CookieContaineralabilir veya ayarlayabilirsiniz. AllowCookies false olarak ayarlandığında, kullanarak OperationContext 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.