2012-04-20 2 views
3

이것은 내가 필요한 디자인입니다 : My design idea. '가입자'디자인은 서비스의 '오렌지'부분에 대한 좋은 생각WCF 클라이언트에게 메시지를 푸시해야하는 서비스

enter image description here

인가?

클라이언트는 '읽기'및 '쓰기'작업을 수행하기 위해 서비스에 연결해야하며 서비스에서 알림을 (PUSH 방식으로) 가져와야합니다.

처음에는 '읽기'및 '쓰기'기능을 제공하는 서비스가 백그라운드 스레드를 통해 알림을 보낼 수 있다고 생각했지만 '콜백'은 서비스는 클라이언트의 기능을 호출해야 함 은 클라이언트 요청에 대한 응답으로입니다. 의미 - 서비스 은 클라이언트에 대한 호출을 시작할 수 없습니다. 그래서 '구독자'디자인이이 올바른 방향으로 가고 있습니까?

답변

1

그래서 짧은 대답은 예입니다 - 게시/구독 패턴을 사용하여 매우 잘 알려진 모델입니다. 게시자와 소비자를 분리하는 데 도움이됩니다. Devil은 구현의 세부 사항과 복잡성을 처리 할 수 ​​있으며 디자인에서 무엇을 교환 할 의지가 있습니다.

WCF duplex channel 구현 (WCF 클라이언트 여야 함, 클라이언트와 서비스 소유 여야 함) 및 제한 사항 (직접 연결된 클라이언트, 네트워크 토폴로지 제한 사항)을 받아 들일 수 있다면 WCF duplex channel 구현부터 시작할 수 있습니다.

듀플렉스 채널의 제한 사항이 마음에 들지 않으면 MSMQ 또는 NServiceBus과 같은 것을 사용하여 pub/sub 요구 사항을 쉽게 처리 할 수 ​​있습니다. Windows Azure AppFabric Service Bus으로 다음 단계로 넘어갈 수 있습니다.

듀플렉스는 클라이언트로부터의 호출이 도착했을 때뿐만 아니라 독립적으로 클라이언트에 메시지를 보낼 수 있습니다.

듀플렉스는 내구성이 없습니다. 클라이언트가 없어지거나 통신 문제가 발생하면 채널 장애를 복구해야합니다. 양면 인쇄 보안은 까다로울 수 있습니다. 양쪽에 WCF 클라이언트/서비스가 있어야합니다. 네트워크 토폴로지에 대해 알고 있어야합니다.

두 개의 서로 다른 바운드 컨텍스트 (시스템)가 있습니다. 하나는 클라이언트가 명령과 쿼리를 보내고 다른 하나는 흥미로운 이벤트를 게시하고이 이벤트를 청취하기위한 것입니다.

EDIT - 일부 클라이언트가 iOS 기기 인 경우 어떻게해야합니까? DUPLEX 사용시 문제가 있습니까? DUPLEX 채널을 통해 WCF 서비스와 통신하는 iOS 앱을 개발할 수 있습니까?

답변 :이 SO WCF duplex connection on iPhone?What should I know when developing interoperable WCF web service?

+0

안녕하세요! 답변 해주셔서 감사합니다. 그래서 실제로 2 가지 서비스를 권하고 싶습니다. 하나는 '당기기'기능 용이고 다른 하나는 '푸시'기능 용입니다. 그렇다면 듀플렉스의 한계에 대해 좀 더 자세히 설명 할 수 있습니까? 클라이언트는 어떻게 결합되었으며 네트워크 토폴로지의 한계는 무엇입니까? 내가 보낸 링크를 보았습니다.이 링크를 '목록 기반 게시 - 구독'이라고하지만 목록이 표시되지 않습니다. 가격을 업데이트해야 할 때 - 이벤트가 제기 된 것처럼 보이는데 등록 된 모든 클라이언트를 호출합니다 (이것이 'PerSession'인 경우 어떻게 될 수 있습니까? 서비스가 싱글 톤이 아니어야합니다). –

+0

또한 서비스가 응답이 아닌 클라이언트를 직접 호출하는 것처럼 보입니다.콜백은 서비스가 클라이언트에서 함수를 호출 할 수 있다는 것을 의미합니다. 클라이언트가 클라이언트에 보낸 메시지에 대해서만 응답을 보내고 독립적으로 클라이언트에 메시지를 보내지는 않습니다. –

+0

anwer에 추가되었습니다 –

관련 문제