¿Alguien sabe cómo ahorrar?
Tipos de datos en thrift
La siguiente es la redefinición de tipos en thrift, échale un vistazo:
bool booleano, un byte
byte Byte con signo
i16 Entero de 16 bits con signo
i32 Entero de 32 bits con signo
i64 Entero de 64 bits con signo
doble ?Valor de coma flotante de 64 bits
cadena ?Cadena
binario ?Blob (matriz de bytes)
maplt t1, t2gt; escriba a otro
listlt; t1gt; Lista ordenada de un tipo
setlt; conjunto de elementos únicos de un tipo
A través de la descripción anterior, Se puede ver que algunos tipos en ahorro son comunes a varios idiomas, y algunas cosas que solo aparecen en idiomas individuales, como diccionario, hash, etc., no aparecen en ahorro. Esto es normal para un lenguaje común. no debe incluir esas cosas especiales y puede establecer sus propios estándares para esas cosas especiales y adaptarse a ellas, como maplt; t1, t2gt en thrift; en Tipos de CSharp, estos se pueden verificar después de generar el idioma de destino.
No hay clases en ahorro, pero hay estructuras.
Creo que esto debería ser un cuidado para el lenguaje C. El concepto de clase no aparece en ahorro, pero sí. una estructura de tipo valor. De hecho, siempre hemos tenido una comprensión sesgada de las estructuras. Debido a que hay clases en algunos lenguajes de alto nivel, no debería haber estructuras. También decimos que las estructuras nunca han aparecido en nuestro propio código. Aquí, necesito decirle a este compañero de clase que la razón por la que no hay estructura en su código es porque no comprende este tipo de datos y no profundiza en él para objetos con negocios simples o sin negocios, para encapsularlos. atributos, la finalización se puede lograr usando una estructura. Si miras el lenguaje C, sabrás lo importante que es la estructura, jaja.
Enumeración:
Operación enumeración {
?ADD = 1,
?SUBTRACT = 2,
?MULTIPLY = 3,
?DIVIDE = 4
}
Estructura (estructura)
struct DataSync{
1: bool IsSync, /*Si sincronizar*/
2: cadena FilePath, /*Ruta del archivo*/
3: i64 CurrentSeek, /*Aguja actual */
}
Excepción
excepción InvalidOperation {
?1: i32 qué,
?2 : cadena por qué
}
Servicio, nuestra interfaz está definida en el servicio. La interfaz es la base para la comunicación entre el cliente y el servidor. El cliente utiliza su propia interfaz de idioma para comunicarse. El servidor. Las plataformas y los entornos de desarrollo del cliente y el servidor pueden ser completamente diferentes. La comunicación se puede lograr siempre que se conozcan la IP y el puerto del servidor. ¡Este es el encanto del ahorro en todos los idiomas!
servicio FileTransport{
bool Upload(1: DataSegment dataSegment), /* El cliente pasa en una matriz de bytes, el servidor devuelve si la carga se realizó correctamente, desPath indica la ruta a se almacenará después de la carga* /
Descarga binaria (1: cadena fileUrl), /*El cliente pasa una URL y el servidor devuelve el archivo al que apunta la URL en forma de matriz de bytes* /
DataSync IsSync(1: string fileName), /*Detectar si el archivo debe cargarse de forma sincrónica*/
bool UpdateDataSync(1: DataSync dataSync)/*Actualizar los datos estado de sincronización de la base de datos, la clave principal es el nombre completo del archivo */
}
Cuando ejecutamos el comando de ahorro para generar el código de destino, se generará en la carpeta gen especificada, por ejemplo, el código para generar csharp estará en el mismo directorio que thrift. Cree una carpeta gen-csharp y luego la generación de código generará múltiples archivos en unidades de estructuras, enumeraciones y servicios. Como se muestra en la imagen: