윈도우 애플리케이션 개발할 때 델파이, WPF .NET 프레임워크, 일렉트론 차이점을 정리한 기술백서, 읽어보셨나요? 윈도우 10 계산기를 만들어보면서 세 프레임워크의 차이점들을 정리한 백서인데요. 총 23개 평가 항목들을 각각 평가했습니다. 이 작업에는 델파이 MVP와 WPF 전문가, 일렉트론 전문가들이 참여했습니다.
이번에는 기술백서의 유연성 비교 부분 중에서 데이터베이스 연동을 정리했습니다. 계산기 자체는 데이터베이스를 사용하지 않기 때문에, 프레임워크 자체적으로 평가를 해보았습니다.
데이터베이스 연동
여러분의 프레임워크에는 데이터베이스 연동을 위한 기본 라이브러리들이 포함되어 있나요? 데이터 지속성은 매우 중요합니다. 또한 사용자 친화적이어야 하며, 모든 우수한 개발 프레임워크와도 통합될 수 있어야 합니다.
델파이의 주요 강점은 WPF와 일렉트론과는 달리, FMX(파이어몽키) 프레임워크를 이용하면 단 하나의 소스 코드만으로 주요 데스크탑, 모바일 플랫폼에 배포 가능한 앱을 개발할 수 있어, 비즈니스 접근성이 매우 극대화할 수 있다는 점입니다. 그러면서도 코드 중복과 유지보수/업그레이드 문제는 최소화할 수 있습니다. 즉, 산업 자동화를 위한 로직 컨트롤러부터 세계적인 규모의 인벤토리 관리에 이르기까지 모든 규모의 프로젝트들을 지원할 수 있는 것입니다. 또한 모든 계층(tier)에 맞게 개발할 수 있는데요. 데이터 집약적인 백엔드부터 GUI 클라이언트 단까지 모두 지원합니다. 결론적으로 델파이의 표준 라이브러리들은 사용 가능한 거의 모든 데이터베이스를 쉽게 연동할 수 있고, 개발자들은 모든 플랫폼에서 운영체제(OS) 기능에 접근할 수 있습니다. 또한 I/O 디바이스들과 하드웨어 센터들도 활용할 수 있죠.
WPF with .NET 프레임워크는 윈도우 컴퓨터들을 직접 지원합니다. 이 프레임워크는 주로 클라이언트 단의 데스크탑 애플리케이션에 맞추어져 있습니다. 하지만 미들티어나 백엔드 기능들은 C#에서 비즈니스 로직을 통합할 수 있고, ADO NET 엔티티 프레임워크로 데이터베이스들을 연동할 수 있습니다. WPF는 .NET 라이브러리들을 활용해 윈도우 운영체제 기능과 I/O 디바이스에 액세스할 수 있습니다. 하지만 네이티브 코드가 아닌 컴파일 후 매니지드 코드입니다.
일렉트론은 오픈 소스 프레임워크로 크로미엄 브라우저를 통해 3대 주요 데스크탑 운영체제들을 지원합니다. 전형적인 웹 기반이지만, 클라이언트 단 애플리케이션에 중점을 두고 있지만 미들티어와 백엔드 서비스에 대해서는 node.js를 사용합니다. 일렉트론은 node.js 프로세스에서 하드웨어 액세스가 가능합니다. node.js 라이브러리들을 이용하면 일부 운영체제 기능들을 활용할 수는 있지만, 모든 운영체제들을 액세스할 수는 없습니다.
각각의 프레임워크들을 자세히 살펴볼까요?
델파이
델파이는 업계 거의 모든 데이터베이스들과 연동 가능한 다양한 데이터베이스 라이브러리들을 제공합니다. 데이터베이스 연동, 쿼리, 데이터 표현까지 연동 가능한 컴포넌트들을 통해 모두 완벽하게 통합됩니다. 델파이와 WPF는 백서에서 비슷한 점수를 받았습니다. 하지만 델파이는 통합 툴체인과 지원 데이터베이스들이 훨씬 더 많습니다.
파이어닥은 범용 데이터 연동 라이브러리로, 엔터프라이즈 급 데이터베이스들과 연동하여 다양한 디바이스에 배포 가능한 앱을 개발할 수 있도록 지원합니다. 강력한 범용 아키텍처를 갖춘 파이어닥은 델파이와 C++빌더에 포함되어 있는데 인터베이스, SQLite, MySQL 서버, 오라클, PostgreSQL, DB2, AQL Anywhere, Advantage DB, Firebird, Access, Informix, DataSnap은 물론이고 NoSQL 데이터베이스 MongoDB까지 네이티브로 직접 연동할 수 있습니다.
파이어닥은 강력하면서도 사용하기 매우 쉬운 데이터 연동을 지원합니다. 데이터 연동의 지원, 추상화, 간소화는 물론 실제 대용량 애플리케이션 구축에 필요한 모든 기능들을 제공합니다. 파이어닥은 공통 API를 지원해, 각 데이터베이스의 고유한 기능에 대한 액세스는 유지하면서, 서로 다른 데이터베이스 백엔드에 액세스할 수도 있습니다. 파이어닥을 사용해서 안드로이드, iOS, 윈도우, 맥OSX 애플리케이션을 완성해보세요.
RAD스튜디오 파이어닥 데이터베이스가 지원하는 데이터베이스 리스트입니다. 각 버전별로 지원 가능한 최소-최대 버전들이 표시되어 있습니다.
Database | FireDAC driver ID | Seattle (10.0) | Berlin (10.1) | Tokyo (10.2) | Rio (10.3) | Sydney (10.4) |
---|---|---|---|---|---|---|
SAP Advantage Database | ADS | v 8.0 – 10.1 | v 8.0- 12.0 | v 8.0 – 12.0 | v 8.0 – 12.0 | v 8.0 – 12.0 |
SAP SQL Anywhere | ASA | v 5.0 – 12.0 | v 5.0 – 16.0 | v 5.0 – 16.0 | v 5.0 – 16.0 | v 5.0 – 16.0 |
IBM DB2 Server | DB2 | v 8.2 – 9.7 | v 8.2 – 9.7 | v 8.2 – 9.7 | v 8.2 – 9.7 | v 8.2 – 9.7 |
Firebird | FB | v 1.5 – 2.5 | v 1.5 – 2.5 | v 1.5 – 2.5 | v 1.5 – 3.0 | v 1.5 – 3.0 |
InterBase | IB | v 6.0 – XE7 | v 6.0 – XE7 | v 6.0 – 2017 | v 6.0 – 2017 | v 6.0 – 2020 |
IBM Informix | Infx | v 8.0 – 11.7 | v 8.0 – 11.7 | v 8.0 – 12.1 | v 8.0 – 12.1 | v 8.0 – 12.1 |
MongoDB | Mongo | v 3.0 | v 3.0 | v 3.0 | v 3.0 | v 3.0 |
Microsoft Access | MSAcc | 95 – 2010 | 95 – 2010 | 95 – 2015 | 95 – 2015 | 95 – 2015 |
Microsoft SQL Server | MSSQL | 2000 – 2008 | 2000 – 2008 | 2000 – 2016 | 2000 – 2017 | 2000 – 2017 |
MySQL Server | MySQL | v 3.21 – 5.5 | v 3.21 – 5.6 | v 3.21 – 5.7 | v 3.21 – 6.x | v 3.21 – 8.0 |
MariaDB | MySQL | n/a | n/a | v 5.5 – 10.1 | v 5.5 – 10.3 | v 5.5 – 10.3 |
Oracle Server | Ora | v 8.0 – 11.2 | v 8.0 – 12.1 | v 8.0 – 12.1 | v 8.0 – 12.1 | v 8.0 – 12.1 |
PostgreSQL | PG | v 7.4 – 9.1 | v 7.4 – 9.5 | v 7.4 – 9.5 | v 7.4 – 10.0 | v 7.4 – 12.0 |
PostgreSQL Enterprise Server | PG | v 9.2 | v 9.2 | v 9.2 | v 9.2 | v 9.2 |
SQLite | SQLite | v 3.0 – 3.8.7 | v 3.0 – 3.9.2 | v 3.0 – 3.9.2 | v 3.0 – 3.23.1 | v 3.0 – 3.31.1 |
Teradata | TData | v 13.0 – 15.0 | v 13.0 – 15.0 | v 13.0 – 15.0 | v 13.0 – 15.0 | v 13.0 – 15.0 |
Generic ODBC sources | ODBC | v 2.0 – 3.0 | v 2.0 – 3.8 | v 2.0 – 3.8 | v 2.0 – 3.8 | v 2.0 – 3.8 |
파이어닥 ODBC Bridge 드라이버를 사용하면 아래와 같은 데이터베이스들을 추가로 연동할 수 있습니다.
Database | Version |
---|---|
SAP Adaptive Server Enterprise | v 15.0 |
IBM DB2 AS/400 | n/a |
QuickBooks | v 16.0 |
InterSystems Cache | 2014 |
Pervasive SQL | v 10.0 |
DBase | n/a |
Excel | n/a |
MicroFocus Cobol | n/a |
Ingres Database | n/a |
SAP MaxDB | n/a |
Clarion | n/a |
SolidDB | n/a |
Unify SQLBase | n/a |
델파이와 RAD스튜디오는 파이어닥 외에도 다양한 상용 및 오픈 소스 데이터베이스 연동 솔루션들을 제공할 수 있는 훌륭한 생태계가 이미 구축되어 있습니다. 심지어 델파이와 C++에서 닷넷(.NET) 라이브러리들을 연동할 수도 있죠: ATOZED 소프트웨어의 크로스톡(Cross Talk)과 같은 써드파티 솔루션을 활용한다면요!
WPF .NET 프레임워크
WPF는 ADO .NET Entity 프레임워크를 포함한 C# 코드로 데이터베이스 연결, 쿼리, 엔트리를 사용할 수 있는 데이터베이스 라이브러리들을 활용해 연동할 수 있습니다. 마이크로소프트는 닷넷(.NET) 프레임워크에서 활용 가능한 데이터들을 다음과 같이 안내하고 있습니다 (출처):
- .NET Framework Data Provider for SQL Server
- .NET Framework Data Provider for OLE DB
- .NET Framework Data Provider for ODBC
- .NET Framework Data Provider for Oracle
- .NET Framework Data Provider for SQL Server Compact 4.0
WPF .NET 프레임워크는 ODBC 지원으로 데이터베이스 연동 부문에서 높은 점수를 받았습니다. 다른 데이터들은 써드 파티 제품들을 통해서 연동할 수 있습니다. 하지만 각각 다른 데이터베이스 라이브러리가 필요하기 때문에 추적하고 설치하고 또 최신 상태로 유지하기 위해서는그만큼 시간이 많이 소요됩니다.
일렉트론 (Electron)
일렉트론은 기본적으로 네이티브 데이터베이스 연동 라이브러리가 지원하지 않습니다. 데이터베이스 연동에 필요한 모든 기능을 제공하는 단일 패키지가 아닌 것이죠. NodeJS를 사용한다면 데이터베이스를 연동할 수는 있습니다. 다양한 오픈 소스 라이브러리들로 서버 또는 서버가 없는(server less) 데이터베이스들을 사용할 수 있습니다 (JavaScript 구현을 통해서요). 하지만 각 데이터베이스들마다 라이브러리들이 필요하고, 설치하고 최신 상태로 유지하기 위해서는 그만큼 시간이 많이 소요됩니다.
일렉트론에서 NodeJS로 오라클 DB에 연동하는 예제입니다:
https://docs.oracle.com/en/cloud/paas/exadata-express-cloud/csdbp/connect-node-js.html
패키지 매니저를 통해서도 가능합니다:
https://www.npmjs.com/package/mssql
세 가지 프레임워크 모두 대부분의 데이터베이스에 연동할 수 있는 방법은 있습니다. 하지만 델파이와 RAD스튜디오는 가장 많은 데이터베이스를 지원합니다. 또한 데이터베이스 연동 라이브러리들이 델파이에 기본적으로 포함되어 있기 때문에, 타사 라이브러리들을 추적, 유지, 관리하기 위해 시간을 쏟을 필요가 없습니다. WPF .NET 프레임워크는 마이크로소프트의 레거시 프레임워크로 5개 정도의 데이터 공급사들을 활용할 수 있습니다 (ODBC를 통해서 더 많은 데이터베이스들을 연동할 수는 있습니다). 일렉트론은 데이터베이스 연동 컴포넌트들이 기본적으로 제공되지는 않습니다. 하지만 NodeJS를 이용한다면 연동할 수는 있습니다. 시간과 추가적인 노력들이 많이 필요하겠지만요. 전반적으로 델파이는 다른 두 프레임워크보다 더 많은 데이터베이스를 즉시 지원할 수 있는 보다 유연하고 통합된 툴 체인을 제공합니다.