Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 geliştiricileri için gRPC'yi neden öneririz?
- WCF ile gRPC karşılaştırması
- WCF geliştiricileri için gRPC'ye giriş
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:"
ContractDescription ağacını oluşturmak
Tüm gerekli CLR türlerini yansıtma
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.
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.