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.
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 geliştiricileri için gRPC'yi neden öneririz?
- WCF ile gRPC karşılaştırması
- WCF geliştiricileri için gRPC'ye giriş
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.
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.
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.
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 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.
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.
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 , 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.
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.
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.
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.
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.
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.
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.
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 |
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.
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:
Ağacı oluşturma ContractDescription
Tüm gerekli CLR türlerini Düşünceler
Kanal yığınını oluşturma
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.
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.
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.
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.
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ı.
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.
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.
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.
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.
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>
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.