FCL-웹

FCL-Web

FCL-Web은[1] Free Pascal의 Free Component Library(FCL)의 일부로서 웹(관련) 애플리케이션 개발에 중점을 두고 있습니다.이 패키지는 사용자가 Apache 모듈뿐만 아니라 CGI, Fast CGI 및 임베디드 웹 서버 응용 프로그램을 개발할 수 있도록 지원합니다.HTTP(S) 프로토콜과 다소 낮은 수준의 웹 응용 프로그램 프레임워크를 웹 모듈 형태로 구현하는 장치를 제공합니다.일부 콘텐츠 제작자(예: 데이터 집합에서 자동 콘텐츠 생성)도 제공됩니다.다른 중요한 용도는 웹 서비스(JSON-RPC 사용)와 데이터를 주고받는 것입니다.

웹 응용 프로그램 지원 유닛

fpcgi, fpfcgi, fphttpapp 및 fpapache[24]는 각각 CGI, Fast CGI, 임베디드 웹 서버 및 Apache 모듈을 구현하는 유닛입니다.장치 간의 인터페이스는 객체 지향 상속을 이용하여 유사합니다.따라서 uses 조항의 중고 유닛 변경은 어플리케이션의 나머지 대부분에 대한 코드 변경 없이 4종류의 웹 어플리케이션을 모두 작성하기에 충분합니다.주목할 만한 예외는 Fast CGI 및 임베디드 웹 서버용 포트를 설정해야 하는 경우가 있습니다.

기타 유닛

  • httpdefs 유닛은 쿠키, 세션, 파일 업로드, MIME 처리, HTTP 헤더, 요청 및 응답의 기본 클래스를 정의합니다.
  • iniwebsession 유닛은 .ini 파일을 사용하여 세션 관리를 구현합니다.
  • fphttpserver 유닛은 멀티스레드 대응 스탠드아론 http 서버를 즉시 사용할 수 있습니다.
  • fphttpclient 유닛은 http 요청을 전송하고 응답을 가져오는 클래스를 제공합니다.사용 가능한 모든 HTTP 1.1 메서드가 구현됩니다.\
  • fphtml 유닛은 콘텐츠 제작자를 제공합니다.
  • fphttp 유닛은 웹 모듈을 사용하여 추상적인 웹 프레임워크 지원을 제공합니다.
  • fpweb 유닛은 fphttp의 추상적인 웹 프레임워크 구현을 제공합니다.

fpWeb 프레임워크

fpWeb 아키텍처

fpWeb은 fcl-web 유닛 위에 구축된 프레임워크이며 fcl-web의 일부입니다.아키텍처는 매우 모듈러형이며, Lazarus에서 사용하기 위한 RAD 패키지를 사용할 수 있습니다.fpWeb 애플리케이션은 1개 이상의 웹 모듈과 각 모듈에 대해 1개 이상의 웹 액션을 옵션으로 제공합니다.

이 프레임워크에서는 다음 형식으로 스태틱라우팅을 사용합니다.

<base URL>/<module name>[/<action name>]

<module name>는 인수로 지정된 이름에서 결정됩니다.RegisterHTTPModule통화중<action name>는 각 모듈의 액션 맵에 있는 키에서 결정됩니다.대신 GET 스타일라우팅도 지원됩니다.

<base URL>/?module=<module name>[&action=<action name>]

문자열 "module" 및 "action"은 다음 방법으로 구성할 수 있습니다.ModuleVariable그리고.ActionVar,각각 다음과 같다.

요구 처리는 다음 알고리즘을 사용하여 캐스케이드 방식으로 이루어집니다.

  1. 모듈의 요청 핸들러(TFP Web Module)를 실행합니다.OnRequest)
  2. 요구가 처리되는 경우(TFP Web Module).OnRequest Handled 파라미터가 true로 설정되어 있는 경우) 응답을 송신합니다.
  3. 그렇지 않으면 요청 처리를 웹 작업에 위임합니다.
    1. 웹 검색 액션은 현재 요청 경로에 대응합니다.옵션으로 리다이렉션/재작성(TFP Web Module)을 사용합니다.OnGetAction)
    2. 발견된 경우 웹 작업의 요청 처리기(TFP Web Action)를 실행합니다.OnRequest)
      1. 요구가 처리되는 경우(TFP Web Action).OnRequest Handled 파라미터가 true로 설정되어 있는 경우) 응답을 송신합니다.
      2. 그렇지 않으면 처리되지 않은 요청 발생 예외
    3. 그렇지 않으면 처리되지 않은 요청 발생 예외

레퍼런스

추가 정보