2009-08-31 22 views
7

Zajmuję się koncepcją kolejkowania dla aplikacji internetowych (np. Umieszczanie niektórych typów zadań w kolejce do zakończenia przez oddzielnego pracownika, zamiast wypełniania w cyklu żądania sieci).Rozwiązania kolejkowania dla programu ASP.NET MVC

Chciałbym wiedzieć, czy istnieją dobre rozwiązania, które można wykorzystać w środowisku ASP.NET MVC.

Czy ktoś miał jakieś (dobre lub złe) doświadczenia?

Dziękujemy!

UPDATE:

Właśnie w celu wyjaśnienia, ja nie mówię o kolejkowanie żądań przychodzących. Postaram się zilustrować, co mam na myśli ...

1) sytuacji standardowe:

  • żądać od przeglądarce
  • przetwarzanie Server rozpoczyna rozpoczyna
  • Długa praca
  • Długie zadanie zakończone
  • przetwarzanie Serwer zakończył
  • Response powrócił do przeglądarki

2), czego szukam w:

  • Requsest z przeglądarki
  • przetwarzanie Server rozpoczyna
  • Długi pracę umieszczonego w kolejki
  • Serwer przetwarzanie zakończeniu
  • Response powrócił do przeglądarki

A w innym procesie (ewentualnie po odpowiedź została wysłana):

  • Długa praca pochodzi z kolejki
  • Długa praca zaczyna
  • Długi pracę zakończono:

W pierwszej instancji użytkownik zwrócił uwagę d długi czas na reakcję serwera, w drugim był szybki.

Oczywiście istnieją pewne rodzaje zleceń, które byłyby odpowiednie do tego, inne, które nie byłyby odpowiednie.

Update2:

Klient nie musi być od razu na bieżąco z wynikami dłuższej pracy.Zmiany pojawią się w aplikacji zawsze, gdy użytkownik odświeży stronę (oczywiście po zakończeniu pracy).

Pomyśl o niektórych zdarzeniach związanych z przepełnieniem stosu - nie są one natychmiast aktualizowane w każdej części aplikacji, ale dzieje się to dość szybko - podejrzewam, że niektóre z tych zadań są w kolejce.

+0

Kolejkowanie jest wykonywane przez IIS. Każde żądanie jest umieszczane w kolejce przetwarzanej przez procesy robocze. Utrzymanie procesów roboczych i obsługa żądań/odpowiedzi odbywa się za pomocą IIS. Po co wdrażać drugi mechanizm kolejkowania? – Christian13467

+1

@ Christian13467: Mówię o innej koncepcji - zobacz wyjaśnienie w aktualizacji. – UpTheCreek

Odpowiedz

5

post dane pracy w MSMQ queue i dysponować procesem usług systemu Windows elementów w kolejce. Lub pozwól, aby żądanie sieciowe odrodziło proces przetwarzający elementy w kolejce.

+0

To jest trochę bardziej niski poziom, niż myślałem, ale może patrzę na to w niewłaściwy sposób - nie mam żadnych umiejętności MSMQ, ale przyjrzę się temu - dzięki. – UpTheCreek

0

myślę komentarz chrisitan użytkownika może być odpowiedź, ale biorąc pod uwagę, nie wiem zbyt wiele o IIS i kolejkowanie z nim, moje rozwiązanie byłoby:

Złóż asynchronicznego żądania i załadować szczegóły pracy w bazie danych. Następnie przeprowadź pracę przez bazę danych i przetwórz szczegóły zadania. Robię to dla jednej z moich stron. Być może nie jest to najlepsze rozwiązanie, ale robi to.

EDIT

Moja odpowiedź może nadal działać, ale trzeba mieć jakiś mechanizm odpytywania na kliencie do ciągłego sprawdzenia bazy danych, aby sprawdzić, czy praca danego autora jest zrobione, a następnie chwycić potrzebne dane.

+1

Nie, komentarz Christiana nie jest moją odpowiedzią;) Zastanawiałem się nad "rolowaniem własnym przy użyciu trasy DB", ale szukam czegoś więcej odkupienia i zbudowanego specjalnie. Nie chcę ponownie wymyślać koła (moje prawdopodobnie nie byłoby idealnie okrągłe;) – UpTheCreek

+0

Tylko w celu wyjaśnienia redakcji - klient nie musiałby być aktualizowany co do wyników pracy, aby nie było wymagane odpytywanie. – UpTheCreek

2

Możesz sprawdzić użycie ESB. Grałem z MassTransit: http://code.google.com/p/masstransit/ - dokumentacja jest (lub przynajmniej była) nieco rzadka, ale jest łatwa do wdrożenia.

Dodatkowo tworzę aplikacje do działania na Amazon EC2 i absolutnie kocham ich usługę AmazonSQS.

Dzięki,

Hal

+0

Sprawdzę masowy tranzyt - zauważam, że jest zbudowany na MSMQ. Odpowiednikiem takiego zachowania jak Amazon SQS jest prawdopodobnie to, czego szukam - Dzięki. – UpTheCreek

3

Rhino Service Bus jest kolejnym rozwiązaniem, które może pracować dla Ciebie:
http://ayende.com/Blog/archive/2008/12/17/rhino-service-bus.aspx

+0

Dzięki - sprawdzę to. W przeszłości lubiłem czytać posty Ayende na inne tematy :) Czy jest to jednak gotowy do produkcji? – UpTheCreek

+0

Osobiście nigdy nie używałem go w produkcji, ale znam ludzi, którzy używali go w produkcji. –

0

masz uważane MSMQ? Nic nie powstrzyma cię przed użyciem tego z MVC, i jest to całkiem proste, aby zacząć.

1

I wprowadziły ten wzór poprzez wywołanie serwera sieci Web usługi WCF asynchronicznie. Kreatory VS będą generować asynchroniczne proxy podczas korzystania z usługi WCF. Jeśli musisz mieć gwarantowaną dostawę na żądanie do usługi, możesz użyć MSMQ jako warstwy transportowej dla usługi WCF.

Powiązane problemy