2017-05-20 11 views
0

웹 응용 프로그램은 ASP.NET 4.5/C#을 사용하여 작성되었으며 azure에서 웹 응용 프로그램으로 호스팅됩니다. 이 사이트를 통해 사용자는 하늘색 얼룩 컨테이너에 저장된 PDF 파일을 업로드 할 수 있으며 필요에 따라 나중에 웹 사이트를 통해 다운로드 할 수 있습니다. 지금까지 그렇게 좋았고 모든 것이 잘 작동했습니다.azure 웹 응용 프로그램 프런트 엔드로 azure blob 저장소에 저장된 PDF 파일에서 사용자 지정 실행 파일 실행

이제는 사용자 지정 win32 실행 파일을 사용하여 이러한 파일을 처리하는 새로운 요구 사항이 생겼으며 웹 사이트에서는 처리가 성공했는지 여부를 알아야합니다. 이 exe는 설치 파일을 가지고 있으며, 사용하기 전에 대상 컴퓨터에 설치해야합니다.

나는이 기능을 설계하는 방법에 대해 머리를 숙였습니다. 나는 Worker Role이 필요하다는 것을 말해주는 많은 기사를 보았거나 VM이 필요하다. 그러나 모든 기사는 매우 추상적으로 보입니다.

실행 파일의 설치 프로그램이 수동 개입을 필요로한다는 것을 감안할 때 Azure VM을 사용하는 것이 좋습니다. 그러나 웹 앱은 어떻게이 정보와 통신 할 것인가? 프로세스 결과와 함께 웹 앱에 어떻게 알릴 수 있습니까?

답변

0

웹 응용 프로그램은 샌드 박스이므로 Azure 웹 응용 프로그램에는 이러한 소프트웨어를 설치할 수 없습니다. 따라서 해당 설정 exe을 실행할 수 없습니다.

이러한 처리를 위해서는 가상 시스템이나 웹/작업자 역할에서 앱의 해당 부분을 실행해야합니다.

0

하지만 웹 앱은 어떻게 통신 할 것입니까? 프로세스 결과와 함께 웹 앱에 어떻게 알릴 수 있습니까?

Azure Queue storage이 요구 사항을 충족시킬 수 있습니다. 애플리케이션 구성 요소간에 클라우드 메시징을 제공 할 수 있습니다. VM이 처리 결과를 대기열에 기록 할 수 있으며 웹 응용 프로그램이 동일한 대기열에서 처리 결과를 읽을 수 있습니다.

대기열에 새 메시지를 추가하려면 다음 코드를 참조하십시오. 새로운 메시지가 큐에 추가 된 경우

// Retrieve storage account from connection string. 
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString")); 

// Create the queue client. 
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 

// Retrieve a reference to a queue. 
CloudQueue queue = queueClient.GetQueueReference("myqueue"); 

// Create the queue if it doesn't already exist. 
queue.CreateIfNotExists(); 

// Create a message and add it to the queue. 
CloudQueueMessage message = new CloudQueueMessage("Hello, World"); 
queue.AddMessage(message); 

귀하의 웹 응용 프로그램에서, 당신은 작업이 즉시 실행됩니다 QueueTrigger WebJob를 만들 수 있습니다.

public static void ProcessQueueMessage([QueueTrigger("myqueue")] string processResult, TextWriter log) 
{ 
    //You can get the processResult and do anything needed here 
}