티스토리 뷰
Introduction
TMS RemoteDB는 3 계층 데이터베이스 응용 프로그램을 만들 수있는 Delphi 구성 요소 세트입니다. 이것은 클라이언트 db 응용 프로그램이 데이터베이스 서버에 직접 액세스하는 대신 HTTP 서버를 통해 SQL 문을 실행할 수있게합니다. 성능, 안정성 및 클라이언트 / 서버 애플리케이션을 3 계층 애플리케이션으로 변환하기위한 쉬운 경로를 목표로합니다. 서버 측에서는 FireDac, dbExpress, dbGO (ADO) 및 기타 여러 데이터베이스 서버에 연결할 수있는 광범위한 데이터베이스 액세스 구성 요소를 선택할 수 있습니다. TMS RemoteDB는 TMS Sparkle을 핵심 통신 라이브러리로 사용합니다.
TMS RemoteDB 제품 페이지 : http://www.tmssoftware.com/site/remotedb.asp
TMS 소프트웨어 사이트 : http://www.tmssoftware.com
이 설명서의 PDF 버전 :
http://www.tmssoftware.com/business/remotedb/doc/remotedb_manual.pdf
Overview
TMS RemoteDB를 사용하면 TXDataset이라는 TDataset 자손을 사용하여 데이터베이스 서버가 아닌 원격 HTTP 서버에서 SQL 작업을 수행하는 데이터베이스 응용 프로그램을 만들 수 있습니다. 따라서 기존 Delphi 클라이언트 - 서버 응용 프로그램을 소스 코드의 변경을 최소화하면서 3 계층 응용 프로그램으로 쉽게 변환 할 수 있습니다.
다음 그림은 RemoteDB 구조의 개요를 제공합니다.
RemoteDB 서버는 HTTP 요청을 수신하는 Delphi 응용 프로그램 / 서비스입니다. 클라이언트가 요청을 수행하면 RemoteDB 서버는 지정된 데이터베이스 액세스 구성 요소를 사용하여 사용중인 실제 데이터베이스 서버로 요청을 전달합니다. SQL이 수행되고 결과가 다시 클라이언트로 리턴됩니다. 구성 요소 어댑터를 사용하여 FireDac, dbExpress, dbGo (ADO)와 같은 광범위한 옵션에서 SQL 문을 수행 할 구성 요소를 선택할 수 있습니다. SQL 데이터베이스는 사용되는 구성 요소가 지원하는 모든 데이터베이스 서버가 될 수 있으며 스레드로부터 안전해야합니다. Delphi 클라이언트 애플리케이션에서 일반 SQL 조작을 수행하는 데 필요한만큼의 TXDataset 구성 요소를 사용할 수 있습니다. 모든 TXDataset 구성 요소는 Database 속성을 통해 TRemoteDBDatabase 구성 요소에 연결됩니다. RemoteDBDatabase 구성 요소는 SQL 요청을 RemoteDB 서버로 전달하고 값을 되 찾는 역할을 담당하는 구성 요소입니다. 클라이언트의 모든 작업은 투명하고 모든 TDataset 사용법과 동일합니다. SQL 문을 지정하고, 데이터 집합 (또는 ExecSQL)을 열고 TField 구성 요소, Params를 정의하고 TDatasource 구성 요소를 연결합니다. TMS RemoteDB를 사용하면 TXDataset을 사용하여 기존의 클라이언트 - 서버 방식으로 데이터베이스 서버에 직접 연결할 수 있습니다. 이를 위해 TRemoteDBDatabase 대신 TGenericDatabase를 사용할 수 있습니다. TXDataset 구성 요소는 둘 중 하나에 연결할 수 있습니다. 이를 통해 단일 응용 프로그램과 단일 데이터 집합 구성 요소를 가질 수 있지만 데이터베이스 액세스를 데이터베이스에 대한 원격 클라우드 HTTP 액세스 또는 일반 로컬 네트워크에서 데이터베이스에 직접 액세스 할 수 있습니다.
Copyright Notice
이 제품의 평가판은 테스트 및 평가 목적으로 만 제공됩니다. 평가판은 프로덕션 환경에서 실행되는 소프트웨어 나 상용 소프트웨어와 같이 테스트 또는 평가를 위해 실행되지 않는 소프트웨어에서는 사용하지 않아야합니다.
프로덕션 환경의 상용 응용 프로그램이나 응용 프로그램에서 사용하려면 단일 라이센스, 소규모 팀 라이센스 또는 사이트 라이센스를 구입해야합니다. 사이트 라이센스를 사용하면 라이센스를 보유한 회사 내의 무제한 수의 개발자가 상용 애플리케이션 개발을 위해 구성 요소를 사용하고 지원 기간 (일반적으로 라이센스 구입 후 2 년) 동안 무료 업데이트 및 우선 이메일 지원을받을 수 있습니다. 단일 개발자 라이선스를 통해 회사 내의 ONE이라는 이름의 개발자가 상용 응용 프로그램 개발을 위해 구성 요소를 사용하여 무료 업데이트 및 우선적 전자 메일 지원을받을 수 있습니다. 소규모 팀 라이선스를 통해 회사 내의 두 명의 개발자가 상용 응용 프로그램 개발을 위해 구성 요소를 사용하여 무료 업데이트 및 우선적 전자 메일 지원을받을 수 있습니다. 단일 개발자 및 소규모 팀 라이센스는 회사 내의 다른 개발자 나 다른 회사의 개발자에게 양도 할 수 없습니다. 모든 라이센스는 바이너리 컴파일 응용 프로그램에서 사용할 때 구성 요소를 로열티없이 사용할 수있게합니다.
이 구성 요소는 TMS 소프트웨어 웹 사이트를 통하는 경우를 제외하고는 다른 방법으로 배포 할 수 없습니다. 다른 배포 방법은 저자의 서면 승인을 받아야합니다.
이 제품의 온라인 등록 / 구매는 http : // www.tmssoftware.com 에서 제공됩니다.
소스 코드 및 라이센스는 전자 메일을 통해 지불 통지를 받으면 즉시 전송됩니다.
저작권 © TMS 소프트웨어. 판권 소유.
이 도움말의 어떠한 부분도 복사, 검색 시스템에 저장, 복사 또는 수정, 구매자의 개인적인 용도 이외의 용도로 사진 복사 및 녹음을 포함하여 전자적 또는 기계적 수단 또는 형태로 전송 될 수 없습니다.
Creating RemoteDB Server
다음 주제에서는 새 TMS RemoteDB 서버를 작성하는 방법과 이를 구성하는 방법에 대해 설명합니다.
Using Design-Time Components
Wizard for New RemoteDB Server
Creating the Server Manually IDBConnectionFactory Interface
IDBConnection Interface
Component Adapters
SQL Dialects
TRemoteDBModule settings
TRemoteDBServer Component
2.1 Using Design-Time Components
TRemoteDBServer를 만드는 또 다른 방법은 디자인 타임 구성 요소를 사용하는 것입니다. RAD의 컴포넌트 드롭 방식을 원한다면이 방법이 필요합니다.
1. 양식에 Dispatcher 구성 요소를 놓습니다 (예 : TSparkeHttpSysDispatcher).
2. 양식에 TRemoteDBServer 구성 요소 놓기
3. Dispatcher 속성을 통해 Dispatcher와 TRemoteDBServer 구성 요소를 연결합니다
4. 서버의 BaseUrl 등록 정보를 지정하십시오 (예 : http : // + : 2001 / tms / remotedb)
5. Dispatcher 구성 요소의 Active 속성을 true로 설정합니다.
6. 양식에 TAureliusConnection을 놓고 데이터베이스에 연결되도록 구성하십시오
(FireDac을 사용하려면 TFDConnection과 같은 추가 데이터베이스 액세스 구성 요소를 삭제
한 다음 TAureliusConnection.AdaptedConnection에 연결해야합니다).
7. TRemoteDBServer 구성 요소를 Connection 등록 정보를 통해 Aurelius 연결에 연결하십시오.
RemoteDB 서버를 시작하고 실행하기에 충분합니다!
2.2 Wizard for New RemoteDB Server
"새 TMS RemoteDB 서버"마법사를 사용하여 몇 번의 클릭만으로 새 서버를 만들 수 있습니다.
수동으로 서버를 자유롭게 만들 수도 있습니다. 마법사는 필수는 아니며 신속하게 시작하는 방법 일뿐입니다.
새 RemoteDB 서버를 작성하려면 다음을 수행하십시오.
1. 파일> 새로 만들기> 기타를 선택한 다음 "Delphi Projects"에서 "TMS Business"범주를 찾으십시오. 그런 다음 "TMS RemoteDB 서버"를 두 번 클릭하십시오.
2. 실행하려는 서버 종류를 선택하고 다음을 클릭하십시오. 사용 가능한 옵션은 VCL, FMX, 서비스 및 콘솔입니다. 여러 것을 선택할 수 있습니다 (예를 들어, 서버를 빠르게 테스트 할 수있는 VCL 프로젝트와 나중에 공통 코드를 공유하는 프로덕션 환경에 설치할 수있는 서비스 하나를 가질 수 있습니다.
3. 서버의 호스트 이름, 포트 및 경로를 선택한 후 다음을 클릭하십시오. 일반적으로 호스트 이름을 변경할 필요가 없으므로 자세한 정보는 URL 네임 스페이스 및 예약을 확인하십시오. 포트 및 경로는 서버에 도달 할 나머지 기본 URL을 형성합니다.
4. 드라이버 (데이터베이스에 액세스 할 구성 요소) 및 SQL Dialect (데이터베이스 서버 유형)를 선택한 다음 작성을 클릭하십시오.
새 서버가 만들어져 실행할 준비가되었습니다.
2.3 Creating the Server Manually
TMS RemoteDB 서버 마법사를 사용하지 않으려면 수동으로 서버를 생성 할 수 있습니다. 이 항목에서는이를 수행하는 방법에 대해 설명하고 마법사가 생성 한 코드를 이해할 수있는 참고 자료입니다.
TMS RemoteDB는 TMS Sparkle 프레임 워크를 기반으로합니다. 실제 RemoteDB 서버는 Sparkle Http Server에 추가하는 Sparkle 서버 모듈입니다.
TMS Sparkle 서버에 대한 자세한 내용은 다음 항목을 참조하십시오.
TMS Sparkle Http Server 개요
요청을 수신 대기하는 HTTP 서버 만들기
TMS 스파클 서버 모듈
RemoteDB 서버를 만들려면 RemoteDB 서버를 만들고 추가하십시오.
모듈 (RemoteDB.Server.Module 단위로 선언 된 TRemoteDBModule 객체)을 Sparkle Http 서버에 연결합니다. RemoteDB 모듈을 만들려면 서버의 기본 URL 주소와 IDBConnectionFactory 인터페이스를 전달하여 서버가 실제 SQL 데이터베이스 서버에 대한 연결을 만들 수 있도록하면됩니다. 다음은 가독성을 높이기 위해 try..finally 블록을 제거한 예입니다.
위의 코드는 기본 주소가 http://localhost:2001/tms/business/remotedb 인 새 RemoteDB 서버를 만듭니다.
이것이 클라이언트가 서버에 연결하는 데 사용해야하는 주소입니다. 서버는 dbExpress를 사용하여 데이터베이스에 연결하고 CreateNewIDBConnection 함수에서 TSQLConnection 구성 요소를 올바르게 구성해야합니다.
기존 TDataModule을 사용하는 것을 포함하여 IDBConnection 인터페이스를 만드는 다른 많은 방법이 있습니다. 자세한 내용은 다음 항목을 참조하십시오.
IDBConnectionFactory Interface
IDBConnection Interface
Component Adapte
SQL Dialects
TRemoteDBModule settings
2.4 IDBConnectionFactory Interface
IDBConnectionFactory 인터페이스는 RemoteDB 서버가 제대로 작동하는 데 필요한 기본 인터페이스입니다.
클라이언트 요청이 도착하면 RemoteDB 서버는 데이터베이스에 연결하기 위해 데이터베이스 액세스 구성 요소의 새 인스턴스를 만들어야 할 수 있습니다.
IDBConnectionFactory.CreateConnection 메소드를 호출하여 새롭게 작성된 IDBConnection 인터페이스를 검색하여 실제로 데이터베이스에 연결하는 데 사용합니다. 팩토리 인터페이스를 생성하려면 호출 될 때마다 새로운 IDBConnection 인터페이스를 생성하고 반환하는 익명 메소드를 전달하면됩니다.
TDataModule에 데이터베이스 액세스 컴포넌트가 이미 설정되어 있고 코드로 생성하지 않으려 고 할 수 있습니다.
이 경우 데이터 모듈의 새 인스턴스를 만들고 구성 요소와 관련된 IDBConnection을 반환 할 수 있습니다.
그러나 메모리 누수를 피하려면 데이터 액세스 모듈뿐만 아니라 데이터 모듈을 파괴해야합니다.
2.5 IDBConnection Interface
IDBConnection 인터페이스는 RemoteDB에있는 데이터베이스에 대한 연결을 나타냅니다. 서버의 데이터베이스에 대한 모든 연결은이 인터페이스를 사용하여 데이터베이스와 데이터를주고받습니다.
IDBConnection은 사용중인 데이터 액세스 구성 요소를 래핑하여 프레임 워크에 투명하게 만듭니다. 따라서 dbExpress, ADO, IBX 등을 사용하여 데이터베이스에 연결하더라도 관계없이 IDBConnection 인터페이스 만 있으면됩니다.
IDBConnection 인터페이스를 얻으려면 RemoteDB에서 기존 어댑터 (드라이버)를 사용하십시오. 어댑터는 기존 데이터 액세스 구성 요소 (TSQLConnection, TADOConnection 등)를 사용하고 필요한 IDBConnection 인터페이스를 제공합니다. 데이터베이스 연결을 생성하려면 사용 가능한 것을 알아야합니다.
Component Adapters
SQL Dialects
In summary:
1. 데이터베이스에 연결하는 구성 요소를 작성 및 구성 (또는 기존 구성 요소 사용)합니다.
예를 들어 dbExpress를 사용하는 경우 TSQLConnection 구성 요소를 만들어 랩핑하는 어댑터를 만들어야합니다.
2. 연결 구성 요소를 전달하는 어댑터 인스턴스화
Create 생성자를 호출 할 때 두 번째 매개 변수를 확인하십시오. IDBConnection 인터페이스가 소멸되면 래핑 된 TSQLConnection 구성 요소도 파괴된다는 것을 나타냅니다.
어댑터를 만드는 방법에 대한 자세한 내용은 구성 요소 어댑터를 참조하십시오.
2.6 Component Adapters
각 데이터 액세스 구성 요소에 대한 어댑터가 있습니다. 예를 들어 dbExpress의 경우 RemoteDB.Drivers.dbExpress 단위로 선언 된 TDBExpressConnectionAdapter가 있습니다.
모든 어댑터는 RemoteDB.Drivers 단위로 선언됩니다.
XXX 여기서 XXX은 사용중인 데이터 액세스 기술의 이름입니다. IDBConnection 인터페이스를 구현하여 자체 어댑터를 만들 수 있지만 RemoteDB에는 이미 다음과 같은 어댑터가 있습니다.
Creating the adapter
어댑터를 작성하려면 구성 요소의 인스턴스를 전달하여 어댑터를 인스턴스화하면됩니다. 아래 예제에서 dbExpress 어댑터 생성자는 TSQLConnection 구성 요소를받습니다.
어댑터는 대개 SQL Dialect를 자동으로 감지하지만 다음과 같은 오버로드 된 생성자 중 하나를 사용하여 어댑터가 특정 언어를 사용하도록 할 수 있습니다.
RemoteDB의 경우 다른 IDBConnection 인터페이스간에 SQLConnection1을 공유 할 수 없습니다.
따라서 작성한 각 IDBConnection 인터페이스에 대해 하나의 databaseaccess 구성 요소를 작성해야합니다.
Overloaded constructors
모든 어댑터에 대해 생성자의 오버로드 된 버전이 있습니다.
AConnection : 데이터베이스 액세스 구성 요소를 지정합니다.
AOwnsConnection : true이면 IDonnection 매개 변수에 지정된 구성 요소가 IDBConnection 인터페이스가 해제 될 때 파기됩니다.
false 인 경우 구성 요소는 메모리에 남아 있습니다.
ASQLDialect :이 연결을 사용할 때 사용할 SQL 언어를 정의합니다. 지정하지 않으면, Aurelius는 적응되는 구성 요소의 설정에 따라 SQL Dialect를 검색하려고 시도합니다.
OwnedComponent : IDBConnection 인터페이스가 해제 될 때 소멸 될 구성 요소를 지정합니다. 데이터 모듈을 사용할 때 유용합니다 (아래 참조).
Memory Management
어댑터의 Create 생성자에서 두 번째 부울 매개 변수를 확인하십시오. IDBConnection 인터페이스가 소멸 될 때 기본 연결 구성 요소가 파괴되는지 여부를 나타냅니다. 이 방법은 TMS Aurelius에서 빌려 왔지만 RemoteDB의 경우 IDBConnection 인터페이스가 해제 된 후에는 구성 요소를 활성 상태로 유지하면 안됩니다. 인터페이스를 사용하여 항상 구성 요소를 삭제하십시오 (매개 변수는 true 여야 함). 위의 예제 ( "어댑터 만들기")에서 MyConnection 인터페이스가 범위를 벗어나서 해제 된 후 SQLConnection1 구성 요소가 삭제됩니다. 아래의 간단한 예 :
또는 인터페이스가 해제 될 때 파손될 다른 구성 요소에 알릴 수 있습니다. 이것은 TDataModule (또는 TForm)의 인스턴스를 생성하고 TDataModule이 소유 한 적응 형 구성 요소를 사용하려는 경우에 유용합니다. 예 :
이전 코드는 데이터 모듈 TConnectionDataModule의 새 인스턴스를 만든 다음 데이터 모듈에있는 SQLConnection1 구성 요소를 적용하여 IDBConnection을 만듭니다. MyConnection이 해제되면 데이터 모듈 (MyDataModule)이 삭제되고 SQLConnection1 구성 요소도 함께 삭제됩니다. 이는 디자인 타임에 연결 설정을 설정하거나 데이터베이스 액세스 구성 요소가 이미 올바르게 구성되어있는 기존 TDataModule을 가지고있는 경우에 유용합니다. 그런 다음 위의 코드를 RemoteDB 서버에서 사용하여 데이터 모듈의 각 인스턴스에 대해 하나의 IDBConnection을 만듭니다.
dbGo (ADO) Adapter
현재 dbGo (ADO)는 Microsoft SQL Server 데이터베이스에 연결할 때만 공식적으로 지원됩니다. 다른 데이터베이스의 드라이버는 작동하지만 테스트되지 않았습니다.
2.7 SQL Dialects
어댑터를 사용하여 IDBConnection 인터페이스를 작성할 때, RemoteDB 서버가 연결하는 데이터베이스 서버의 SQL 언어를 지정할 수 있습니다.
현재 TMS Aurelius에서만 사용되며 TXDataset을 사용하고 Aurelius 클립을 사용하지 않는 경우 RemoteDB 동작에 영향을 미치지 않습니다. 그러나 RemoteDB는 미래에 일부 작업을 위해 필요할 수 있으므로 올바른 SQL Dialect를 전달하는 서버를 만드는 것이 좋습니다.
구성 요소 어댑터를 사용하여 IDBConnection 인터페이스를 작성할 때 대개 어댑터는 사용할 올바른 SQL 언어를 자동으로 검색합니다. 예를 들어, dbExpress 구성 요소를 사용하는 경우 어댑터는 DriverName 속성을 찾고 사용중인 db 서버를 지정한 다음 사용해야 할 올바른 SQL 언어 이름을 정의합니다.
일부 상황에서는 어댑터가 올바른 방언을 식별 할 수 없다는 점에 유의하십시오. 예를 들어, ODBC 또는 구성 요소가 액세스하려고하는 데이터베이스 서버를 알 수없는 다른 데이터 액세스 구성 요소를 사용하는 경우에 발생할 수 있습니다. 이 경우, 어댑터를 작성할 때 다음을 사용하여 SQL 다이얼 렉트를 지정할 수있는 오버로드 된 생성자를 사용할 수 있습니다.
다음 표에는이 경우 사용할 수있는 유효한 SQL Dialect 문자열이 나열되어 있습니다.
2.8 TRemoteDBModule settings
TRemoteDBModule 개체를 Http 서버에 추가하여 RemoteDB 서버를 만들기 전에 일부 속성을 사용하여 서버 모듈을 구성 할 수 있습니다.
이 등록 정보를 사용하여 기본 인증을 사용하여 서버에 필요한 UserName 및 Password를 지정하십시오. 기본적으로 값은 UserName : remotedb, Password : business입니다.
기본 인증이 사용되었으므로 중개 공격에 의해 사용자 이름 / 암호를 검색하지 않으려면 Http secure (Https)를 사용해야합니다. HTTP 보안을 사용하지 않으면 사용자 이름과 암호가 HTTP 요청에서 일반 텍스트로 전송됩니다.
TMS RemoteDB Server는 클라이언트가 연결되어있는 동안 데이터베이스 액세스 구성 요소를 메모리에 유지합니다. 클라이언트가 정상적으로 닫히면 모든 것을 파괴합니다. 그러나 클라이언트가 충돌하고 데이터베이스 액세스 구성 요소를 파기하기 위해 서버에 절대로 알리지 않는 상황이있을 수 있습니다. 이 경우, 서버는 인스턴스 타임 아웃에 도달 한 후, 즉 컴포넌트가 클라이언트로부터 어떠한 요청도받지 못한 시간이 경과 한 후에 결국 컴포넌트를 파괴 할 것이다.
이 값은 밀리 초 단위로 지정해야하며 기본값은 60000 (1 분)입니다.
2.9 TRemoteDBServer Component
TRemoteDBServer 구성 요소는 디자인 타임에 사용할 TRemoteDBModule 모듈을 래핑합니다.
'VCL' 카테고리의 다른 글
(i) How to use TnrComm component on delphi (0) | 2019.08.20 |
---|---|
(CODE) Playing .WAV files with MediaPlayer. (0) | 2019.07.22 |
(i) Delphi - FastReport VCL Pro 설치하기 (0) | 2019.07.02 |
(i) Delphi - KisPosAgent ActiveX(ocx) 등록하기 (0) | 2019.07.02 |
(i) Delphi - SAPI 컴포넌트 등록 방법 (0) | 2019.07.02 |
- Total
- Today
- Yesterday
- 안드로이드_관리자
- DelphiZeroMQ
- 안드로이드관리자
- Android 64
- KSNetPOSLib.ocx
- 솔로원DB복제
- Grijjy
- push server
- mysql db 복구
- WidevineID
- 키오스크
- FMX
- Unable to load project
- Delphi
- TT쿼리
- READ_PRIVILEGED_PHONE_STATE
- 비에이블
- .dproj
- solomonsystem
- delphi push message
- SOLO1ASP
- RADStudio11
- Firemonkey
- 식권발매
- 솔로몬시스템
- 비에이블스터디카페
- KSNetPOSLib
- 앱관리자
- 스터디카페
- Could not convert variant of type (Null) into type (OleStr)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |