Delphi lleva a cabo mediante un desarrollo de la aplicación de tres niveles DataSnap

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

Publicado 30 artículos originales · ganado elogios 2 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/khzide/article/details/86567726
Recomendado
Clasificación