다중 클라이언트를 위한 DataSnap 서버 만들기

델파이 XE2의 DataSnap 기능은 이전버전인 Midas에 비하여 월등히 강력하고 사용하기 쉽게 변경 되었습니다. DataSnap 기능을 활용하여 다중 클라이언트( Windows, OSX, iPhone, Android) 환경에서 접근 가능한 애플리케이션 서버와 클라이언트 프로그램의 개발을 통하여 DataSnap을 활용하는 방법을 배워 봅니다.

DataSnap 서버는 델파이 XE2의 위저드 기능을 이용하여 생성 합니다. 메뉴에서 File – New – Other를 선택하여 왼쪽 트리에서 DataSnap Server를 선택하면 아래의 그림과 같은 DataSnap Server를 선택할 수 있는 화면이 나타납니다.

두번째 아이콘인 DataSnap Server 를 선택하고 OK 버튼을 누르면 아래와 같이 프로그램 실행 방법을 선택하는 화면을 볼 수 있습니다. 서버의 경우 Service Application으로 만들어 줄 수도 있습니다만 여기서는 화면이 보이는 VCL Forms Application 을 선택합니다.

Next 버튼을 누르면 서버의 기능을 선택하는 화면을 불 수 있습니다. 델파이 클라이언트만을 위해서는 TCP/IP 만 선택해도 되지만 여기서는 아이폰등 다중 클라이언트 환경을 위한 REST protocol을 지원하기 위하여 HTTP도 함께 선택 합니다. HTTPS환경을 구축하고자 한다면 HTTPS를 동시에 선택 할 수도 있습니다. 사용자 확인이 필요한 경우 Authorization 옵션을 선택 할 수도 있습니다. Server Methods Class는 필히 선택 해야 합니다. 여기서 생성한 메소드를 클라이언트에서 호출하게 됩니다.

다음을 누르면 아래와 같이 포트를 선택할 수 있는 다이얼로그가 나옵니다. 테스트포트 버튼을 눌러 포트 사용 여부를 확인하고 다음을 선택합니다.

서버 메소드의 조상 클래스를 선택하는 화면에서는 TDSServerModule을 선택하여 줍니다.

Finish 버튼을 누르면 아래 그림과 같은 프로젝트를 생성해 줍니다. 각각 생성된 이름대로 저장합니다. ServerContainer1 유닛을 살펴보면 아래의 그림과 같은 컴포넌트들이 자동으로 생성되어 있습니다.

DSServer1 – DataSnap 메인 서버

DSServerClass1 – DataSnap 서버에서 클라이언트에 중계 하고자 하는 메소드를 연결하기 위한 클래스 컴포넌트

DSTCPServerTransport1 – TCI/IP 프로토콜 전송을 위한 통신 컴포넌트 – 델파이 클라이언트용

DSHTTPService1 – HTTP 프로토콜 전송을 위한 통신 컴포넌트 – 아이폰 혹은 REST 클라이언트를 위한 통신 컴포넌트

ServerContainerUnit1 유닛에는 아래의 그림과 같이 클라이언트에서 메소드를 호출했을 때 ServerMethodsUnit1으로 연결 해주는 코드가 위저드에 의해 이미 작성되어 있습니다.

이제 데이터베이스와 연결하기 위하여 ServerMethodsUnit1에 TSqlConnection, TSQLDataset, TDatasetProvider를 각각 화면에 올려 놓고 데이터베이스와 연결합니다.

SQLConnection1 Setting

SQLDataSet1 Setting

컴포넌트 셋팅과 데이터베이스 연결을 확인하면 클라이언트에서 호출할 메소드를 만들어 봅니다. 실습에서 사용할 메소드는 GetRecordCount, GetRecords, GetRecord 이름으로 세개의 메소드를 아래와 같이 선언합니다. 메소드 선언시에 주의할 점은 컴파일러 지시자 {$METHODINFO ON} 과 {$METHODINFO OFF} 의 사이에 선언한다는 점입니다. 워저드를 이용하여 생성한 코드는 자동으로 이 컴파일러 지시자를 생성해 주지만 사용자가 직접 만들 때에는 이것을 사용자가 입력해 주어야만 합니다. 이 지시자는 델파이 클라이언트를 만들 때 자동으로 클라이언트 코드를 생성하도록 도와줍니다.

생성한 메소드의 세부 코드는 다음과 같습니다.

여기까지 하면 다중 클라이언트를 위한 DataSnap 서버 프로그램 만들기가 완료 됩니다. 완료된 프로그램을 서버 컴퓨터에 실행 시켜두고 클라이언트 프로그램을 만들어 보겠습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15450
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13963
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16500
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22057
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18924
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39259
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174726
» 다중 클라이언트를 위한 DataSnap 서버 만들기 관리자 2011.12.22 16117
25 델파이 XE2 DataSnap Client 만들기 [1] 관리자 2011.12.22 12896
24 BLOB 컬럼에 (이미지 등의)데이터 읽고 쓰기 험프리 2016.08.01 6096
23 [따라하기] 인공지능 오목게임(1) - 만들기 [2] file 대화마을 2017.09.12 5511
22 안드로이드 웹브라우저에서 "tel:, sms:" 링크가 동작하지 않는 이슈 해결하기 Humphery 2015.06.26 4831
21 [FireDac] FDConnection 데이터베이스 Connection 설정 file 김원경 2017.09.01 4559
20 [하이브리드 앱 개발] 웹페이지에서 델파이 함수 호출하기 Humphery 2015.06.26 4076
19 QR/바코드 스캐너 앱 샘플코드(ZXing, TFrameStand 사용) [1] 험프리 2017.08.04 3049
18 블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법 [1] file 험프리 2017.03.24 2657
17 [따라하기] 인공지능 오목게임(4) - 바둑판 그리기 [2] file 대화마을 2017.09.18 2133
16 [오픈소스] 델파이 컴포넌트, 프레임워크, 라이브러리, 리소스 등등 관리자 2017.02.15 2037
15 퀵레포트(Quick Report)에 사진 출력하기 험프리 2016.08.01 1864
14 TListView 행별로 배경색 설정 및 글꼴변경하기 험프리 2017.09.08 1681
13 [따라하기] 인공지능 오목게임(3) - 디자인 구성하기 file 대화마을 2017.09.14 1639
12 [따라하기] 인공지능 오목게임(2) - 최종결과물 [2] file 대화마을 2017.09.14 1625
11 [따라하기] 인공지능 오목게임(7) - 오목게임 승자(5돌) 결정 지능프로그램 file 대화마을 2017.10.17 1584
10 RFID 리더(한미IT RF Prisma) 연동하기 - 델파이에서 JAR 이용 [1] 험프리 2017.12.19 1546
9 윈도우 10에서의 High DPI 김원경 2020.03.02 1272
8 [코드레이지 2019] 웹소켓(WebSocket)과 델파이 험프리 2020.01.22 1224
7 델파이 문서화 도구 참고링크 Humphery 2015.09.11 1161