2017-09-15 3 views
0

새 응용 프로그램을 디자인하려고하지만 최선의 방법을 사용하고 있습니다.웹 응용 프로그램이 백그라운드 작업을 반복적으로 반복합니다.

봇이 채팅 메시지에서 정보를 수집하는 irc 채널에 연결된 다음 내가 지금까지 수집 한 정보에서 결과를 얻을 수있는 HTTP 끝점을 갖고 싶습니다.

나는 원하는 정보를 수집하고 끝점을 만들 수있는 봇 실행을 가지고 있지만이 응용 프로그램을 어떻게 하나의 응용 프로그램으로 구성합니까? 2 가지 응용 프로그램이 있습니까? 1은 파일로 출력하고 엔드 포인트는 파일을 읽고 출력합니까? 나는 1 개의 응용 프로그램에서 그것을 선호하지만 지금까지 이와 같은 해결책을 찾을 수 없었습니다.

현재 DotNet 코어 2.0을 사용 중이며 Raspberry Pi에 배포 중입니다.

+2

이는 '응용 프로그램'의 정의에 따라 다릅니다. '응용 프로그램'은 실행 파일 일 수 있습니다. 단일 EXE를 의미합니까? '서비스 지향 아키텍처'를 살펴보면 두 가지 서비스가 독립적으로 실행될 것을 제안합니다. (두 exe의) –

+0

내 현재 웹 응용 프로그램 내에서 WebHostBuilder를 사용하고 있으므로 어떻게 든 내 irc bot을 통합 할 수 있기를 바랍니다. 내가 참조를 사용할 수 있지만 여전히 유일한 웹 애플 리케이션이 될 것이라고 기대하고 싶습니다. – SamJ

+0

웹 서버에서 백그라운드 작업을 실행하지 않는 것이 좋습니다. 사람들의 힙은 실제로 (제안 된 hangfire를 사용하여) 실제로 수행하지만, 웹 서버는 작업 서버가 아닙니다. –

답변

0

작업 부하에 따라 다릅니다. 응용 프로그램은 주기적으로 그것을하고 정보를 수집하고 나는 ASP.NET 서비스로이 작업을 시작하는 것이 좋습니다 것입니다 시간의 아무것도 나머지 할 경우

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .Build(); 
    host.Run(); 
} 

당신을 위해 현재 콘솔 응용 프로그램을 모든 종속성을 설치합니다 (이 작동합니다). 데이터를 수집하려면 HangFire을 사용할 수 있습니다. 백그라운드 작업을 실행하는 라이브러리입니다. 백그라운드 작업 복귀 등록 작업을 실행하려면 다음과 같이하십시오.

+0

현재 내 콘솔 앱은 처리 할 새 메시지를 지속적으로 확인하는 루프에서 실행되므로 가능한 한 실시간으로 유지하고 싶습니다. RecurringJob을 추가하면 실시간으로 메시지를 처리합니까, 아니면 끝점을 호출 할 때만 메시지를 처리합니까? – SamJ

+0

최소 기간은 1 분으로 설정할 수 있습니다. 그래서 실시간으로 필요하다면 새로운 Task with loop에 루프를 생성하십시오. 그러나 너무 많은 CPU 또는 O/I 집중적 인 것일 수 있습니다 (데이터 수집 방식에 따라 다름). –

관련 문제