2013-03-01 1 views
2

원격 시스템이 미들웨어 (MQ)를 통해 내 응용 프로그램으로 메시지를 보냅니다.왜 미들웨어에서 변환을 수행합니까?

미들웨어에서 변환 (xslt 사용)이이 메시지에 적용됩니다. 방금 다시 형식화되었으므로 농축이나 유효성 확인이 없습니다. 내 시스템이 변형 된 메시지의 유일한 소비자이며 xslt는 우리 팀에 의해 관리됩니다.

오리지널 저자는 오랫동안 사라졌고 왜 내 앱보다는 미들웨어에서 변형을 수행하는 것이 좋은지 궁금합니다. 이것을 미들웨어로 옮길 때 그 가치를 알 수는 없으며, 관리하기가 쉽지 않고 보이지 않게 만듭니다.

또한 나는 xslt가 메시지 생성자가 아닌 소비자에 의해 유지 될 것이라고 생각했을 것입니다.

아키텍처의 종류에 대한 지침이 있습니까? 그가 여기서 옳은 일을 한 것입니까?

답변

3

미들웨어에서 메시지 본문을 수정하는 것은 좋지 않은 생각입니다. 이는 유지 관리 성과 성능에 부정적인 영향을 미칩니다.

이 작업을 수행하는 유일한 이유는 두 개의 호환되지 않는 엔드 포인트를 수정하지 않고 연결하려고 시도하기 때문입니다. 이를 위해서는 대상 끝점에서 이해할 수 있도록 원본 콘텐츠를 변환해야합니다.

변환을 수행하기 위해 미들웨어를 위임하려는 동기는 정치적인 것일 수 있습니다 (다른 팀에서 엔드 포인트를 관리하고 엔드 포인트 코드를 터치하는 것을 꺼려합니다).

+1

이 아키텍처의 '어댑터'는 '어댑터'디자인 패턴과 매우 유사합니다. 해결 된 문제는 아마도 동일합니다 : ""선반 밖의 구성 요소는 재사용하고 싶은 강력한 기능을 제공하지만 '세계관'은 현재 개발중인 시스템의 철학과 아키텍처와 호환되지 않습니다. " ] (http://sourcemaking.com/design_patterns/adapter). –

+0

귀하의 의견에 동의하며 본인이 동기에 맞다고 생각합니다. – DaveRlz

1

아키텍처 측면에서 볼 때 소비자에게 인간이 읽을 수있는 형식의 메시지 또는 콘텐츠를 제공하는 것이 좋습니다. 바이너리 형식을 사용할 때 성능이 크게 향상되지 않는 한 xslt입니다.

인간이 읽을 수있는 형식의 경우 메시지가 올바른지 확인하기 만하면됩니다. 바이너리의 경우, 바이너리 메시지를 사람이 읽을 수있는 형식으로 변환하는 유틸리티를 개발해야합니다. 그러한 유틸리티의 다른 구현자는 의도 한 바대로 이진 형식을 항상 해석하지 않을 수 있으며, 누가 또는 무엇이 옳은지에 관한 손가락 가리 키기 운동으로 바뀔 수 있습니다.

또한 큐에있는 내용을보고 있으면 메시지가 사람이 읽을 수있는 형식으로되어 있으면 메시지를 쉽게 이해할 수 있습니다.

인간이 읽을 수있는 형식으로 시작하여 앱이 먼저 작동하도록하는 것은 상처가되지 않습니다. 그런 다음 앱을 프로파일 링하고 큰 그림에서 변환 루틴이 중요한 지연 원인인지 확인하십시오. 그렇다면 이진 형식으로 이동하십시오.

원래 메시지 생성자가 xslt 형식의 메시지를 제공하는 것이 좋았지 만 메시지를 만들 때했던 일을 수행하는 데는 충분한 이유가 있어야합니다. 예 : 잠재적으로 다른 소비자, xslt가 존재하지 않음, 자원 제약 조건 등

2

다른 사용자에게 다른 형식으로 데이터를 제공하고 데이터를 수신해야하는 응용 프로그램 아키텍처를 만들려는 경우 다양한 형식 (기상 예보 또는 스포츠 뉴스)을 생각한 다음 다양한 형식간에 변환을 수행 할 수있는 허브를 만드는 것이 좋습니다. ("미들웨어"는 당신에게 달려 있습니다.) 전임자는 이러한 종류의 아키텍처를 염두에 두었을 지 모르지만 디자인을 정당화 할 정도로 크거나 복잡하지는 않았습니다.

0

adaptor 디자인 패턴에 대한 읽기 당신은 현재의 시스템 아키텍처의 의도를 이해할 것이다.

+0

감사합니다. 이미 어댑터 패턴을 알고 있습니다. 이 패턴이 여기에 적용된 패턴이라는 것을 알고는 있지만 이유는 설명하지 않습니다. – DaveRlz