ASP.NET MVC 에서 백그라운드 프로세스 큐 기반 웹 애플리케이션

백그라운드 프로세스 내 ASP.NET MVC 웹 애플리케이션 대기열은 구현하십시오 어떻게 해야 합니까? 대부분의 데이터 변경 사항 등을 볼 수 있는 몇 가지 다른 업데이트뿐 don& 즉시 업데이트를 할 필요가 있는 데 반해, t # 39 실시간 처리 싶다 백그라운드 프로세스 우선 순위가 낮은 it off to a 가 잘있게나 storagex 의 속도로

예를 들어, 시행하십시오 시스템이요 StackOverflow& # 39 의 배지 받았다. 일반적으로 특정 동작을 취할 수 있는 # 39, & # 39 award& 너희에의 배지, 있지만 실제 죽이려하겠어요 수상했다. 나중에 무슨 일이 있어도 (보통 10 분 사이에 몇 시간 뒤). 이 때문에 별도의 백그라운드 프로세스에 대한 통해 내가 solaris. 완료되어도 중요하지 않은 경우 즉각 반납해야 사이에서 얻은 SO& # 39 의 내용은 아래와 같다.

따라서 I& # 39 m, 어떻게 할 수 있는 시스템이 만들려는 함정이거나 대기열은 물건을 작업 (아무 말도 할 수 있는 인터페이스를 구현하는 이타스크 프로세스 () 메서드를) 에서 실행할 수 있는 결국 다른 프로세스.

내가 어떻게 이런 시스템 구축에 대한 검색하기를? Ideas/Hint/Sample 코드?

감사합니다!

해결책

윈도우 서비스 및 MSMQ 그들을 통신하도록 경우 필요가 있다).

  • 편집

다소 확장하십시오.

39 you& 같은 서비스를 만들기, ll, 하고 싶은 일, 그들 모두 따라 다양한 작업을 수행할 수 있고, 자고, 끝없는 실행하십시오 스레드할 레벨뿐 그리웠댔지. 그런 다음 업데이트 데이터베이스입니까 적절히 진실이며당신이 클라이언트 측에서 아무런 행동도 취하지 않을 수 있을 것이다.

관리자가 관점, 즉 그들을 구하사 강조표시할 수 있습니다 상호 작용할 수 있다는 MSMQ 생일날이야 관리자 명령을 듣고 있을 수 있습니다 구축현 따라 몇 가지 이유로, 또는 기타 그냥 다시 시작해야 할 수 있습니다 # 39, & # 39 force&. 그들이 원하는 모든 일을 할 수 있습니다.

그래서 이를 사용하는 MSMQ 보면안돼 대기열은 you& # 39, ll (시스템.메사그링 이름공간이). 주요 참고 사항 중 약 MSMQ &lt 도래하도록하려하는 메시지가 있어야 합니다. 4meg. 그래서 보내려면 대용량 객체 그래프를 그리고 그냥 1 에는 직렬화 파일로 보낼 파일_이름.

MSMQ 매우 아름답다. # 39, & # 39 ID& 상관 관계를 기반으로 보낼 수 있습니다. 하지만, 하는 경우 등이 상호 관계 때문에 일부 ID 형식으로 합니다.

{guid}\1

다른 사항은요 작동하지 않습니다 (최소한 프레임워크 버전 2.0 에서는 코드를 변경할 수 있습니다).

  • 편집

예를 들어, 요청에 따라:

using System.Messaging;

...

MessageQueue queue = new MessageQueue(".\\Private$\\yourqueue");
queue.Formatter = new BinaryMessageFormatter();

Message m = new Message();
m.Body = "your serialisable object or just plain string";

queue.Send(m);

// on the other side

MessageQueue queue = new MessageQueue(".\\Private$\\yourqueue");
queue.Formatter = new BinaryMessageFormatter();

Message m = queue.Receive();

string s = m.Body as string;

// s contains that string now
해설 (8)

그는 이 방법을 보여주는 달성됩니다 스택할 오버플로입니다 dell. (http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/) 의 제프 는 당초 멋지구리해요 게시물로의

39 의 경우 안정적인 as a service) 로 않을 수 있지만 that& 너 나한테 잘 수 있는 옵션이 it& # 39 의 과거에 대한 작업 및 i& 지낸 비사양 에센셀 # 39, ve had it 가상 호스팅 작업할 수 있습니다.

해설 (0)

백그라운드 프로세스 (ASP.NET) 에서 발견된 이 질문은 단순히 검색할 때 적용한다. (Support. .NET 4.5.2 후)

public ActionResult InitiateLongRunningProcess(Emails emails)
{
    if (ModelState.IsValid)
    {
       HostingEnvironment.QueueBackgroundWorkItem(ct => LongRunningProcessAsync(emails.Email));
       return RedirectToAction("Index", "Home");
    }

    return View(user);
}

참고: 개인적으로 나는 won& # 39 를 사용하여 웹 서버, 백그라운드 작업을 실행할 수 없다. 또한, t # 39 don& 추천합니까 한그파이어 꼭 이래야겠어요 휠을 사용하여 높은 것이다.

이 기사를 읽고 멋지구리해요 한스엘만 에서 하우토룬백그라운트라크시나스파네

해설 (0)