Aracılığıyla paylaş


Yönlendirme Hizmeti

Yönlendirme Hizmeti, ileti yönlendiricisi işlevi gören genel bir SOAP aracıdır. Yönlendirme Hizmeti'nin temel işlevselliği, iletileri ileti içeriğine göre yönlendirme özelliğidir ve bu da iletinin, iletinin kendi içindeki bir değere (üst bilgide veya ileti gövdesinde) göre istemci uç noktasına iletilmesine olanak tanır.

RoutingService, ad alanında System.ServiceModel.Routing bir Windows Communication Foundation (WCF) hizmeti olarak uygulanır. Yönlendirme Hizmeti, iletileri alan bir veya daha fazla hizmet uç noktasını kullanıma sunar ve ardından her iletiyi ileti içeriğine göre bir veya daha fazla istemci uç noktasına yönlendirir. Hizmet aşağıdaki özellikleri sağlar:

  • İçerik tabanlı yönlendirme

    • Hizmet toplama

    • Hizmet sürümü oluşturma

    • Öncelikli yönlendirme

    • Dinamik yapılandırma

  • Protokol köprüleme

  • SOAP işleme

  • Gelişmiş hata işleme

  • Yedekleme uç noktaları

Bu hedeflerden birini veya daha fazlasını başaran bir aracı hizmet oluşturmak mümkün olsa da, bu tür bir uygulama genellikle belirli bir senaryoya veya çözüme bağlıdır ve yeni uygulamalara kolayca uygulanamaz.

Yönlendirme Hizmeti, WCF Hizmeti ve Kanal modelleri ile uyumlu genel, dinamik olarak yapılandırılabilir, takılabilir bir SOAP aracı sağlar ve SOAP tabanlı iletilerin içerik tabanlı yönlendirmesini gerçekleştirmenize olanak tanır.

Not

Yönlendirme Hizmeti şu anda WCF REST hizmetlerinin yönlendirmesini desteklememektedir. REST çağrılarını yönlendirmek için veya Uygulama İsteği Yönlendirme'yi kullanmayı System.Web.Routing göz önünde bulundurun.

İçerik Tabanlı Yönlendirme

İçerik tabanlı yönlendirme, bir iletiyi iletinin içinde yer alan bir veya daha fazla değere göre yönlendirme özelliğidir. Yönlendirme Hizmeti her iletiyi inceler ve ileti içeriğine ve oluşturduğunuz yönlendirme mantığına göre hedef uç noktaya yönlendirir. İçerik tabanlı yönlendirme, hizmet toplama, hizmet sürümü oluşturma ve öncelik yönlendirme için temel sağlar.

İçerik tabanlı yönlendirme uygulamak için Yönlendirme Hizmeti, yönlendirilecek iletiler içindeki belirli değerleri eşleştirmek için kullanılan uygulamalara dayanır MessageFilter . MessageFilter bir iletiyle eşleşiyorsa, ileti MessageFilter ile ilişkili hedef uç noktaya yönlendirilir. İleti filtreleri, karmaşık yönlendirme mantığı oluşturmak için filtre tablolarında (FilterTableCollection) birlikte gruplandırılır. Örneğin, bir filtre tablosu, iletilerin beş hedef uç noktasından yalnızca birine yönlendirilmesine neden olan birbirini dışlayan beş ileti filtresi içerebilir.

Yönlendirme Hizmeti, içerik tabanlı yönlendirme gerçekleştirmek için kullanılan mantığı yapılandırmanıza ve çalışma zamanında yönlendirme mantığını dinamik olarak güncelleştirmenize olanak tanır.

İleti filtrelerini filtre tablolarında gruplandırma yoluyla, aşağıdakiler gibi birden çok yönlendirme senaryolarını işlemenizi sağlayan yönlendirme mantığı oluşturulabilir:

  • Hizmet toplama

  • Hizmet sürümü oluşturma

  • Öncelikli yönlendirme

  • Dinamik yapılandırma

İleti filtreleri ve filtre tabloları hakkında daha fazla bilgi için bkz . Yönlendirme Giriş ve İleti Filtreleri.

Hizmet Toplama

İçerik tabanlı yönlendirmeyi kullanarak, dış istemci uygulamalarından ileti alan ve ardından her iletiyi ileti içindeki bir değere göre uygun iç uç noktaya yönlendiren bir uç nokta kullanıma sunun. Bu, çeşitli arka uç uygulamaları için belirli bir uç nokta sunmak ve ayrıca uygulamanızı çeşitli hizmetlere hesaba katarak müşterilere bir uygulama uç noktası sunmak için yararlıdır.

Hizmet Sürümü Oluşturma

Çözümünüzün yeni bir sürümüne geçiş yaparken, mevcut müşterilere hizmet vermek için eski sürümü paralel olarak tutmanız gerekebilir. Bunun için genellikle yeni sürüme bağlanan istemcilerin çözümle iletişim kurarken farklı bir adres kullanması gerekir. Yönlendirme Hizmeti, iletileri iletide yer alan sürüme özgü bilgilere göre uygun çözüme yönlendirerek çözümünüzün her iki sürümünü de sunan bir hizmet uç noktasını kullanıma sunmanızı sağlar. Böyle bir uygulama örneği için bkz . Nasıl Yapılır: Hizmet Sürümü Oluşturma.

Öncelik Yönlendirme

Birden çok istemci için bir hizmet sağlarken, bu iş ortaklarının tüm verilerinin diğer istemcilerden ayrı olarak işlenmesini gerektiren bazı iş ortaklarıyla bir hizmet düzeyi sözleşmeniz (SLA) olabilir. İletide yer alan müşteriye özgü bilgileri arayan bir filtre kullanarak, belirli iş ortaklarından gelen iletileri SLA gereksinimlerini karşılamak için oluşturulmuş bir uç noktaya kolayca yönlendirebilirsiniz.

Dinamik Yapılandırma

İletilerin hizmet kesintisi olmadan işlenmesi gereken görev açısından kritik sistemleri desteklemek için, çalışma zamanında sistem içindeki bileşenlerin yapılandırmasını değiştirebilmeniz çok önemlidir. Bu gereksinimi desteklemek için Yönlendirme Hizmeti, RoutingExtensionçalışma zamanında Yönlendirme Hizmeti yapılandırmasının dinamik olarak güncelleştirilmesini sağlayan bir IExtension<T> uygulaması sağlar.

Yönlendirme Hizmeti'nin dinamik yapılandırması hakkında daha fazla bilgi için bkz . Yönlendirmeye Giriş.

Protokol Köprü Oluşturma

Ara senaryolardaki zorluklardan biri, iç uç noktaların iletilerin alındığı uç noktadan farklı aktarım veya SOAP sürümü gereksinimlerine sahip olmasıdır. Bu senaryoyu desteklemek için Yönlendirme Hizmeti, SOAP iletisini hedef uç noktaların MessageVersion gerektirdiği şekilde işleme dahil olmak üzere protokolleri köprüleyebilir. Bu şekilde, bir protokol iç iletişim için, diğeri ise dış iletişim için kullanılabilir.

Farklı aktarımlara sahip uç noktalar arasında iletilerin yönlendirilmesine destek olmak için Yönlendirme Hizmeti, hizmetin farklı protokollere köprü oluşturmasını sağlayan sistem tarafından sağlanan bağlamaları kullanır. Bu, Yönlendirme Hizmeti tarafından kullanıma sunulan hizmet uç noktası iletilerin yönlendirdiği istemci uç noktalarından farklı bir protokol kullandığında otomatik olarak gerçekleşir.

SOAP İşleme

Yaygın bir yönlendirme gereksinimi, farklı SOAP gereksinimlerine sahip uç noktalar arasında iletilerin yönlendirilebilmesidir. Yönlendirme Hizmeti bu gereksinimi desteklemek için, ileti ona yönlendirilmeden önce hedef uç noktanın gereksinimlerini karşılayan yeni bir MessageVersion'ı otomatik olarak oluşturan bir sağlarSoapProcessingBehavior. Bu davranış ayrıca, yanıtın MessageVersion'ının özgün istekle eşleştiğinden emin olmak için istekte bulunan istemci uygulamasına döndürmeden önce herhangi bir yanıt iletisi için yeni bir MessageVersion oluşturur.

SOAP işleme hakkında daha fazla bilgi için bkz . Yönlendirmeye Giriş.

Hata İşleme

Ağ iletişimlerine dayanan dağıtılmış hizmetlerden oluşan bir sistemde, sisteminizdeki iletişimlerin geçici ağ hatalarına karşı dayanıklı olduğundan emin olmak önemlidir. Yönlendirme Hizmeti, hizmet kesintisine neden olabilecek birçok iletişim hatası senaryosunu işlemenize olanak tanıyan hata işleme uygular.

Yönlendirme Hizmeti ileti göndermeye çalışırken bir CommunicationException süre karşılaşırsa hata işleme gerçekleşir. Bu özel durumlar genellikle , ServerTooBusyExceptionveya CommunicationObjectFaultedExceptiongibi EndpointNotFoundExceptiontanımlı istemci uç noktasıyla iletişim kurmaya çalışırken bir sorunla karşılaşıldığını gösterir. Ayrıca hata işleme kodu, CommunicationException'dan türetilmeyen bir diğer yaygın özel durum olan TimeoutException oluştuğunda göndermeyi yakalar ve yeniden denemeyi dener.

Hata işleme hakkında daha fazla bilgi için bkz . Yönlendirmeye Giriş.

Yedekleme Uç Noktaları

Filtre tablosundaki her filtre tanımıyla ilişkili hedef istemci uç noktalarına ek olarak, iletim hatası durumunda iletinin yönlendirileceği yedekleme uç noktalarının listesini de oluşturabilirsiniz. Bir hata oluşursa ve filtre girişi için bir yedekleme listesi tanımlanırsa, Yönlendirme Hizmeti iletiyi listede tanımlanan ilk uç noktaya göndermeyi dener. Bu iletim girişimi başarısız olursa, hizmet sonraki uç noktayı dener ve iletim girişimi başarılı olana, iletimle ilgili olmayan bir hata döndürene veya yedekleme listesindeki tüm uç noktalar bir iletim hatası döndürene kadar bu işleme devam eder.

Yedekleme uç noktaları hakkında daha fazla bilgi için bkz . Yönlendirme Giriş ve İleti Filtreleri.

Akışlar

Bağlamayı akışı destekleyecek şekilde ayarlarsanız yönlendirme hizmeti iletileri başarıyla akışla aktarabilir. Ancak, iletilerin arabelleğe almanız gerekebileceği bazı koşullar vardır:

  • Çok noktaya yayın (ek ileti kopyaları oluşturmak için arabellek)

  • Yük devretme (iletinin bir yedeklemeye gönderilmesi gerektiğinde arabellek)

  • System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly yanlıştır (filtrelerin gövdeyi inceleyebilmesi için MessageFilterTable'ı bir MessageBuffer ile sunmak için arabellek)

  • Dinamik yapılandırma

Ayrıca bkz.