모듈화로 애플리케이션을 만들려면 가장 좋은 리소스는 무엇입니까? [닫은

StackOverflow https://stackoverflow.com/questions/413247

  •  03-07-2019
  •  | 
  •  

문제

Drupal, WordPress 및 Salesforce와 같은 최신 웹 플랫폼/애플리케이션에 대한 분석에서 많은 사람들이 모듈화 개념을 기반으로 소프트웨어를 만듭니다. "수석 개발자가 유지 관리하는 시스템. 특히 Drupal이 "후크"시스템을 사용한다는 것을 알고 있지만, 그것을 구현하는 엔진이나 디자인에 대해 잘 모르겠습니다.

애플리케이션을 만들고 모듈화를 허용하는 시스템을 원한다면 어디서부터 시작합니까? 이것은 특별한 것입니다 디자인 패턴 모두가 알고 있는가? a 안내서 이 패러다임이 구독하는 경향이 있습니까? 그들의 것입니다 웹 사이트 이 유형의 발전에 대해 논의합니까?

나는 어떤 사람들이 OOP를 직접 지적한다는 것을 알고 있지만, 그것은 완전히 같은 것 같지는 않습니다.

내가 계획하고있는이 특정 시스템은 Salesforce와 같은 것에 대해 더 많이 기대지 만 CRM 시스템은 아닙니다.

질문을 위해, 제발 구매 대 빌드 인수를 무시하십시오, 그 고려 사항은 이미 작품에 있습니다. 지금은 빌드 측면을 연구하고 있습니다.

도움이 되었습니까?

해결책

여기서 돌아 다니는 두 가지 방법이 있습니다. 소프트웨어가 어떻게 행동 할 것인지에 달려 있습니다.

한 가지 방법은입니다 플러그인 노선, 사람들이 할 수있는 곳 새 코드를 설치하십시오 관련 측면을 수정하는 응용 프로그램으로. 이 경로는 응용 프로그램을 설치할 수 있으며 서비스로 제공 될뿐만 아니라 (또는 제 3자가 보낸 코드, 악몽)로 제공 할뿐만 아니라 서비스로 제공 할 수 있습니다.

다른 방법은 제공하는 것입니다 API, 할 수 있습니다 관련 당사자에 의해 호출됩니다 애플리케이션 전송을 다른 곳에 위치한 코드 (LA Facebook 앱)로 전송하거나 API 명령이 개발자 (LA Google지도)를 활성화 할 때 응용 프로그램을 수행하십시오.

메커니즘이 다양하고 실제로 구현하는 방법이 다르더라도 어쨌든 정의해야합니다.

  • 사용자에게 어떤 자유를 얻을 수 있습니까?
  • 프로그래머가 응용 프로그램을 사용자 정의 할 수있는 서비스는 무엇입니까?

그리고 가장 중요한 것 :

  • 안전하고 강력한 상태를 유지하면서 내 코드에서이를 활성화하는 방법. 이는 일반적으로 코드 샌드 박스를 사용하고 입력을 검증하고 잠재적으로 사용자에게 제한된 기능을 제공함으로써 수행됩니다.

이러한 맥락에서, 후크는 정의 된 경우 모든 등록 된 플러그인의 후크 기능을 호출하는 코드의 사전 정의 된 장소로, 응용 프로그램의 표준 동작을 수정합니다. 예를 들어 배경을 렌더링하는 기능이 있으면

function renderBackground() {
    foreach (Plugin p in getRegisteredPlugins()) {
        if (p.rendersBackground) p.renderBackground();
    }
    //Standard background code if nothing got executed (or it still runs, 
    //according to needs)
}

이 경우 플러그인이 배경을 변경하기 위해 구현할 수있는 'RenderBackground'후크가 있습니다.

API 방식으로 사용자 애플리케이션은 서비스를 통해 배경을 렌더링 할 수 있습니다.

//other code
Background b = Salesforce2.AjaxRequest('getBackground',RGB(255,10,0));
//the app now has the result of calling you

이것은 모두와 관련이 있습니다 할리우드 원리, 이것은 신청하는 것이 좋지만 때로는 실용적이지 않습니다.

다른 팁

그만큼 플러그인 패턴 ~에서 EAA의 p 아마도 당신이 추구하는 것일 것입니다. 플러그인 (모듈)이 런타임에 임시로 통합 할 수있는 서비스에 대한 공개 인터페이스를 만듭니다.

이것을 구성 요소 아키텍처라고합니다. 정말 큰 영역이지만 여기서 중요한 중요한 것은 다음과 같습니다.

  • 구성 요소 구성 (컨테이너 구성 요소는 다른 구성 요소를 포함 할 수 있음)
    • 예를 들어 그리드에는 다른 그리드 또는 기타 구성 요소가 포함될 수 있어야합니다.
  • 인터페이스 별 프로그래밍 (구성 요소는 알려진 인터페이스를 통해 상호 작용합니다)
    • 예를 들어, 구성 요소가 렌더링하도록 요청할 수있는 뷰 시스템 (HTML로 예정되어 있거나 렌더 영역이 전달되어서 직접 그려도록 요청할 수 있습니다.
  • 다이나믹 레지스트리의 광범위한 사용 (플러그인이로드 된 경우 적절한 레지스트리에 등록합니다)
  • 이벤트를 구성 요소로 전달하는 시스템 (예 : 마우스 클릭, 커서 입력 등)
  • 알림
  • 사용자 관리

그리고 훨씬 더!

응용 프로그램을 호스팅하는 경우 RESTFUL API를 게시 (및 Dogfood).

소프트웨어를 배포하는 경우보십시오 오지.

다음은 적어도 당신에게 힌트를 줄 작은 비디오가 있습니다. 레고 과정 2 분 미만

모듈화를 광범위하게 기반으로 자신의 프레임 워크를 만드는 방법에 대한 완전한 레시피도 있습니다 ...

모듈화 된 소프트웨어를 만드는 가장 중요한 요소는 순전히 [대부분] 시스템을 느슨하게 결합하여 시스템을 만들 수 있다는 점을 기억하는 것입니다. 느슨하게 결합할수록 모듈화하기가 더 쉽습니다 ...

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