2009-02-27 5 views
3

프로그래밍에 익숙해지고 스스로 학습하면이 질문에 대한 답을 얻을 수 있습니다. 나는 디자인 패턴에 대해 읽고 있었고 이것이 좋은 권고가 무엇인지 알고 싶었다.Windows 서비스 용 디자인 패턴 - C#

내 테스트 응용 프로그램에서 MSMQ로 메시지를 보냅니다. 이 MSMQ를 수신 할 Windows 서비스를 작성하고 모든 메시지에 대해 간단한 데이터베이스 삽입을 수행하려고합니다.

나는 나에게 내가 필요한 몇 가지 정보를 준이 문서 link text

바라 보았다. 예제에서 나는 대부분 내 작업을 수행 할 수있다.

private static void MyReceiveCompleted(Object source, 
     ReceiveCompletedEventArgs asyncResult) 
    { 
     // Connect to the queue. 
     MessageQueue mq = (MessageQueue)source; 

     // End the asynchronous Receive operation. 
     Message m = mq.EndReceive(asyncResult.AsyncResult); 

     // Display message information on the screen. 
     Console.WriteLine("Message: " + (string)m.Body); 

     // Restart the asynchronous Receive operation. 
     mq.BeginReceive(); 

     return; 
    } 

그러나 더 구체적인 실행 가능한 후보가 있습니까? 주변을 읽는 것으로부터 나는 그것이 '명령'패턴이 될 수 있다고 생각하지만 이것이 최선의 패턴인지 확실하지 않습니다. 어떤 아이디어 나 생각을 통해 패턴을 더 잘 이해할 수 있습니다. (? SP) - :

책은 내가 패턴을 읽어 헤드 퍼스트 디자인 패턴이 네의 갱에 의해 디자인 패턴의 사용 사본을 주문에 내가 혼합 검토를 알고

답변

1

시스템에서 WCF를 사용할 수 있으면 netMsmqBinding 또는 msmqIntegrationBinding을 확인하십시오. 실제로 설치하기가 너무 어렵지는 않습니다. 튜토리얼이 많이 있습니다.

WCF를 사용하면 System.Messaging 관련 작업을 수행 할 필요가 없습니다.

우리 회사에서는 Windows 서비스에서 많은 MSMQ 서비스를 호스팅합니다. WCF의 ServiceHost 클래스를 살펴보십시오.

+0

Andy, WCF를 사용할 수 있으며 결제됩니다. netMsmqBinding 또는 msmqIntegrationBinding에 대한 권장 블로그는 무엇입니까? –

+0

http://blogs.msdn.com/drnick/default.aspx -이 블로그는 내가 만난 최고의 WCF 블로그 중 하나입니다. 예전의 좋은 튜토리얼 동영상은 다음과 같습니다. http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2006/09/13/8875.aspx –

5

이것은 귀하의 질문과 직접적인 관련이 없지만 모든 종류의 서비스 (웹 서비스, Windows 서비스 등)를 개발하는 데 중요한 디자인 패턴은 서비스 호스트에서 귀하의 기능을 분리하는 것입니다.

즉, 실제로 작업을 수행하는 클래스가 있어야합니다. 그리고 클래스를 호출하는 서비스가 있습니다.

이렇게하면 여러 호스트에서 쉽게 서비스를 다시 호스팅 할 수 있으며 콘솔 앱, winforms 앱 또는 유닛 테스트를 통해 기능을 테스트 할 수 있습니다.

+0

동의하지만 다음과 같이 예외를 관리하는 방법에 대해서는 확신하지 못합니다. 이 모델. 모든 것을 수업 시간에 지키고 (일을하면서) 호스트에게 성공/실패를 돌려 주거나, 중요한 예외를 호스트에 버리게하여 서비스를 일시 중지하거나 중단 할 수 있습니까? –

+0

정말로 서비스를 죽여야하는 중요한 것들이 버블 링 될 것입니다. 다른 모든 것은 클래스에 캡슐화되어 있습니다. 나는 스케쥴링 등을 클래스에 넣어서 부팅 스트랩퍼 만 만들 수도 있습니다. –