2014-07-24 5 views
2

화이트 라벨 서버 측 응용 프로그램을 시작할 예정이지만 점프하고 코딩을 시작하고 싶지는 않습니다. 이것은 내가 처음부터하지 않아도되는 무언가이다. 그리고 나는 이번에는 통제 할 수있는 사람이다!화이트 라벨 응용 프로그램을위한 사이트 아키텍처

저는 많은 애플리케이션을 테스트 해 보았습니다. 좋지만 나쁘지 만, 대부분은 항상 돌아 왔고 결국 우리를 물어 보는 아키텍처의 관점에서 애플리케이션에 대한 생각이 부족하다는 것을 눈치 챘습니다. 이것은 누군가에 대한 반성이 아니며, 우리가 전화를하는 사업에 묶여있는 대부분의 시간입니다. 어쨌든 ...

나는 Railo, Coldbox 및 AngularJs를 mysql을 사용하여 결정했다. 그러나 이것은 논의의 요점이 아니며 더 많은 FYI입니다.

내가 도움을 구하는 방법은 핵심 및 사용자 지정 코드를 유지할 수 있도록 사이트를 설계하는 방법입니다 (이 코드를 클라이언트 코드라고합니다). 예, 저는 이것을 유감스럽게도 조사해 보았습니다. 어떻게 접근해야하는지에 대해서는별로 이야기하지 않았습니다.

이것은 무엇을 의미합니까? 한 세트의 코드 파일을 등록, 회사 정보, 로그인, 언어 설정 등을 할 수있는 모듈과 같이 하나 이상의 클라이언트가 사용할 수있는 사이트의 기본 셸을 원합니다. 그러나 모든 클라이언트에는 항상 요청이 있습니다 커스텀을 위해 클라이언트 코드를 사용하여 핵심 코드를 오버라이드하는 기능이 필요합니다.

Coldbox 기본 지식 (코드베이스 1 개 사이트)을 잘 알고 있지만 목표를 달성하기에 충분하지 않습니다.

이것은 Coldbox App의 기본 구조이며 이것이 클라이언트 디렉토리 구조를 보는 방법입니다.

+ 설명 ApplicationRoot
| --- + 설정
| --- + 프레임 워크
| --- + 처리기
| --- + 플러그인
| --- + 레이아웃
| - - + 전망
가 | --- + 포함
| --- + 인터셉터
| --- + 모델
| --- + 모듈
| --- + Application.cfc
| - - + index.cfm

위의 내용이 하나의 클라이언트 응용 프로그램의 기본 구조라면 어떻게 핵심 코드로 확장 할 수 있습니까? 코어 코드는 모듈의 DAO, 서비스, 게이트웨이, 빈을 보유 할 것이라고 생각합니다. 어디에서 이러한 코드가 살며 코어 코드는 다른 폴더에서 비슷한 구조를 가질 것입니까?

+ 설명 ApplicationRoot
| --- + 코어 코드
| ----- + 프레임 워크
| ----- + 플러그인
| ----- + 인터셉터
| - --- + 전망
| ----- + 모델
| ----- + 모듈

--- + 클라이언트 하나
| ----- + 클라이언트 디렉토리 위의 당 구조

--- +
고객이 | ----- +


이 읽기에 시간을 내 주셔서 감사하고 당신이 올바른 방향으로 나를 인도 할 수 있기를 바랍니다 클라이언트 디렉토리 구조 위의 당.

+0

이것은 광인 것처럼 보입니다.하지만 저는 이곳의 건축가 중 일부가 좋은 건축에 무게를두기를 바랍니다. – Prescott

+0

기본적으로 여기에 무료 컨설팅을 요청하고 있습니다. 이는 실제로 StackOverflow의 범위가 아닙니다. 이 질문은 Q & A 사이트이므로 토론을 유도하는 대신 대답이있는 질문을해야합니다. 토론 포럼에서이 질문을하는 것이 좋습니다. Railo 중심이기 때문에 Railo oogle 그룹은 합리적인 곳입니다. 즉, 그것은 매우 불투명한데, 나는 당신이 피드백을 통해 기대하고있는 것이 무엇인지 궁금합니다. 나는 또한 휠체어를 재발 명하지 않는 대신, 이미 모든 것을 수행하는 무언가가 있다면 주위를 둘러보아야한다고 생각합니다. PresideCMS일까요? –

+0

아니요. '올바른 방향으로 나를 안내 할 수 있기를 바랍니다.'라고 말했듯이, 모범 사례에 대한 공짜 또는 긴 토론을 요구하지 않습니다. 나는 그 질문에 대해 분명히 생각한다. 나는 내가 성취하고자하는 것에 대해 생각해 보았다. 나는 그것을 어떻게 생각 하는가? 나는 왜 내가 여기에 있는지 재발견하고 싶지 않습니다. 의견이 좀 더 건설적인 것은 내가 생각하는 것이 완전히 잘못되었거나,이 작업을 수행하는 데 도움이 될 수있는 점을 지적하거나 일부 오픈 소스 코드 (PresideCMS thanks). –

답변

2

일반적인 ColdBox 개체, 클라이언트간에 공유되는 개체에 대한 폴더가 필요합니다. configure these locationsColdBox.cfc입니다.

coldbox = { 
    // .. settings above 

    //Extension Points 
    UDFLibraryFile    = "includes/helpers/ApplicationHelper.cfm", 
    coldboxExtensionsLocation = "", 
    modulesExternalLocation  = ["/common/modules/"], 
    pluginsExternalLocation  = "", 
    viewsExternalLocation  = "", 
    layoutsExternalLocation  = "", 
    handlersExternalLocation = "", 
    requestContextDecorator  = "", 

    // .. more settings below 
};

웹 루트는 다음과 같습니다

- clientA 
    - skeleton 
- clientB 
    - skeleton 
- clientN 
    - skeleton 
- common 
    - extensions 
    - handlers 
    - layouts 
    - modules 
    - plugins 
    - requestContextDecorator 
    - views

할 수 있습니다뿐만 아니라 표준 냉각 박스 규칙에 override layouts and views,하지만 당신의 AngularJS와 코드가 맞지 않습니다?

처리기 동작을 재정의하는 방법은 가능합니다. 우리 회사는 이에 대한 맞춤 프로세스를 가지고 있지만 아직 오픈 소스를 공개하지 않았습니다.

희망이 도움이됩니다.

+0

re.AngularJs, 내 이해 바인딩, 필터링, 지시문에서 분명히 당신이 무엇을 제안하는에서 무시할 수있는보기에있을 것입니다. 모듈, 컨트롤러 및 서비스는 commonX 폴더 또는 clientX/include 폴더 내에서 양식을 호출하려는 내 포함/javascript 폴더에 있습니다. 나는 그것에 대해 아주 상세하게 생각하지는 않았지만, 지금까지 언급했듯이, 나는 이것을 나중에 연구하기보다는 빨리 연구 할 필요가 있다고 생각한다. * 귀하의 긍정적이고 소중한 의견에 대해 매우 감사드립니다. –