모듈이나 플러그인 기반 시스템을 개발할 때 어떻게 시작해야 하나요?
문제
나는 전적으로 모듈 기반의 시스템을 개발하려고 합니다.시스템 기반에는 플러그인에 대한 정보를 찾고, 플러그인을 시작하고, 해당 모듈이 통신할 수 있는 방법을 제공할 수 있는 지원이 있어야 합니다.이상적으로는 새 모듈을 마음대로 삽입하고 사용하지 않는 모듈을 꺼낼 수 있어야 하며, 가능한 경우 모듈은 서로의 기능을 사용할 수 있어야 합니다.
이 시스템은 다양한 모듈에서 많은 일이 발생하고 다른 모듈이 이를 기반으로 작업을 수행할 수 있는 시뮬레이션 시스템의 기반으로 사용해야 합니다.
제가 개발하려는 시스템은 Java로 개발될 예정입니다.제가 보기에 저는 이름, 어떤 이벤트가 발생할지 등의 정보로 모듈을 설명하는 XML을 포함하는 각 모듈에 대한 하위 폴더가 있는 폴더를 만들려고 합니다.이 문제를 해결하려면 사용자 정의 ClassLoader를 작성해야 할 수도 있습니다.
문제는 내 아이디어가 실제로 효과가 있을지 모르겠고, 물론 작동하는 프로토타입을 만들 계획이라는 것입니다.그러나 저는 이전에 진정한 모듈식 시스템에 대해 작업한 적이 없으며 이 문제를 해결하는 가장 좋은 방법이 무엇인지 잘 모르겠습니다.
어디서부터 시작해야 할까요?이런 종류의 시스템을 개발하는 동안 발견되는 일반적인 문제와 함정이 있습니까?격리를 유지하면서 모듈이 서로 통신하도록 하려면 어떻게 해야 합니까?(즉, 모듈을 제거하고 해당 모듈을 사용하고 있던 다른 모듈은 정상 상태를 유지합니다)어디서부터 시작해야 할지에 대한 아이디어를 얻을 수 있는 가이드, 사양 또는 기사가 있습니까?Java 기반이면 더 좋겠지만 이것이 필수 사항은 아닙니다. 제가 지금 찾고 있는 것은 코드가 아니라 아이디어이기 때문입니다.
어떤 피드백이라도 감사하겠습니다.
해결책
꼭 살펴보셔야 할 것 OSGi.되는 것을 목표로 합니다. 그만큼 Java용 구성요소/플러그인 메커니즘.이를 통해 코드(소위 번들)를 모듈화하고 런타임 시 번들을 업데이트할 수 있습니다.또한 다른 번들의 원치 않는 액세스로부터 구현 패키지를 완전히 숨길 수도 있습니다.API만 제공하세요.
Eclipse는 OSGi를 구현하고 사용하는 최초의 주요 오픈 소스 프로젝트였지만 이를 완전히 활용하지 못했습니다(다시 시작하지 않고 플러그인 설치/업데이트 없음).하지만 처음부터 시작한다면 플러그인 시스템을 위한 아주 좋은 프레임워크를 제공할 것입니다.