Docs Menu

비동기 C 드라이버: 공개 미리 보기

C 개발자가 MongoDB 와 상호 작용 방식을 재구성할 수 있는 새로운 프로토타입인 amongoc 라이브러리의 출시하다 주식 되어 기쁩니다. 이 실험적 운전자 비동기 프로그래밍의 강력한 기능을 활용하여 MongoDB 작업을 위한 효율적인 비차단 인터페이스를 제공합니다. 아직 공개 미리 보기 단계이고 아직 프로덕션 준비가 되지 않았지만, 여러분의 피드백 이 프로젝트 의 향후 방향을 결정하는 데 중요한 역할 합니다.

amongoc'비동기 MongoDB C 운전자 '의 약자이며, MongoDB 위한 고성능 비동기 클라이언트 라이브러리가 필요한 개발자를 위해 설계되었습니다. MongoDB 운전자 API의 선택된 하위 집합을 구현하여 C 기반 비동기 클라이언트 모습을 미리 살펴볼 수 있습니다. 개발자는 이 프로토타입을 평가함으로써 가까운 시일 내에 프로덕션 환경에서 바로 사용할 수 있는 솔루션 개발에 영향을 줄 수 있는 중요한 인사이트를 수집하는 데 도움을 줄 수 있습니다.

amongoc 빌드의 동기는 성능 최적화와 높은 동시성 제공에 있습니다. 비동기 프로그래밍은 작업 시작과 연속을 분리하여 본질적으로 느리고 다른 프로세스를 차단 수 있는 동기 작업, 특히 I/O의 비효율성을 해결합니다. 비동기 프로그래밍을 사용하면 애플리케이션이 I/O 작업이 완료될 때까지 기다리는 동안 응답성을 유지할 수 있으므로amongoc 고성능의 네트워크 집약적인 사용 사례에 이상적입니다. 는 또한 MongoDB 를 Drogon과 같은 비동기 프레임워크에 통합하는 것을 용이하게 합니다. 특히 사용자가 가장 많이 요청한 C 운전자 기능 이기도 합니다.

amongoc 살펴보려면 GitHub 리포지토리 를 방문하여 포괄적인 설명서 액세스. 당사의 리소스는 다음과 같습니다:

다음 예시 비동기 이벤트 루프 초기화하고 amongoc 라이브러리를 사용하여 로컬 MongoDB 서버 에 대한 연결을 설정하려고 시도하는 애플리케이션 입니다.

#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;
}

이 공개 미리 보기 출시하다 의 프로덕션용 버전에 amongoc 대한 아키텍처 결정을 알리기 위해 사용자 피드백 수집하는 데 중점을 두고 있습니다. GitHub 토론 및 문제 에서 생각과 제안 사항을 주식 있도록 초대합니다. 특히 인터페이스, 빌드 및 런타임 요구 사항에 대한 귀하의 의견에 관심이 있습니다. 우리의 목표는 사용자 커뮤니티의 요구와 기대에 부합하기 위해 가능한 한 많은 사용자 의견을 수집하는 것입니다. 귀하의 피드백 매우 중요하며,(으)로 어떤 결과물을 만들어낼지 amongoc 기대합니다!