Delphi utiliza DataSnap el desarrollo de aplicaciones de tres capas, hemos acumulado varias técnicas, que se resumen de la siguiente manera:
1, (recomendado!) Uso TDatasetProvider en DataSnap servidor, el cliente utiliza TDSProviderConnection
1) DataSnap Server, puede utilizar TCP / IP, HTTP comunicación. TDatasetProvider capaz de proporcionar "datos de meta-datos y de negocios."
Recomendado: el uso (tecnología FireDac) TFDConnection conectarse a la base de datos, para pasar TFDQuery / TFDTable la TDataSetProvider proporcionan conjuntos de datos; (Dharana nueva versión de la base de datos!)
Nota: también se puede emplear (tecnología DBX) TSQLConnect, TSQLDataSet / TSQLQuery / TSQLTable / TSQLStoredProc, TDataSetProvider para proporcionar un conjunto de datos;
2) el uso de un cliente (dbexpress es la tecnología DBX ) + TDSProviderConnection TSQLConnection == "el TClientDataSet ==" el TDataSource
TSQLConnection establece DataSnapCONNECTION, conduciendo el DataSnap;
TDSProviderConnection proporcionado: Ejemplo TSQLConnection (conducir DataSnap); conjunto ServerClassName "nombre de clase" el servidor DataSnap que proporciona el servicio;
TClientDataSet establece: TDSProviderConnection ServidorRemoto al ejemplo, ProviderName es un correspondiente lado de servicio "clase" ejemplo TDatasetProvider.
. Consejo 1: (. 1 la FRM ) puede obligar a la TClientDataSet TStringGrid, o (2 el VCL ) conectado TDBGrid aumentando TDataSource.
Consejo 2: Cambiar el cliente TClientDataSet, y cómo devolver el servidor y los conjuntos de datos de consulta del cliente, clasificación, filtrado,
La referencia propuesto " el desarrollo de bases de datos dbexpress Delphi2006 eficientes libro"; "Delphi 10.1 Manual de Desarrollo de DataSnap Berlín," primer capítulo también introduce esta tecnología.
3) si un T DataSetProvider, sólo puede proporcionar una un conjunto de datos, para ser establecido si el maestro Maestro / Detalle del conjunto de datos, requiere la siguiente manera:
TFDQuery establece mediante dos conjuntos de datos, un maestro principal, el otro conjunto de datos principal Masterdata propiedad.
! 4) (bueno, para referencia) del servidor puede ser una sola: TFDConnection + + TFDQuery la TDataSetProvider proporcionar datos al cliente,
Pero la propiedad TDatasetProvider opciones para el poAllowCommandText es verdadera , lo que permite TFDQuery no logra su valor SQL,
Recibe SQL directamente desde el cliente, y el cliente devuelve el terminal de recopilación de datos de la consulta.
TClientDataSet cliente por CommandText propiedad comandos de configuración de SQL, parámetros y valores de parámetros obtenidos de los Parámetros, envía al servidor SQL, y recibe datos de retorno.
Esto permite que un servidor TDatasetProvider, sirviendo a varios clientes. Por supuesto, una sesión de una sola vez se ha completado la sesión de adquisición más apropiado, o datos, la conexión se desconecta SQLConn.
Referencia " la DataSnap tres ClientDataSet principal de la mesa de operaciones " de la tabla de ajustes para conseguir el maestro! ! !
2, en el uso del servidor TFDQuery DataSnap, o un cliente usando TSQLConnection TDSRestConnection, intercambian datos TStream
Referencia: http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/DataSnap.FireDAC_DBX_Sample ( DataSnap Estados FireDAC )
1) DataSnap Server, puede utilizar TCP / IP, HTTP comunicación.
base de datos de conexión TFDConnection, el conjunto de datos proporcionado por TFDQuery (proporcionado + TFDSchemaAdapter), == "TDataSource (primario)
Por TFDQuery (proporcionado + TFDSchemaAdapter, proporcionado MasterSource, MasterFields como "fuente de datos primaria / ID") Propuestas de conjuntos de datos,
== "TDataSource (de)
Publicación de datos de transmisión clase de servicio (clase) conjuntos método para tipo TStream manera, por los datos de transmisión TFDSchemaAdapter, recibir actualizaciones, y se escribe en la base de datos.
funcionar TServerMethods.StreamGet: TStream;
el inicio
del Resultado: = TMemoryStream.Create;
el intento
qCustomers.Close; // los datos de configuración master
qCustomers.Open;
qOrders.Close; // conjunto de datos de
qOrders.Open;
FDSchemaAdapter .SaveToStream (el resultado, TFDStorageFormat.sfBinary);
Result.Position: 0 =;
el fin
//
que;
más;
Y el método de recepción:
función TServerMethods.StreamPost (Astream: de TStream): String;
var
LMemStream: TMemoryStream;
LErrors: Integer;
el inicio
del Resultado: = '';
// obtener el flujo de datos de un cliente retreive corriente del cliente Todo el
LMemStream: = CopyStream (Astream); / / reproducción de flujos de datos
LMemStream.Position: = 0;
el intento
FDSchemaAdapter .LoadFromStream (LMemStream, TFDStorageFormat.sfBinary);
LErrors: = FDSchemaAdapter.ApplyUpdates
Finalmente
LMemStream.Free;
si LErrors> 0 entonces
resultado: = Format (sErrorsOnApplyUpdates, [GenerateErrorMessage]);
final;
final;
2) El cliente puede utilizar dos conexiones: 1) TSQLConnection (modo DBX); 2) TDSRestConnection (modo de reposo)
Pueden ser generados por tanto (a la derecha del punto) de clase de servidor proxy (generar clases DataSnap de clientes), llame al método de la clase proxy, el servidor adquiere flujo de datos.
TFDTableAdapter (+ TFDSchemaAdapter misma, juego DatSTableName al lado del servicio de nombre TFDQuery ) == "TMemTable ==" TDataSource (principal - Cliente)
TFDTableAdapter (+ misma TFDSchemaAdapter) DatSTableName conjunto para el lado del servicio de nombre TFDQuery ) == "TMemTable ==" TDataSource (de - órdenes)
Cómo obtener los datos, el ejemplo de referencia! (Se omite ...) RED vinculante.
LMemStream: = TServerMethodsClient (ServerConnection) .StreamGet clase de proxy a través del conector de montaje, el servidor adquiere datos de flujo de TStream;
FDSchemaAdapter .LoadFromStream (LMemStream, TFDStorageFormat.sfBinary) cargar el conjunto de datos de la corriente.
3, (teniendo en cuenta!) Servidor de aplicaciones Resto DataSnap, la comunicación HTTP, TFDJsonDataSets intercambio de datos con formato de TFDJsonDelta
Ejemplos Capítulo 9 (9.3) 3 Uso TFDJsonDataSets referencia de funciones "Delphi 10.1 Berlín DataSnap Desarrollo Manual"
4, (recomendado) usando el servicio de conexión de cliente reparador descanso, sin limitarse a (Delphi genera), atención: aplicaciones TRESTResponseDataSetAdapter.
"Base de datos de Delphi 10.1 Berlín FireDAC Desarrollo Manual" capítulo P109 3-1-2 describe en primer lugar la aplicación, el procesamiento de los datos utilizando TFDMemTable Resto obtenido.
Uso TRESTResponseDataSetAdapter la TRESTResponse datos para TFDMemTable, contiene información de metadatos.
Ejemplo oficial: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/REST_Client_Library