XE 동작 순서

XpressEngine의 동작 순서

XE는 요청을 받고 이에 대한 결과를 만들어 출력을 하고 종료됩니다. 전체적인 동작순서는 위 그림과 같습니다.



XpressEngine의 순서별 안내

XE의 각 순서별 자세한 내용은 아래와 같습니다.

1.요청 (Request)

XE는 웹프로그램이며 XE가 동작하기 위해서는 브라우저, 어플리케이션, XE 혹은 다른 프로그램들을 통해서 요청을 받게 되고 웹서버는 이 요청을 XE로 전달하게 됩니다.

XE를 요청할때는 Content-type에 따라서 최종 결과물 출력시 다른 형태로 출력을 하게 됩니다.

GET/ POST : 브라우저등에서 호출되는 HTML 결과물을 얻기 위한 요청 방식입니다.

JSON : Javascript로 만들어진 어플리케이션이나 AJAX 기법으로 데이터를 요청하거나 조작할때 사용되는 방식입니다.

XMLRPC : Javascript 또는 플래시등의 연동 어플리케이션 혹은 다른 XE 등의 프로그램에서 요청할때 사용됩니다.

XE의 모든 요청은 index.php 파일을 거치게 되어 있습니다.

2. 정보 초기화 (Context Init)

요청받을때 함께 입력받은 변수, 사용자의 언어, 설정된 DB 정보등 XE가 구동되기 위한 모든 정보를 초기화합니다.

Context class는 요청받은 도메인 정보에 따라 virtual Site에 대한 정보도 초기화를 하게 됩니다.

Context class는 XE의 모든 정보를 관리하는 상위 class이며 각 모듈들이 실행되고 결과물을 출력할때는 사용됩니다.

3. 요청 받은 모듈 탐색 (ModuleHandler)

정보 초기화가 끝나면 ModuleHandler 라는 XE의 모듈을 관리하는 ModuleHandler가 동작하게 됩니다.

ModuleHandler는 아래와 같은 변수를 이용해서 모듈을 찾고 동작 시킵니다.

document_srl : 문서 중심인 XE에서 최우선 접속 대상 파악은 문서 번호인 document_srl 변수로 찾게 됩니다.

mid : document_srl이 없거나 잘못된 값일 경우 mid 변수를 이용하여 대상 모듈을 찾게 됩니다.

module_srl : document_srl, mid가 없을 경우 module_srl 변수로 대상 모듈을 찾게 됩니다.

위 3가지 변수로도 대상 모듈을 찾지 못했다면 기본 설정으로 되어 있는 모듈을 검색합니다.
(virtualSite 사용 도메인으로 접속시 virtualSite의 기본 설정 모듈을 검색)

4. 검색된 대상 모듈의 실행

검색된 대상 모듈이 없다면 에러를 출력하게 되고 바로 결과물 출력을 위한 준비 단계로 넘어갑니다.

대상 모듈이 있을 경우 대상 모듈의 동작을 위해 act 변수값을 검수합니다.

act 변수는 모든 모듈에서 정의한 action 이름을 담고 있는 변수입니다.

이 act 변수에 담겨진 값이 모듈에서 정의한 action 중에 존재하지 않는다면 다른 모듈에서 정의되었는지를 찾게 됩니다.

다른 모듈의 모든 action을 찾는 것이 아니라 action forward라는 DB에 입력된 것을 대상으로 찾게 됩니다.

action forward DB에서 찾게 되면 그 대상 모듈을 찾아서 현재 모듈과 교체하게 됩니다.

모듈의 action에 해당하는 method를 찾아서 실행합니다.

5. 모듈 실행

4번을 통해 module, action을 찾게 되고 해당하는 method를 실행함으로서 모듈의 실행이 이루어집니다.

6. 요청된 Content Type의 조사

GET/POST, JSON, XMLRPC의 요청 형식에 따라서 5번에서 실행된 결과를 출력할 방법을 찾게 됩니다.

GET/POST일 경우 HTML 로 출력하기에 Template Handler를 통해서 결과물을 생성하게 됩니다.

물론 HTML 출력이기 때문에 editor component, widget등을 컴파일해서 결과를 대체시키게 됩니다.

JSON/ XMLRPC의 경우 해당 모듈의 module.api.php 파일을 통해서 결과를 한번 더 검수하게 합니다.

이렇게 정리된 결과는 결과물 출력 단계로 넘어갑니다.

7. 결과물 출력

Request Content Type에 따라서 적절한 결과물을 만들어서 출력합니다.

이로서 XE의 동작은 끝이 납니다.

애드온(addon) 의 동작

XE 의 애드온은 위의 flow chart를 보면 hooking 개념으로 총 4번의 애드온 호출이 이루어집니다. XE의 동작중 입력이나 출력을 조작할 수 있는 position을 정의하고 이 position에서 애드온을 호출함으로서 애드온은 XE의 모듈이 하는 정상적인 동작을 변형하거나 중단 또는 무언가를 추가할 수 있습니다.

--- zero님/sol님 작성글 ---