2012-08-04 4 views
0

.Net을 통해 mvc 응용 프로그램을 작성하고 있습니다. 확장 된 부분에는 Facebook, twitter 등 다양한 소셜 네트워킹 플랫폼에 일목요연하게 게시하는 기능이 포함되어 있습니다. 그것은 실제로 특정 간격 및 지정된 타이밍 후에 다른 네트워크를 통해 자동으로 게시하는 것입니다. 문제는 게시 부분이 실제 웹 사이트의 상태와 아무런 관련없이 항상 백그라운드에서 익명으로 실행되어야하므로 필요할 때마다 시간/간격 및 게시물을 계속 확인할 수 있다는 것입니다.서버의 백그라운드에서 기능을 계속 활성화하십시오.

현재 내 컨트롤러에는 코드 아래에 주요 부분이있는 재귀 함수가 있습니다.하지만 MVC에서 발생한 것처럼이 함수는 클라이언트 브라우저에서 URL 호출을 통해 초기화되고 브라우저가 대기 상태가됩니다 이 함수는 브라우저가 지정된 응답 시간이 지나면 요청을 취소 할 때까지 재귀 적으로 계속 실행되기 때문입니다. 물론

이 문제는 적합하지 않습니다, 그래서 내가 원하는에 있습니다 :

  • 이 기능은 독립적 인 확인하고 지속적으로 서버의 배경 에서 실행 유지합니다.
  • 누군가 내가 WCF (Windows 통신 기반)를 사용하여 서비스 등으로 문제를 해결할 수 있다고 말했습니까? 나는 WCF를 아직하지는 않지만 문제를 해결할 수 있다면 시도해 볼 수 있습니다.
  • 다른 방법으로이 작업을 수행 할 수 있습니까?

코드 :

while (status == "1") 
     { 

      if (totalRows > 0) 
      { 

       for (int i = 1; i < totalRows; i++) 
       { 
        myPostArray[i] = myPosts.Tables["myPosts"].Rows[i]["Postmsg"].ToString(); 
    //… 
    //Post to the platform through respected API 
    //… 

        System.Threading.Thread.Sleep(3000000000); 
       } 
       status = true; 
      } else if (myPosts.Tables[0].Rows.Count == 0) 
      { 
       status = false; 
      } 
      TheRepeater(); 
+0

나는 이런 종류의 것이 웹 어플리케이션에 적합하지 않다고 주장한다. –

+0

@Simon Whitehead : 대안으로 무엇을 제안 하는가? 이 기능은 웹 애플 리케이션의 일부가 될 필요가 없습니다 .. 그것은 또한 완전히 별도로 실행할 수 있습니다 ... – Maven

답변

2

다음 할 것입니다 이것에 대한 별도의 서비스가 필요합니까 :

  • 는 웹 응용 프로그램
  • 에서 "처리를 시작합니다"명령을 수락를
  • "수신 확인되었습니다. 지금 처리를 시작합니다"- 그러면 웹 앱과 서비스 간의 통신이 종료되어 통신을 해제합니다. 이온 채널과
  • 잠재적 다음 반복에 대한 자동 웨이크 업에주기의 끝에 sleep을하고, 서비스의 백그라운드 처리를 수행합니다 (대신 시간이 초과의) 웹 서버로 다시 제어를 반환
+0

답장을 보내 주셔서 감사합니다 ..하지만 mvc 응용 프로그램에서 '이해, 지금 처리를 시작합니다'명령을 수 있습니다 가장 가능성있는 뷰에서 함수를 반환하는 것으로 반환되고 반환 된 함수가 실행을 완료했다는 것을 의미하는 경우 어떻게 자체 실행을 유지할 수 있습니까? – Maven

+0

@Maven - 서비스에서 실행되는 별도의 스레드이기 때문에! 서비스의 웹 서버는 HTTP 요청을 시작하기 만하면 HTTP 응답에서 시작된 응답을받습니다. 그런 다음 서비스 스레드는 루프에서 처리 할 작업을 수행합니다. –

+0

마틴이 맞습니다 - 당신이 기뻐할 때면 항상 "ACK"를 돌려 줄 수 있습니다. 코드가 "집중력을 잃어 버리거나"죽지 않을 것입니다. – YePhIcK

관련 문제