Docs Menu
Docs Home
/ /

Async C Driver: Public Preview

We are excited to share the release of a new prototype that could reshape how C developers interact with MongoDB: the amongoc library. This experimental driver leverages the power of asynchronous programming to offer an efficient, non-blocking interface for MongoDB operations. Although still in public preview and not yet ready for production, your feedback will play a crucial role in shaping the future direction of this project.

Importante

Características de vista previa

Preview features have technical and security limitations, so we do not recommend their use in production environments. To learn more about preview feature considerations, see Preview Features.

amongoc, short for "asynchronous MongoDB C driver," is designed for developers who need a performant, asynchronous client library for MongoDB. It implements a selected subset of MongoDB driver APIs to provide a sneak peek into what a C-based asynchronous client might look like. By evaluating this prototype, developers can help us gather critical insights that could influence the development of a production-ready solution in the near future.

La motivación para desarrollar amongoc radica en la optimización del rendimiento y en proporcionar alta concurrencia. La programación asíncrona desacopla el inicio de una tarea de su continuación, solucionando las ineficiencias de las operaciones síncronas, en particular las de E/S, que son inherentemente lentas y pueden bloquear otros procesos. La programación asíncrona permite que las aplicaciones mantengan su capacidad de respuesta mientras esperan a que se completen las operaciones de E/S, lo que la hace ideal para casos de uso de alto rendimiento con uso intensivoamongoc de la red. también facilitará la integración de MongoDB en frameworks asíncronos como Drogon. Cabe destacar que también ha sido la característica más solicitada por los usuarios para el controlador de C.

Para amongoc explorar, visita el repositorio de GitHub y accede a nuestra completa documentación. Nuestros recursos incluyen:

El siguiente ejemplo es una aplicación que inicializa un bucle de eventos asincrónico e intenta establecer una conexión con un servidor MongoDB local utilizando la biblioteca amongoc:

#include <amongoc/amongoc.h> // Make all APIs visible
#include <stdio.h>
#include <stdlib.h>
amongoc_box on_connect(amongoc_box userdata, amongoc_status *status, amongoc_box result);
int main(void)
{
amongoc_loop loop;
amongoc_status status = amongoc_default_loop_init(&loop);
amongoc_if_error(status, msg)
{
fprintf(stderr, "Failed to prepare the event loop: %s\n", msg);
return 2;
}
// Initiate a connection
amongoc_emitter em = amongoc_client_new(&loop, "mongodb://localhost:27017");
// Set the continuation
em = amongoc_then(em, &on_connect);
// Run the program
amongoc_detach_start(em);
amongoc_default_loop_run(&loop);
// Clean up
amongoc_default_loop_destroy(&loop);
return 0;
}
amongoc_box on_connect(amongoc_box userdata, amongoc_status *status, amongoc_box result)
{
// We aren't using the userdata for this example.
(void)userdata;
// Check for an error
amongoc_if_error(*status, msg)
{
fprintf(stderr, "Error while connecting to server: %s\n", msg);
}
else
{
printf("Successfully connected!\n");
amongoc_client *client;
amongoc_box_take(client, result);
// `client` now stores a valid client. We don't do anything else, so just delete it:
amongoc_client_delete(client);
}
amongoc_box_destroy(result);
return amongoc_nil;
}

Esta versión de previa pública se centra en recopilar los comentarios de la comunidad para informar las decisiones arquitectónicas de una versión lista para producción de amongoc. Te invitamos a compartir tus comentarios y sugerencias en debates y incidencias de GitHub. Nos interesan especialmente tus opiniones sobre la interfaz, los requisitos de compilación y de ejecución. Nuestro objetivo es recabar la máxima cantidad de aportaciones de la comunidad para alinearlas con las necesidades y expectativas de la comunidad de usuarios. Tus comentarios son invaluables, y estamos impacientes por conocer tu opinión y ver lo que crearás con amongoc.

Volver

Overview

En esta página