Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

Recommended Posts

Docwiki에 있는 "General (FireDAC)"를 번역한 글 (번역일: 2022년 3월 1일)

위로 가기: 아키텍처 (FireDAC)

FireDAC의 아키텍처는 유연하고, 강력하고, 확장 가능 하다.

FireDAC-Architecture.jpg

그림. FireDAC 아키텍처 (각 요소에 대해 아래에서 설명한다)

목차


일반

FireDAC은 서비스 별로 담당하는 계층이 있고 각 계층 간에 서로 헐겁게 짝지어진(loosely coupled) 다층(multilayered) 아키텍처이다. 서비스 API는 COM 인터페이스로 정의되어 있어서, 다른 계층에서 해당 인터페이스 팩토리를 통해 요청할 수 있다.

해당 인터페이스 구현을 찾지 못하면, 예외가 발생한다. 해당 구현을 애플리케이션에 링크하려면, 구현에 상응하는 유닛들 역시 링크해 주어야 한다. 구현은 필수인 것도 있고 선택인 것도 있다. 대체 구현들 중에서 선택할 수도 있다.

 

예시

예를 들어, IFDGUIxWaitCursor 인터페이스는 마우스 대기(모래시계) 커서용 API를 정의한다. 해당 구현(제공자, Provider)에는 3가지가 있다. 

  • FireDAC.VCLUI.Wait - 이 유닛에는 VCL GUI 애플리케이션 구현이 들어 있다.
  • FireDAC.FMXUI.Wait - 이 유닛에는 파이어몽키 GUI 애플리케이션 구현이 들어 있다.
  • FireDAC.ConsoleUI.Wait - 이 유닛에는 콘솔(console) 애플리케이션 구현이 들어 있다.

GUI 또는 콘솔용 마우스 대기 커서 구현은 필수이다. 따라서 FireDAC을 사용하는 애플리케이션에서는 이것을  반드시 링크해야만 한다. 그렇지 않으면, 다음과 같은 예외가 발생한다.

Object factory for class {3E9B315B-F456-4175-A864-B2573C4A2201} missing.
To register it, you can drop component [TFDGUIxWaitCursor] into your project

주의: 위 예외 메시지는 꼭 필요한 표준 인터페이스 구현을 링크하기 위해 해당 유닛이 반드시 애플리케이션 안에 포함되어야 한다고 알려준다.

 

비시각적 컴포넌트(들) [Comp]

비시각적 컴포넌트 [Comp] 계층은 FireDAC의 public 인터페이스(들)을 나타낸다. 마치 델파이의 비시각적 컴포넌트인 데이터 액세스 컴포넌트들과 유사하다. 이 계층에는 TFDConnection (연결 설정), TFDQuery (쿼리 실행), TFDStoredProc (저장 프로시저 실행), TFDMemTable (인-메모리 데이터셋), TFDScript (SQL 스크립트 엔진), 등등이 있다.

주요 유닛들:

 

시각적 컴포넌트(들) [GUIx]

시각적 컴포넌트 [GUIx] 계층은 FireDAC을 사용하는 애플리케이션이 최종-사용자와 상호작용할 수 있는 길을 제공한다. 이것은 상위-수준 컴포넌트(들)로써 데이터베이스의 표준 동작용 최종-사용자 대화창 (로그인, 작동 중 대기, 등등)을 추가할 수 있도록 해준다. 이 계층에는 TFDGUIxWaitCursor (대기 커서), TFDGUIxLoginDialog (로그인 대화창), TFDGUIxErrorDialog (에러 대화창), 등등이 있다. 이 계층은 VCL (VCL), 파이어몽키 (FMX), 콘솔 (Console) 플랫폼용 구현을 제공한다. 

주요 유닛들:

 

로컬 데이터 저장소 [DatS]

로컬 데이터 저장소 [DatS]는 로컬 데이터 저장소를 구현한다. 마치 ADO.NET의 데이터셋과 그와 연관된 오브젝트들 (DataTable, DataRow, DataView, 등등)과 같다. 

주요 유닛:

  • FireDAC.DatS

 

데이터 어댑터 [DApt]

데이터 어댑터 [DApt]는 마스터-디테일, 중첩, ADT (추상 데이터 타입) 등 과 같은 복잡한 결과 세트를 다룰 때 자동으로 세밀하게 튜닝하여 읽을 수 있고, 데이터시스템으로 다시 업데이트할 수 있도록 해준다.    

주요 유닛들:

  • FireDAC.DApt.Intf
  • FireDAC.DApt

 

디버그와 성능 모니터 [Moni]

디버그와 성능 모니터 [Moni]는 디버그 모니터 인터페이스를 구현하는 FireDAC의 디버깅 기능을 담당하는 계층이다. 이 계층은 FireDAC 애플리케이션과 데이터베이스 관리 시스템 (DBMS) 사이의 상호 작용을 모니터링하고 추적을 기록할 수 있도록 한다. 이것은 TFDMoniXxxxClientLink 컴포넌트에 지정된 프로퍼티들과 연결 정의 파라미터인 MonitorBy 에 의해 다룰 수 있다. 여기에는 TFDMoniRemoteClientLink (FDMonitor를 통한 모니터링), TFDMoniFlatFileClientLink (파일 안에 추적 기록), TFDMoniCustomClientLink (맞춤 추적) 등이 있다.

주요 유닛들:

  • FireDAC.Moni.RemoteClient
  • FireDAC.Moni.FlatFile
  • FireDAC.Moni.Custom

 

드라이버(들) API [Phys]

드라이버 API [Phys]는 물리적인 데이터 액세스용 인터페이스를 정의한다. 각 드라이버 별로 별도의 패키지 안에서  구현하며, 각 드라이버 패키지는 해당 Phys 계층에 소속되어서 해당 DBMS에 알맞은 API를 사용하여 필요한 인터페이스를 구현한다. 자세한 사항은 Database Connectivity를 본다.

주요 유닛들:

  • FireDAC.Phys.Intf
  • FireDAC.Phys

이 드라이버들 중에 어느 것도 애플리케이션에 연결되도록 기본 설정된 것은 없다.

 

네이티브 드라이버(들) [Phys]

네이티브 드라이버(들) [Phys]은 고 성능 낮은-수준 API를 사용하여 DBMS 접근을 구현한다. 각 드라이버는 DBMS별-고유 기능을 FireDAC에 정교하게 적용한다. 모든 네이티브 드라이버는 해당 DBMS에서 테스트되고 최적화되어 있다. 여기에는 TFDPhys<DBMS>DriverLink와 서비스 컴포넌트(들)이 해당된다.

주요 유닛들:

 

브릿징 드라이버(들) [Phys]

브릿징 드라이버(들) [Phys]은 일반 데이터 액세스 API를 사용하여 DBMS에 대한 일반 접근을 구현한다. ODBCdbExpress 드라이버가 있다. 이 브릿징 드라이버들은 드라이버에게 제공되는 해당 DBMS에 관한 정보를 사용한다. 즉 해당 DBMS의 모든 기능을 커버하지 못한다. 여기에는 TFDPhysODBCDriverLink (ODBC 드라이버)와 TFDPhysTDBXDriverLink (dbExpress 드라이버)가 있다.

주요 유닛들:

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.