2014-10-24 17 views
5

ASP.NET Web API'sinde, HTTP istekleri ve yanıtları, sunucudaki boru hattında işlenir.Mesaj İşleyicileri ve Http Modülü?

Ben boru hattının çok erken aşamalarında bazı mantık veya global davranışı eklemek istiyorsanız, ben İleti İşleyicisi'ndeki yapmalı. (örneğin: kimlik doğrulaması)

Peki ya Http modülü boru hattı? bütün bu hikayeye uyuyor? enter image description here

(... daha içerir ama)

http://i.stack.imgur.com/jkQe8.jpg

enter image description here

Ama Http modülü genel olaylara bakarak:

web api yaşam döngüsünün bu numaralı safhada bakıyor

Soru:

- Bu 2 sistem nasıl birleşir ve nerede? Yani web api ve http modülünü içeren 1 resim olsaydı, sayı nasıl olurdu? (Kolay referans vermek için resimlere ekledim)

- Bunu her zaman duyarım Eğer boru hattında daha önce bir şeyler yapmak istersem, mesaj işleyicileri kullanmalıyım, ama HttpModule'un BeginRequest nolu örneğini kullanmalıyım? Bu aşamada null olan nesneler olduğunu biliyorum, ama yine de, httpmodule'deki sonraki aşamalar HttpContetxt'in nesnelerini şişiriyor - ve yine de, webapi'nin adamları şunları söylüyor: MessageHandlers ... (kendi kendini geliştirme ortamı) ile ilgilidir?

cevap

5

Aşağıdaki şeklin en üstteki ile birleştirilmesi için, üstteki şekildeki IHttpHandler kutusunun aşağıdaki resimde bulunan ASPX'e karşılık geldiğine dikkat edin, böylece aşağı resmi üst solun soluna yerleştirin. Yani, 8 ve 9, IIS ASP.NET boru hattının bir parçasıdır. IIS boru hattı modülleri, vb. Çalıştırır ve bir işleyici isteği ele aldığında sona erer. Web API'sı ile bu işleyici HttpControllerHandler olur ve burası Web API'sı hattının başladığı yerdir. HttpControllerHandler'a bakarsanız, istek ve yanıt ASP.NET'in sola özel ve sağında ise Web API'sine özel HttpRequestMesssage olur.

İkinci sorunuz için, Web API hattında yapabileceğiniz en eski şey bir mesaj işleyicisi olacaktır. HttpModule daha da erken olacak ama Web API'sinin bir parçası değil, hosting. Trade-off, bir HttpModule'ınız varsa, bunu yalnızca IIS'de kullanabilir, ancak Web API'sine özgü ve ana bilgisayara özgü olduğundan, bir ileti işleyicisi herhangi bir ana bilgisayarda çalışabilir. Son zamanlardaki SO yanıtlarımdaki MSDN makalemden bahsediyorum, ancak makalenin sorulması gereken sorularla ilgili olduğu anlaşılıyor. Yani başka bir yolculuğum yok ama tekrar bağladım. Burada go. Bu makaledeki farklı seçeneklerin karşılaştırması var.

+0

Gerçekten harika bir şey, iki kere okudum. –