2011-10-15 2 views
1

델파이 (XE2)의 dabatase 서버에 연결하는 방법에는 소켓, datasnap, webservices, 원격 데이터 모듈 (¿?), dbExpress, 및 UniDAC와 같은 다른 제 3자를 지원합니다. 나는 일반적으로 UniDAC을 사용하지만, 언제 어떻게 적절하게 사용하는지 알고 싶습니다. 분명히 DataSnap은 Delphi의 주력 제품입니다. 나는 그 질문들에 대답하는 유용한 튜토리얼을 발견하지 못했다. 따라서 보안, 유연성 및 확장 성을 고려한 클라이언트 응용 프로그램을 개발하는 데 권장되는 옵션 인 Win32 응용 프로그램의 경우?델파이 XE2로 데이터베이스 프로그래밍에 관한 질문

데이터베이스 액세스가 변경되면 클라이언트 Win32 응용 프로그램과 관련하여 투명하게 수행 할 수있는 방법이 있습니까? 즉, 100 개의 클라이언트 응용 프로그램이 분산되어 있고 데이터베이스 액세스 암호를 변경하려는 경우 모든 클라이언트 응용 프로그램을 업데이트해야하는 것이 문제입니다.

클라이언트 응용 프로그램 용 데이터베이스에 단독으로 연결하는 것이 좋습니까?

DBExpress (Delphi XE2와 번들 된)와 AnyDAC을 테스트하여 원격 MySQL 데이터베이스에 연결하려고했지만 VendorLibs에 문제가 있습니다. 이 테스트를 원하는 모든 RDBMS를 설치하지 않고도이를 해결할 수있는 편리한 방법이 있습니까?

DBExpress는 무료입니까, 아니면 더 많은 기능을 지불해야합니까?

누구나 DataSnap, 미들웨어 응용 프로그램 등에 대해 배우려면 아주 좋은 책을 추천 할 수 있습니까?

미리 감사드립니다.

+0

데이터베이스 암호를 클라이언트에 저장한다는 말입니까? : -O 보안상의 관점에서 볼 때 큰 위험이 있습니다. –

답변

1

여러 개의 분산 클라이언트가있는 경우 서버 측에서 하나의 영구 데이터 연결이 실행되는 다중 계층 솔루션 (예 : DataSnap 또는 DataAbstract)을 사용하고 각 클라이언트는 해당 서버에 연결하기 만하면됩니다 데이터를 요청하기위한 응용 프로그램입니다.

DataSnap은 Socketed, REST 등 다양한 클라이언트/서버 연결 솔루션을 제공하므로 시스템에 가장 적합한 것이 무엇인지 결정하는 것은 사용자의 몫입니다.

DataAbstract는 시장에서 가장 널리 사용되는 다중 계층 데이터 응용 프로그램 솔루션 중 하나 인 것으로 보이며 많은 개발자가 여러 가지 이유로 보안에 대해 맹세합니다 (보안은 그 중 하나이며 사용 용이성이 있음). 다른 것).

나는 항상 클라이언트 응용 프로그램이 데이터베이스에 직접 연결해야하는 경우 잘못했음을 명심했다.

DataSnap에 대한 자세한 내용을 보려면 최신 CodeRage 이벤트에서 흥미로운 세션이있었습니다. 해당 세션을 무료로 다운로드하거나 볼 수 있습니다 (Embarcadero's CodeCentral subsite).

도서의 경우 항상 Marco Cantú의 Delphi Handbooks (XE 서적, 특히 XE2 용 DataSnap과 관련하여 주로 적용되는 XE 서적)가 최선책입니다.

DataSnap은 Delphi의 Enterprise, Ultimate 및 Architect 에디션과 함께 제공됩니다 ... Pro 또는 Starter에서는 사용할 수 없습니다!

여전히 자신의 서버 계층에서 ODBC를 사용하여 ODBC 데이터베이스 (MySQL, MSSQL, Oracle ... 심지어 "과거로부터의 폭발"을 즐기고 싶다면 MS Access 포함)에 연결할 수 있습니다. 그런 다음 클라이언트 애플리케이션을 서버 계층에 연결하기 위해 원하는 네트워킹 소켓 솔루션 (예 : Delphi와 함께 제공되는 Indy [모든 에디션])을 사용하십시오! TADOConnection, TADOQuery 등을보십시오.

희망이 정보가 유용합니다!

+0

매우 고마워요. –

+0

그건 그렇고, 당신이 사용하는 아바타는 ... 나는 그것을 @RRUZ에 만들었습니다;) – LaKraven

0

실제 응용 프로그램 요구 사항에 따라 2 계층 (데이터베이스 및 팻 클라이언트) 또는 n 계층 (데이터베이스, 응용 프로그램 서버, 씬 클라이언트) 솔루션 중에서 선택해야합니다. 2 계층 솔루션은 개발하기가 더 쉽고, n 계층은 더 복잡합니다.

dbExpress, UniDAC, ecc. db 액세스 라이브러리입니다. Datasnap, 웹 서비스 등은 도 원격 데이터에 액세스하는 데 사용되는 RPC (원격 프로 시저 호출) 프레임 워크입니다 (서버 측에서 db 액세스 라이브러리 사용). 소켓은 매우 낮은 수준의 통신 장치입니다.

따라서 데이터베이스 액세스 레이어를 구성하려면 이러한 구성 요소의 스택을 사용해야합니다. 예를 들어 dbExpress를 사용하여 중간 계층으로 DB 및 Datasnap에 액세스 할 수 있습니다.

보안상의 관점에서 Datasnap은 매우 안전하지만 사용 된 알고리즘과 암호/인증서 관리로 인해 DCOM 구현이 어렵습니다. 데이터베이스 암호를 클라이언트에 저장하는 경우 큰 보안 문제가 발생합니다. 운영 체제 인증과 같은 방법으로 사용자 계정 보안을 사용하여 데이터베이스에 연결할 수 있습니다. 데이터베이스에 대한 단일 "연결"을 사용하면 데이터베이스 액세스 제어가 해당 연결 사용자의 사용 권한으로 제한되기 때문에 일부 또는 많은 보안을 잃을 수도 있습니다. 또한 감사가 손실 될 수 있습니다.

새 레이어를 도입 할 때 확장 성을 설계하고 해당 레이어에 잘 코딩해야합니다. 데이터베이스 서버는 확장 가능하도록 설계되고 코딩되어 있으며, 나쁜 중간 계층은 병목 현상이 될 수 있습니다.

MySQL은 일반적으로 당신이 연결하는 데 사용하는 그의 lib에 대해 까다롭기 때문에 다른 데이터베이스는 적습니다.

관련 문제