Finalmente, tenemos el método finalize. Normalmente no se utiliza para la mayoría de los pasos, pero le da al paso la oportunidad de prepararse para la ejecución, hacer algo que solo necesita hacerse una vez. Por ejemplo, se puede utilizar para compilar una función optimizada en JavaScript para ejecutar su acción de manera más eficiente. O se puede utilizar para preparar el texto final de la consulta SQL o GraphQL solo una vez.
Los pasos están diseñados para que los implementes tú mismo, al igual que lo harías con un callback de un cargador de datos. Son un poco más poderosos que un cargador de datos y tienen estos métodos de ciclo de vida opcionales que acabamos de discutir. Pero en el caso más simple, todo lo que necesitan es un método execute que tome una lista de valores y devuelva una lista de valores de la misma manera que lo hace un callback de un cargador de datos.
También tenemos una serie de pasos preconstruidos optimizados que puedes usar para manejar preocupaciones comunes, incluyendo uno para cargar en lotes recursos remotos similar a un cargador de datos, o cada uno para mapear listas o acceso para extraer propiedades de objetos. Y estamos desarrollando más pasos optimizados para tratar preocupaciones específicas. Por ejemplo, realizar solicitudes HTTP, enviar consultas GraphQL o comunicarse con bases de datos.
En última instancia, nuestra intención es utilizar estos pasos para pasar información adicional a tu capa de lógica empresarial, sin importar qué sea, para que pueda ejecutar sus tareas de manera más eficiente. Al igual que GraphQL ayuda a eliminar la sobre y la sub-solicitud en el lado del cliente, Graphfast te ayuda a eliminarlo en el lado del servidor. Por ejemplo, si tu lógica empresarial está implementada con un ORM, o algo similar, puedes utilizar esta información adicional para realizar una carga ansiosa selectiva y reducir las consultas a la base de datos. Si tu lógica empresarial proviene de una API HTTP, puedes utilizar esta información contextual para dictar qué parámetros pasar, controlando mejor los datos que estás obteniendo, reduciendo la carga del servidor y el tráfico de red. Y dado que Graphfast está diseñado en torno al concepto de agrupación, nunca más tendrás que preocuparte por el problema de N más uno. Está resuelto para ti, de manera predeterminada, gracias a cómo funciona el sistema.
Al igual que con los resolvers de GraphQL, los plan resolvers de Graphfast están diseñados para ser cortos y solo expresar lo que es necesario para comunicarse entre GraphQL y tu lógica empresarial. Y a pesar de su agradable ergonomía, desbloquean una eficiencia y rendimiento mucho mayores que los resolvers. Graphfast ha sido construido desde cero para admitir todas las características de GraphQL moderno. Consultas, mutaciones, suscripciones, polimorfismo e incluso tecnología de vanguardia como las directivas de stream y defer. Y es compatible con esquemas de GraphQL existentes. Por lo tanto, puedes usar Graphfast para ejecutar solicitudes contra un esquema basado en resolvers existente y luego migrar a plan resolvers campo por campo. Y si ya utilizas Dataloader, migrar a usar Graphfast plan debería ser muy sencillo.
Esperamos lanzar una versión de código abierto de Graphfast bajo la licencia MIT, la misma licencia que utiliza GraphQL.js, en la primera mitad de 2023. Para recibir una notificación cuando estemos listos, ingresa tu dirección de correo electrónico en graphfast.org. Si deseas ayudarme a seguir invirtiendo tiempo en proyectos como este, considera patrocinarme en GitHub sponsors. Incluso podrías obtener acceso anticipado. No dudes en comunicarte conmigo si tienes alguna pregunta. Gracias por tu tiempo y espero que estés tan emocionado acerca del futuro de GraphQL como yo. Gracias. Microsoft Mechanics www.microsoft.com.com
Comments