문제

나는 포인터, 제안, 링크, 경고, 아이디어 및 심지어 일화적인 설명을 찾고 있습니다. "모듈 식 방식으로 응용 프로그램을 설계하는 방법". 나는이 프로젝트에 Python을 사용 하겠지만, OOP를 기반으로 한 디자인 만 기꺼이 구현하려고하지만이 언어를 반드시 언급 할 필요는 없습니다.

다음은 내가 어디에서 왔는지, 무엇을 달성하려고하는지 이해하기위한 몇 가지 맥락입니다 ...


내 프로젝트는 웹 서비스를 소비하고 결과를 다음을 포함하여 다양한 방법으로 표시하는 작은 응용 프로그램이 될 것입니다.

  • 통화 결과 만 포함 된 알림 팝업
  • 검색된 원시 데이터에서 그래픽으로 표시된 응용 프로그램의 기본 창에 탭
  • 다양한 서비스의 결과가 쌓이는 메시지 버퍼 (Domand에서 표시)

응용 프로그램은 무료 (연설) 소프트웨어로 릴리스되므로 이러한 이유로 저는 다른 개발자가 플러그인/모듈을 작성하기가 정말 쉽게 만들 수 있습니다. 핵심 코드를 변경할 필요없이 기본 응용 프로그램의 기능을 확장합니다.

이 시점에서 플러그인은 본질적으로 개발자가 제공자, 데이터 조작 (있는 경우)을 정의하여 새로운 웹 서비스를 활성화 할 수 있어야합니다..

나는 발전에 대한 광범위한 경험을 가지고 있습니다 드 루팔 강력한 모듈 식 접근법이 있지만 객관적이지 않은 디자인을 따르기 때문에 Python의 경우 Drupal 디자인이 최적의 솔루션이 아닐 수도 있습니다.

이것이 중요하다면 핵심은 GNU/Linux를 위해 기본적으로 개발 될 것입니다.

시간을 보내 주셔서 감사합니다!

도움이 되었습니까?

해결책

사물을 느슨하게 결합하고 인터페이스를 자유롭게 사용하여 도움을주십시오.

나는 디자인을 시작했다 우려의 분리. 주요 건축 층은 다음과 같습니다.

  • 문제 도메인 (일명 엔진, 백엔드) : 모든 실제 작업을 수행하는 도메인 클래스에는 도메인 지식 구현 도메인 동작이 있습니다.
  • 지속성 : 도메인 클래스, 데이터베이스/파일 시스템 계층에 대한 스토리지 관리
  • 사용자 인터페이스 : 도메인 클래스와 대화하는 GUI
  • 시스템 인터페이스 : 다른 시스템과 대화합니다. 네트워킹, 웹 서비스

도메인 클래스는 작업을 수행하지만 UI에 대해 알지 못합니다. 지속성 계층은 도메인 클래스에 대해 알고 있으며 필요에 따라 저장/로드하기에 충분합니다. 시스템 인터페이스 계층은 외부 시스템을 추상화하여 테스트하는 동안 시뮬레이터를 뒤에 연결할 수 있습니다. UI는 최대의 유연성을 위해 MVC를 사용해야합니다.

너무 잘 지적하지 않으면 서, 보통 Drupal을 좋은 건축 디자인의 모범으로 보지 않을 것입니다. 시스템 업그레이드시 정기적 인 플러그인 파손에 의해 입증 된 바와 같이, 그것은 유기적으로 다소 성장했으며, 디자인의 많은 격변이있었습니다.

또한 플러그인 인터페이스를 신중하게 설계하고 여러 가지 다른 플러그인을 운동하기 위해 Micsim의 말에 반영합니다. 이것이 앱과 플러그인이 상호 작용하는 방식의 문제를 실제로 살펴 보는 유일한 방법입니다.

다른 팁

앱으로 기본 기능을 제공 할 때 확장 가능/교체 가능한 부품을 직접 플러그인으로 코딩해야합니다. 그러면 API가 어떻게 보이는지에 대한 느낌을받을 수 있습니다.

그리고 API가 양호하다는 것을 증명하려면 두 번째 및 세 번째 플러그인을 작성해야합니다. 왜냐하면 첫 번째 플러그인을 작성할 때 많은 가정을했다는 것을 알게 될 것입니다. 일반적 으로이 두 번째와 세 번째 단계를 수행 한 후에는 상황이 약간 정리됩니다.

마지막으로 작성된 플러그인은 유형의 첫 번째 플러그인, 입력 데이터 및 프레젠테이션 (아마도 다른 날씨 웹 서비스)과 유사하기 때문에 플러그인을 하나 더 작성해야합니다. 절대적으로 다른 데이터로 완전히 다른 것을 선택하면 API가 여전히 너무 맞춤화되는 것을 볼 수 있습니다. (그렇지 않으면 잘 했어!)

글쎄, 아마도 첫 번째는 처음에 앉아서 플러그인이 그 목적을 충족시키는 데 필요한 것을 알아내는 것입니다.

디자인에서 두 가지 주요 측면을 고려하고 싶을 것입니다.

  • 프레임 워크는 플러그인에서 요청 / 응답을 어떻게 통과합니까?
  • 어떤 도우미 클래스 나 모듈이 제공하는 것이 좋을까요?

그리고 아마도 이것은 학습 프로젝트처럼 들리기 때문일 것입니다.

  • 당신은 무엇을 쓰고 싶습니까? 그리고 기존 도서관에서 골라내는 것이 무엇입니까?

API를 디자인 할 때 기본 플러그인을 개발하는 것이 좋습니다. 실제로 디자인하는 것을 실제로 사용해야한다는 경험은 주어진 접근 방식이 필요한 것보다 더 어려워 질 수있는 곳을 확인할 수 있습니다.

  • 앱의 API를 조심스럽게 설계하십시오 (좋은 API를 설계하는 방법과 중요한 이유)
  • 독립적으로 모듈을 사용할 수있는 모든 것을 만들고 간단한 부분에서 더 큰 부품을 그룹화하고 구축하십시오 (키스)
  • 자신을 반복하지 마십시오 (건조)
  • 자신과 다른 사람 (오픈 소스 만트라)을 위해 짧은 문서를 자주 쓰기/게시하십시오.

청취자 수집가 패턴을 살펴보십시오. 조만간 앱이 콜백을 구현해야 할 정도로 복잡 할 것입니다. 해당 한계를 쳤을 때 청취자-구독자를 사용하십시오 (Wxpython에는 구현이 있습니다).

예를 들어, 여러 모듈이 여러 피드에서 새로운 데이터를 감시하려고합니다. 함께 연결되는 모듈은 새로운 데이터를 기반으로 스스로 업데이트 할 수 있습니다.

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