1

저는 고용주가 문서 관리에 사용하는 내부 개발 응용 프로그램의 핵심을 다시 쓸 수있는 기회를 얻었습니다. 내 "핵심"요구 사항 목록은 이런 식입니다 :기본 은유로 직렬화 된 6 각형 아키텍처에 관한 조언이 있습니까?

  • 가 쉽게 새로운 필드를 추가 할 수 있도록 쉽게 (파일의 수집 공통의 요인이되고 + 매우 광범위한 메타 데이터)/가져 다양한 형식으로 내보낼 확인 다중 레벨에서 (그 존재는 데이터 중심 글로벌 대신 임)
  • 기존 시스템 (기본적 메타 주변 문서의 구조가 급격한 변화를 겪고)
  • 의 기본적인 전제를 위반하는 기능 몇몇 새로운 부분을 소개 문서 및 메타 데이터 관계 및 컨벤션을 철저히 제어 할 수있는 기능 유지 NS는

내가 세상과 통신의 주요 수단으로 직렬화를 사용하고, 지금까지 내가 결과에 기쁘게 생각 아키텍처와 주변 놀았 던 - 나는 사용자 인터페이스에서 & 직렬화로 직렬화 할 수 있습니다 , XML 저장소 및 데이터베이스를 수정하여 다양한 소스 및 싱크를 수용 할 수 있습니다. 나는 이것이 근본적으로 hexagonal architecture이라고 생각한다 - 모든 직렬화 타겟을 같은 방식으로 처리한다 (Serialize 메소드의 주인 의존성과 같다).

그러나이 방법을 처음 사용하는 사람은 누구나 경험이있는 사람이 누구인지, 그렇다면 통찰력이나 조언이 있는지 궁금합니다.

답변

2

첫 번째 본능은 핵심 클래스의 직렬화에 크게 의존하는 모든 것이 털이 버전 관리 문제가 될 가능성이 높다는 것입니다. 코어를 변경하면 모든 일련 번호 공급자 & 소비자 (그리고 아마도 모두 인터페이스가 가능한 정적 인 상태를 유지할 수있게 해주는 서비스/계약 기반 접근법 이라기보다는 지속적인 상점의).

그러나 시스템 사용 방법에 대한 많은 가정없이 많은 의견을 제시하는 것은 매우 어렵습니다. &은 시간이 지남에 따라 발전합니다. 접근 방식에 만족한다면 계속 &하자. 우리는 그것이 어떻게되는지 압니다.

+0

필자는 소비자와의 중요한 문제를 피할 수 있다고 생각합니다. 영속성 및 UI 요소를 다루는 ORM 틱 스키마를보고 있습니다. 우리는 이미 UI 용으로 하나를 가지고 있으므로 재사용하는 것이 좋습니다. 그 구조). 어느 정도까지는 "커스텀"필드가 도움이 될 것입니다. 필자의 초기 충동은 핵심 테이블에서 많은 메타 데이터를 떼어내어 사용자 정의 필드 구조에 넣는 것입니다. 당신은 버전 관리가 다루기에 가장 간단한 일이 아니란 것은 당연한 것입니다. 현재 시스템이 엉망 일 때이를 염두에 두십시오! –

+0

메타 데이터가 급격하게 변화하는 경우 (특히 사용자가 수정할 수있는 경우) 사용자 정의 필드 구조를 피할 수는 없으며, 프런트 엔드와 백엔드에서 변경이 가능한 무언가를 구축 할 수있는 더 많은 옵션을 제공합니다. 아마도 핵심 클래스에서 강력한 입력을 잃을 것이고 db 스키마는 좀 더 모호해질 것입니다. 또한 메타 데이터 관계를 코드 또는 db로 모델링할지 여부를 결정해야합니다. 사용자 정의 필드 (예 : 타임 스탬프, 문서 유형 등)에서 일부 메타 데이터를 제외하는 것이 좋습니다. – Sam

+0

그래, 지금은 느슨하게 링크 된 메타 데이터를 많이 사용하는 프로토 타입을 만들고 있습니다. 지금 "핵심"필드를 정의하려고합니다. –

관련 문제