문제

나는 언어별 답변을 많이 찾고 있지 않으며 단지 플러그인 시스템을 구현하기 위한 일반적인 모델을 찾고 있습니다(알고 싶으시다면 저는 Python을 사용하고 있습니다).나는 내 자신의 아이디어(콜백 등록, 그게 전부임)를 가지고 있지만 다른 아이디어도 존재한다는 것을 알고 있습니다.일반적으로 사용되는 것은 무엇이며 그 밖의 무엇이 합리적입니까?

플러그인 시스템이란 무엇을 의미하나요?종속성 주입 및 IOC 컨테이너가 좋은 솔루션처럼 들리나요?

내 말은, 어, 음, 기본 프로그램을 변경하지 않고 기본 프로그램에 기능을 삽입하는 방법이라는 뜻입니다.시작할 때 그것을 정의할 생각은 없었습니다.의존성 주입은 그렇지 않습니다 바라보다 특히 내가 하고 있는 일에 적합하지만 그에 대해 잘 알지 못합니다.

도움이 되었습니까?

해결책

아주 좋은 것이 있습니다 삽화 ~의 소프트웨어 엔지니어링 라디오, 당신이 관심을 가질 수도 있습니다.

나중에 참고할 수 있도록 여기에 "Enabler에 대한 규칙" (대체 링크) 우수에 주어진 Eclipse에 기여 에리히 감마, 켄트 벡 지음.

  • 초대 규칙 - 가능하다면 다른 사람들이 귀하의 기여에 기여하도록 하십시오.
  • 지연 로딩 규칙 - 기여는 필요할 때만 로드됩니다.
  • 안전한 플랫폼 규칙 - 확장 포인트 제공자로서 귀하는 확장 포인트의 오작동으로부터 자신을 보호해야 합니다.
  • 페어플레이 규칙 - 모든 클라이언트는 동일한 규칙에 따라 플레이합니다. 심지어 저도 마찬가지입니다.
  • 명시적 확장 규칙 - 플랫폼을 확장할 수 있는 위치를 명시적으로 선언합니다.
  • 다양성 규칙 - 확장 포인트는 여러 확장을 허용합니다.
  • 좋은 울타리 규칙 - 코드 외부로 제어권을 전달할 때는 자신을 보호하세요.
  • 명시적 API 규칙 - API를 내부와 분리합니다.
  • 안정성 규칙 - 누군가를 기여하도록 초대한 후에는 규칙을 변경하지 마십시오.
  • 방어적 API 규칙 - 자신 있는 API만 공개하되 클라이언트가 요청할 경우 더 많은 API를 공개할 준비를 하십시오.

다른 팁

간단한 플러그인 아키텍처는 플러그인이 구현해야 하는 모든 메소드를 포함하는 플러그인 인터페이스를 정의할 수 있습니다.플러그인은 애플리케이션의 이벤트를 처리하고 애플리케이션의 표준 코드, 모델 객체 등을 사용할 수 있습니다.일을 끝내기 위해.구현하는 대신 재정의한다는 점을 제외하면 기본적으로 ASP.NET 양식과 동일합니다.

아무도 나에게 이 부분을 가르쳐주지 않았고 나는 전문가도 아니지만 다음과 같은 느낌을 받았습니다.일반적으로 플러그인은 해당 애플리케이션보다 안정성이 떨어지므로 애플리케이션은 항상 제어할 수 있어야 하며 플러그인이 주기적으로 작동할 수 있는 기회만 주어야 합니다.플러그인이 관찰자를 등록할 수 있는 경우 대리자에 대한 호출을 시도/적발해야 합니다.

Python에서는 다음에서 제공하는 진입점 시스템을 사용할 수 있습니다. setuptools 그리고 pkg_resources.각 진입점은 플러그인에 대한 정보(이름, 작성자, 설정 및 해제 기능 등)를 반환하는 함수여야 합니다.

어때? 추상 공장?기본 프로그램은 추상 개념이 서로 상호 작용하는 방법을 정의하지만 호출자는 구현을 제공해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top