2016-07-05 4 views
1

웹 페이지를 제공하는 ASP.NET MVC 응용 프로그램이 있고 우리는 현재이 MVC 응용 프로그램 만 데이터베이스에 포함되어 있으므로 제 3자를위한 몇 가지 서비스 경로를 추가했습니다. 이제 시작시 클라이언트를 MQTT 브로커로 시작해야하는 MQTT 메시지 등록자를 구현해야합니다.ASP.NET MVC 응용 프로그램 내에서 마이크로 윈도우 서비스

MQTT 중개자에 대한 연결 초기화를 구현할 클래스를 구현 중이고이 메소드는 MVC 애플리케이션의 Application_start에서 호출 할 수 있습니다.

이유 : 이것은 매우 작은 프로젝트이기 때문에 우리가 microservice와 MVC 프로젝트를 모두 가지고 있기를 원하는 이유이며 현재 진행중인 초기 단계에 있으며 현재 시스템을 확장하지 않으려합니다. 마이크로 서비스를 구현할 것입니다 또한 나를 구현/브로커에서 이벤트를받는 microservice에 대한 REST 경로를 만들 필요가 있다고 생각합니다. 더 나은 MVC 응용 프로그램을 데이터베이스 저장소에 직접 구현하면 처리 할 수 ​​있습니다.

내 MVC 응용 프로그램이이 접근 방법을 통해 피해를 입을 수있는 루프/문제를 알고 싶습니다. 내가 MQTT 브로커에 연결을 처리하기 위하여려고하고있다 곳

지금까지 내 코드는 다음과

global.asax.cs이

protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      MQTTSubscriber.StartMQTTSubscriber(); 
     } 

MQTTSubscriber.StartMQTTSubscriber 파일 등) (모양이다.

몇 가지 질문이 있습니다. 1) 정말로 브로커와의 연결을 설정하려면 Windows 서비스가 필요합니까? IIS 또는 Visual Studio를 통해 MVC 응용 프로그램 도메인을 시작할 때마다 MVC 5 application_start가 트리거됩니다. 연결이 나에게 내가 처리해야 할 일을 알려 주시기 바랍니다 할-수있는 방법 인 경우)

// create client instance 
MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); 

// register to message received 
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; 

string clientId = Guid.NewGuid().ToString(); 
client.Connect(clientId); 

// subscribe to the topic "/home/temperature" with QoS 2 
client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 

이 다음과 같이) (MQTTSubscriber.StartMQTTSubscriber 내부 논리를 확립 쓰기 /이에 대해 알아서 해결 방법.

어떤 도움/제안 감사

+0

또는 Windows 서비스와 함께 공유하는 비즈니스/저장소 계층과 동일한 솔루션에서 Windows 프로젝트를 구현할 수 있습니다 모든 이벤트 리스너 로직을 데이터 레이어까지 처리합니다. – user3775217

답변

0

을 이해할 수있을 것이다 예는 asp.net 응용 프로그램 내부의 마이크로 서비스를 시작할 수 있습니다. 이후 C#은 기능적 언어가 아니지만 응용 프로그램을 시작할 수 있습니다. NET에서 어떤 응용 프로그램에 대한 시작을 한 번 할 수

관련 문제