우리는 포털 환경에서 작업하고 있습니다. 우리 페이지 중 하나에는 두 개의 포틀릿이 있습니다. 하나의 포틀릿에서 어떤 동작이 발생하면 다른 포틀릿과 그 반대를 최소화해야합니다. Dojo의 publish/subscribe 모델을 사용할 수있는 적절한 상황이라고 생각합니다. 그러나 다른 주제를 사용해야하는 경우 조금 혼란 스럽습니다. [포틀릿 A에서 일부 작업이 발생하는 경우, 두 번째 항목에서 PortletB에서 일부 작업이 발생하는 경우] 또는 하나의 항목 [최소화와 같은 항목]을 사용해야합니다. 누군가 나를 인도 해 주실 수 있습니까?Dojo의 Publish Subscribe 모델 사용
답변
이것은 실제로 당신에게 달려 있으며 필요에 따라 다릅니다.
주제는 자유형 텍스트이므로 원하는 텍스트 형식으로 정렬 할 수 있습니다.
내 경험으로 주제가 "이벤트"로 취급되었습니다. 따라서 하나의 주제, 하나의 이벤트.
제 경험으로는 이벤트와 동일한 시스템에서 "명령"을 구현하는 것이 매우 효과적이기 때문에 범용 명령/이벤트 시스템이 있습니다.
이벤트 (따라서 항목)가 포틀릿과 일치 할 필요는 없습니다. 예를 들어, 하나의 포틀릿은 여러 이벤트를 가질 수 있습니다 (합리적인 경우) 또는 하나의 이벤트를 여러 포틀릿에서 공유 할 수 있습니다 (공유 기능 또는 포틀릿 간 통신의 경우).
매개 변수와 데이터는 인수 (예 : topic)와 함께 전달 될 수 있습니다.
내가 배운 좋은 트릭은 특정 주제의 이벤트를 구독하려는 경우 부모 주제로 접두사가 붙은 주제 인 '하위 주제'를 갖는 것입니다.
예 : 포틀릿의 ID 및 표시 여부를 나타내는 부울 변수와 함께 표시되거나 숨겨진 포틀릿에 의해 게시되는 "/ portlets/showhide"이벤트가 있다고 가정합니다.
이제는 포틀릿에서 "/ portlets/showhide/{id}"(참/거짓 인수 포함) 및 "/ portlets/showhide/{id}/show"(인수 없음) 일반 "/ portlets/showhide"주제 (이벤트)와 함께 표시됩니다.
이제 "xyz"포틀릿이 숨겨져있을 때 일부 처리기 객체에만 관심이 있다고 가정합니다. "/ portlets/showhide"를 구독 할 필요가 없으며 관심이없는 다른 포틀릿의 모든 이벤트를 청취 할 수 있습니다. 단순히 "/ portlets/showhide/xyz/hide"를 구독 할 수 있습니다. 대형 시스템에서 구독 수가 증가하면 이러한 종류의 최적화가 매우 편리해질 수 있습니다.
추가 매개 변수를 전달하는 항목 하나를 사용할 수 있습니다. 다음과 같은 내용 :
// PortletA
dojo.publish("onPortletAction", [{sender: "PortletA"}]);
// PortletB
dojo.publish("onPortletAction", [{sender: "PortletB"}]);
....
dojo.subscribe("onPortletAction", dojo.hitch(window, window.processAction));
window.processAction = function(data) {
if (data.sender == "PortletA"){
//to do something
}
if (data.sender == "PortletB") {
//to do something
}
}
- 1. NoSQL을 기반으로하는 NoSQL DB 또는 라이브러리는 nosql을 지원합니다. 제한없는 수의 클라이언트에 대한 Publish-Subscribe?
- 2. Publish/Subscribe 패러다임 : 메시지 클래스가 구독자에 대해 알지 못하는 이유는 무엇입니까?
- 3. SerialPort.DataReceived repeated subscribe/unsubscribe
- 4. Dojo의 ATOM 피드 파싱?
- 5. dojo의 세부 레코드 필터링
- 6. Dojo의 이벤트 처리
- 7. dojo의 multiselect box
- 8. Dojo의 SOAP 요청
- 9. dijit와 dojo의 차이점
- 10. dojo의 이벤트 핸들러 문제
- 11. Dojo의 사용자 정의 ValidationTextBox
- 12. Ajax와 Dojo의 차이점
- 13. 스레드 안전 Publish 구독하기 .Net
- 14. msbuild publish .deploy extension
- 15. eZ Publish beginner
- 16. Android market publish problem
- 17. Clickonce universal publish
- 18. asp.net publish problem
- 19. FB.ui/Publish Stream Issue
- 20. ExtJS - Dojo의 테마 테스터와 비슷합니까?
- 21. 모델 연결에 CGridView 사용
- 22. 사용 권한 모델
- 23. 레일 : 모델 라이브러리 사용
- 24. 집계에서 모델 메서드 사용
- 25. WPF MVVM - 뷰 모델 클래스의 모델 사용
- 26. BizTalk publish net.tcp WCF 서비스
- 27. 내 사이트의 데이터베이스 모델 사용
- 28. Java에서 Ruby ActiveRecord 모델 사용
- 29. MVC 응용 프로그램이없는 모델 사용
- 30. CakePHP 모델 생성 콘솔 사용