Aracılığıyla paylaş


Internet Information Services Tarafından Barındırılan Bir WCF Hizmeti Dağıtma

Internet Information Services'te (IIS) barındırılan bir Windows Communication Foundation (WCF) hizmeti geliştirme ve dağıtma aşağıdaki görevlerden oluşur:

  • IIS, ASP.NET, WCF ve WCF etkinleştirme bileşeninin doğru yüklendiğinden ve kaydedildiğinden emin olun.

  • Yeni bir IIS uygulaması oluşturun veya mevcut bir ASP.NET uygulamasını yeniden kullanabilirsiniz.

  • WCF hizmeti için bir .svc dosyası oluşturun.

  • Hizmet uygulamasını IIS uygulamasına dağıtın.

  • WCF hizmetini yapılandırın.

IIS tarafından barındırılan WCF hizmeti oluşturma hakkında ayrıntılı bir kılavuz için bkz . Nasıl yapılır: IIS'de WCF Hizmeti Barındırma.

IIS, ASP.NET ve WCF'nin Doğru Yüklendiğinden ve Kaydedildiğinden Emin Olun

IIS tarafından barındırılan WCF hizmetlerinin düzgün çalışması için WCF, IIS ve ASP.NET yüklenmelidir. WCF yükleme yordamları (.NET Framework'ün bir parçası olarak), ASP.NET ve IIS işletim sisteminize bağlı olarak değişir. WCF ve .NET Framework'ü yükleme hakkında daha fazla bilgi için bkz . Geliştiriciler için .NET Framework'ü yükleme. Windows 10'a IIS yüklemek için, Denetim Masası'de Programlar ve Özellikler'i açın ve Windows özelliklerini aç veya kapat'ı seçin. Windows Özellikleri'nde Internet Information Services'i ve ardından Tamam'ı seçin.

Windows Features with IIS highlighted

IIS'yi diğer işletim sistemlerine yükleme yönergeleri Windows Vista ve Windows 7'de IIS yükleme ve Windows Server 2012 R2'ye IIS 8.5 yükleme makalesinde bulunabilir.

.NET Framework yükleme işlemi, makinede IIS zaten varsa WCF'yi IIS'ye otomatik olarak kaydeder. .NET Framework'ün ardından IIS yüklenirse, WCF'yi IIS ve ASP.NET kaydetmek için ek bir adım gerekir. Bunu, işletim sisteminize bağlı olarak aşağıdaki gibi yapabilirsiniz:

Yeni IIS Uygulaması Oluşturma veya Mevcut bir ASP.NET Uygulamasını Yeniden Kullanma

IIS tarafından barındırılan WCF hizmetleri bir IIS uygulamasının içinde bulunmalıdır. WCF hizmetlerini özel olarak barındırmak için yeni bir IIS uygulaması oluşturabilirsiniz. Alternatif olarak, wcf hizmetini zaten ASP.NET 2.0 içeriği barındıran mevcut bir uygulamaya (.aspx sayfaları ve ASP.NET Web hizmetleri [ASMX] gibi) dağıtabilirsiniz. Bu seçenekler hakkında daha fazla bilgi için WCF Hizmetleri ve ASP.NET'daki "WCF Hizmetlerini ASP.NET ile Yan Yana Barındırma" ve "WCF Hizmetlerini ASP.NET Uyumluluk Modunda Barındırma" bölümlerine bakın.

IIS 6.0 ve sonraki sürümlerin yalıtılmış nesne odaklı bir programlama uygulamasını düzenli aralıklarla yeniden başlatdığını unutmayın. Varsayılan değer 1740 dakikadır. Desteklenen en yüksek değer 71.582 dakikadır. Bu yeniden başlatma devre dışı bırakılabilir. Bu özellik hakkında daha fazla bilgi için bkz . PeriodicRestartTime.

WCF Hizmeti için bir .svc Dosyası oluşturma

IIS'de barındırılan WCF hizmetleri, IIS uygulamasının içindeki özel içerik dosyaları (.svc dosyaları) olarak temsil edilir. Bu model, ASMX sayfalarının IIS uygulamasının içinde .asmx dosyaları olarak temsil edilen biçimine benzer. .svc dosyası, WCF barındırma altyapısının gelen iletilere yanıt olarak barındırılan hizmetleri etkinleştirmesini sağlayan WCF'ye özgü bir işleme yönergesi (@ServiceHost) içerir. .svc dosyası için en yaygın söz dizimi aşağıdaki deyimdedir.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

@ServiceHost yönergesi ve tek bir özniteliğinden Serviceoluşur. özniteliğinin Service değeri, hizmet uygulamasının ortak dil çalışma zamanı (CLR) türü adıdır. Bu yönergenin kullanılması temel olarak aşağıdaki kodu kullanarak bir hizmet konağı oluşturmaya eşdeğerdir.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

Hizmet için temel adres listesi oluşturma gibi ek barındırma yapılandırması da yapılabilir. Özel barındırma çözümleriyle kullanmak üzere yönergesini genişletmek için özel de ServiceHostFactory kullanabilirsiniz. WCF hizmetlerini barındıran IIS uygulamaları, örneklerin oluşturulmasını ve kullanım ömrünü yönetmekle ServiceHost sorumlu değildir. Yönetilen WCF barındırma altyapısı, .svc dosyası için ilk istek alındığında gerekli ServiceHost örneği dinamik olarak oluşturur. Örnek, kod tarafından açıkça kapatılana veya uygulama geri dönüştürülene kadar serbest bırakılmaz.

.svc dosyalarının söz dizimi hakkında daha fazla bilgi için bkz . @ServiceHost.

Hizmet Uygulamasını IIS Uygulamasına Dağıtma

IIS'de barındırılan WCF hizmetleri, ASP.NET 2.0 ile aynı dinamik derleme modelini kullanır. ASP.NET olduğu gibi IIS tarafından barındırılan WCF hizmetleri için uygulama kodunu çeşitli konumlarda aşağıdaki gibi çeşitli yollarla dağıtabilirsiniz:

  • Genel derleme önbelleğinde (GAC) veya uygulamanın \bin dizininde bulunan önceden derlenmiş bir .dll dosyası olarak. Sınıf kitaplığının yeni bir sürümü dağıtılana kadar önceden derlenmiş ikili dosyalar güncelleştirilmez.

  • Uygulamanın \App_Code dizininde bulunan derlenmemiş kaynak dosyaları olarak. Uygulamanın ilk isteği işlenirken bu dizinde bulunan kaynak dosyalar dinamik olarak gereklidir. \App_Code dizinindeki dosyalarda yapılan tüm değişiklikler, sonraki istek alındığında uygulamanın tamamının geri dönüştürülerek yeniden derlenmelerine neden olur.

  • Derlenmemiş kod olarak doğrudan .svc dosyasına yerleştirilir. Uygulama kodu, @ServiceHost yönergesinin ardından hizmetin .svc dosyasında satır içinde de bulunabilir. Satır içi kodda yapılan tüm değişiklikler, sonraki istek alındığında uygulamanın geri dönüştürülerek yeniden derlenmelerine neden olur.

ASP.NET 2.0 derleme modeli hakkında daha fazla bilgi için bkz . Derlemeye Genel Bakış ASP.NET.

WCF Hizmetini Yapılandırma

IIS tarafından barındırılan WCF hizmetleri, yapılandırmalarını uygulamalar Web.config dosyasında depolar. IIS tarafından barındırılan hizmetler, IIS dışında barındırılan WCF hizmetleriyle aynı yapılandırma öğelerini ve söz dizimini kullanır. Ancak aşağıdaki kısıtlamalar IIS barındırma ortamı için benzersizdir:

  • IIS tarafından barındırılan hizmetler için temel adresler.

  • IIS dışında WCF hizmetlerini barındıran uygulamalar, oluşturucuya bir dizi temel adres URI'si ServiceHost geçirerek veya hizmetin yapılandırmasında bir <konak> öğesi sağlayarak barındırdıkları hizmetlerin temel adresini denetleyebilir. IIS'de barındırılan hizmetlerin temel adreslerini denetleme özelliği yoktur; IIS tarafından barındırılan bir hizmetin temel adresi, .svc dosyasının adresidir.

IIS Tarafından Barındırılan Hizmetler için Uç Nokta Adresleri

IIS'de barındırıldığında uç nokta adresleri her zaman hizmeti temsil eden .svc dosyasının adresine göre kabul edilir. Örneğin, bir WCF hizmetinin temel adresi aşağıdaki uç nokta yapılandırmasıyla birlikteyse http://localhost/Application1/MyService.svc :

<endpoint address="anotherEndpoint" />

Bu, adresinden http://localhost/Application1/MyService.svc/anotherEndpointulaşabileceğiniz bir uç nokta sağlar.

Benzer şekilde, göreli adres olarak boş bir dize kullanan uç nokta yapılandırma öğesi temel adres olan konumunda http://localhost/Application1/MyService.svculaşılabilir bir uç nokta sağlar.

<endpoint address="" />

IIS tarafından barındırılan hizmet uç noktaları için her zaman göreli uç nokta adresleri kullanmalısınız. Tam uç nokta adresi (örneğin, ) sağlamak, http://localhost/MyService.svcuç nokta adresi hizmeti barındıran IIS-uygulamasına işaret etmiyorsa hizmetin dağıtımında hatalara yol açabilir. Barındırılan hizmetler için göreli uç nokta adreslerinin kullanılması bu olası çakışmaları önler.

Kullanılabilir Taşımalar

IIS 5.1 ve IIS 6.0'da barındırılan WCF hizmetleri HTTP tabanlı iletişim kullanımıyla sınırlıdır. Bu IIS platformlarında, barındırılan bir hizmeti HTTP olmayan bağlama kullanacak şekilde yapılandırmak, hizmet etkinleştirme sırasında bir hatayla sonuçlanır. IIS 7.0 için desteklenen aktarımlar HTTP, Net.TCP, Net.Pipe, Net.MSMQ ve mevcut MSMQ uygulamalarıyla geriye dönük uyumluluk için msmq.formatname'i içerir.

HTTP Taşıma Güvenliği

IIS tarafından barındırılan WCF hizmetleri, hizmeti içeren IIS sanal dizini bu ayarları desteklediği sürece HTTP aktarım güvenliğini (örneğin, Temel, Özet ve Windows Tümleşik Kimlik Doğrulaması gibi HTTPS ve HTTP kimlik doğrulama düzenleri) kullanabilir. Barındırılan uç noktanın bağlaması üzerindeki HTTP Aktarım Güvenliği ayarları, onu içeren IIS sanal dizinindeki aktarım güvenliği ayarlarıyla eşleşmelidir.

Örneğin, HTTP özet kimlik doğrulamasını kullanacak şekilde yapılandırılmış bir WCF uç noktası, HTTP özet kimlik doğrulamasına izin verecek şekilde yapılandırılmış bir IIS sanal dizininde bulunmalıdır. IIS ayarlarının ve WCF uç noktası ayarlarının eşleşmeyen birleşimleri, hizmet etkinleştirme sırasında hataya neden olur.

Ayrıca bkz.