2011-01-12 3 views
0

ASP.NET MVC3 응용 프로그램에 서비스를 제공하기 위해 사용하는 정적 클래스 라이브러리가 있습니다.정적 클래스 라이브러리를 사용하는 NServiceBus

저는 비동기 데이터베이스 호출을 제공하는 가장 좋은 방법을 고민하고 있습니다. 노드에 데이터를 보내는 응용 프로그램이 있습니다.이 응용 프로그램은 노드가 알고있는 모든 노드에 정보를 전달합니다.

NServiceBus2를 사용하여 웹 클라이언트에서 노드 메시지를 수락합니다. 그런 다음 컨트롤러가 완료되어 페이지를 사용자에게 반환 할 수 있도록 컨트롤이 웹 응용 프로그램으로 다시 전송됩니다.

백그라운드에서 리스너는 해당 메시지를 선택하고 노드 데이터베이스 트롤을 시작합니다. 나는 잘 작동하는 청취자 인 새로운 클래스 라이브러리를 만들었습니다.

내 문제는 게시 중입니다. 메서드를 호출 할 때마다 버스를 만들어야합니까? 어디에서 버스를 수납 할 수 있습니까? WCF 루트를 시험해 볼 수 있을까요?


정정 내용

  • 나는 그것이 웹 응용 프로그램에서 직접 메시지를 올릴 수있는 좋은 아이디어라고 생각하지 않습니다 - 같은 방법으로 당신은 아마 컨트롤러에 DB 코드를 넣어하지 않을 것입니다. 나는 '비즈니스 로직'인 별도의 클래스 라이브러리를 갖고 싶습니다.
+0

NServiceBus를 잘못 사용하고있는 것 같습니다. – Phill

+0

Phill에 대한 의견? 나는 모든 배선이있는 메시지에 반응하는 msg 대기열을 원한다. –

답변

0

ASP.NET 웹 응용 프로그램에서 버스에 메시지를 가져 오는 데는 몇 가지 방법이 있습니다. 먼저 전역 장소 (global.asax 또는 기타)에서 버스를 한 번 부트 스트랩하고이를 참조 할 수 있습니다. 일부 추상화를 통해 버스를 참조하는 것이 좋습니다. 일반적으로 ServiceAgent와 같은 클래스 <T> 여기서 T는 내부적으로 Bus.Send() 메시지입니다. 웹 응용 프로그램에서 버스를 밀어 넣지 않으려면 다른 옵션은 NServiceBus 끝점을 WCF 서비스로 노출하는 것입니다. 이 작업은 WcfService < TRequest, TResponse >을 사용하여 클래스를 구현하면됩니다. 거기에서 노출 된 SOAPy 서비스를 간단하게 호출 할 수 있습니다. SOAP가 마음에 들지 않으면 엔드 포인트를 다르게 구성 할 수 있습니다. 그런 다음 끝점에서 게시()를 수행 할 수 있습니다.

0

서비스마다 버스를 만듭니다. 서비스는 Windows 서비스, Win-Forms 응용 프로그램 또는 귀하의 경우 웹 사이트 일 수 있습니다.
웹 사이트/웹 서비스 시나리오에서 저는 일반적으로 global.asax의 application_start 이벤트에서 버스를 만듭니다.

예를 들어 StructureMap 또는 Castle Windsor와 같은 컨테이너에 버스를 저장할 수 있습니다.

대신 웹 사이트의 메시지를 게시하지 말고 대신 메시지를 게시하는 wcf 서비스를 호출하십시오. 또는 귀하의 웹 사이트에서 보내기를 사용하십시오. nservicebus를 사용하여 메시징의 다양한 사용법을 이해하는 데 시간을 투자하십시오. 구체적으로 pub/sub와 send/reply 시나리오의 차이점을 설명합니다.

다른 텍스트 : 귀하의 시나리오를 이해하지 못합니다. 추가 문제가있는 경우 원래 게시물을 수정하여 이해를 돕습니다.

관련 문제