2009-08-11 3 views
2

데이터베이스에서 데이터를 읽는 Windows 서비스를 개발했으며 데이터베이스는 ASP.net MVC 응용 프로그램을 통해 채워집니다.두 개의 개별 응용 프로그램 간의 통신

데이터베이스에 선택 쿼리를 실행하여 메모리에 데이터를 다시로드해야한다는 요구 사항이 있습니다. 이 재로드는 웹 앱에 의해 트리거됩니다. 나는 이것을 달성 할 수있는 몇 가지 방법을 생각해 보았다. Remoting, MSMQ 또는 reload 명령에 대한 소켓에서 서비스 수신 대기

나는 이것에 대한 최선의 접근 방법에 대한 제안만을 찾고 있습니다.

답변

2

알림은 얼마나 신뢰할 만합니까? 통지가 없어지면 (통신 파이프가 라우터에 영향을 미치고 소켓을 떨어 뜨린다), 세상이 끝나거나 평상시처럼 업무가 끝나나요? 서비스가 중단 된 경우 웹 사이트의 알림을 시작시 대기열에 넣으시겠습니까? 아니면 안전하게 삭제할 수 있습니까?

여러분이 필요로하는 것이 더 신뢰할수록 대기중인 솔루션 (MSMQ)을 향해 나아갈 필요가 있습니다. 신뢰성이 문제가되지 않는다면, 대기열이없는 솔루션 (원격, TCP, UDP 브로드 캐스트, HTTP 호출 등)의 mirirad 중에서 선택할 수 있습니다.

보안에 대해 신경 쓰지 않습니까? 공격자가 내 ping을 '새로 고침'하여 두려움에 떨게합니까? 최악의 경우 DoS가 발생합니까? '새로 고침'통화를하는 웹 사이트를 인증 하시겠습니까? 알림의 프라이버시 (예 : 암호화)가 필요합니까? UDP는 보안하기가 더 어렵습니다 (세션 없음).

현장에서 쉽게 배포, 구성 및 관리 할 수있는 솔루션이 필요합니다 (예 : 독립 실행 형 패키지 제품). 또는 무언가가 'just-in-time'으로 고정 될 수있는 일회 배포입니까? 변화?

이러한 모든 요소의 세부 사항을 알고 있으면 'X 사용'이라고 말할 수 있습니다. 적어도 한 가지는 확실합니다. 원격은 지금은 쓸모가 없습니다.

WCF는 바인딩 변경이 쉽기 때문에 WCF를 사용하는 것이 좋으므로 코드 변경없이 모든 구성 (TCP, net pipe, http)을 테스트 할 수 있습니다.

그런데 웹 사이트의 활성 알림 대신 데이터 변경을 감지하기 위해 Query Notifications을 사용 해본 적이 있습니까? 나는 이것이 어둠 속에서의 총이라고 생각하지만, 많은 데이터베이스에서 동등한 활성 캐시 지원이 존재한다.

+0

큰 정보가 많이 있습니다. 감사합니다. 이것은 업무상 중요하지 않으므로 대기중인 알림에 신경 쓰지 않습니다. WCF를 사용한 경험이 매우 제한적이지만 WCF 경로를 조사 할 예정입니다. 검색어 알림 또한 흥미로운 것으로 보입니다. –

+0

WCF에게 기회를주세요. 그만한 가치가 있습니다. WCF가 없으면 TCP 또는 심지어 UDP 브로드 캐스트합니다. Remoting 및 MSMQ는 과도한 것처럼 보입니다. –

0

저는 표준 TCP 소켓을 사용합니다. 이것은 모든 종류의 구성 요소의 이동에도 영향을 미치지 않으며 구성 문제를 최소화합니다.

1

Windows 서비스 내에서 WCF 서비스를 호스팅하기 만하면됩니다. 바인딩에 대해 netTcpBinding을 사용할 수 있습니다.이 바인딩은 TCP/IP를 통해 바이너리를 사용합니다. 이것은 소켓보다 훨씬 간단하지만 개발 및 유지 보수가 더 쉽습니다.

+0

그건 제가 고려하지 않은 한 가지 옵션입니다. 제안을 주신 것에 감사 드리겠습니다. –

관련 문제