@therhino

Как создаётся внешнее API программы?

Суть такая: например я создал какую-нибудь программу на C (пусть будет база данных), запустил и она себе работает.
  1. Как создать для неё API (читай драйвер)?
  2. Что будет использоваться для взаимодействия драйвера и работающей базы (может сокеты, может ещё что)?
  3. Могу ли я из драйвера вызывать какую-то функцию, определённую в коде программы базы данных? Или мне нужно в сокет слать к примеру такой текст "write_to_db('people', {name: 'John'})" и уже с другой стороны парсить этот псевдокод и выполнять нужный код?
#include <stdio.h>
#include "mongo.h"

int main() {
  mongo conn[1];
  status = mongo_connect( conn, "127.0.0.1", 27017 );

  if( status != MONGO_OK ) {
      switch ( conn->err ) {
        case MONGO_CONN_SUCCESS:    printf( "connection succeeded\n" ); break;
        case MONGO_CONN_BAD_ARG:    printf( "bad arguments\n" ); return 1;
        case MONGO_CONN_NO_SOCKET:  printf( "no socket\n" ); return 1;
        case MONGO_CONN_FAIL:       printf( "connection failed\n" ); return 1;
        case MONGO_CONN_NOT_MASTER: printf( "not master\n" ); return 1;
      }
  }

  mongo_destroy( conn );

  return 0;
}


К примеру, как я могу создать API наподобие mongo.h?
  • Вопрос задан
  • 2672 просмотра
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
> 1 Как создать для неё API (читай драйвер)?
Изначальная постановка вопроса не верна. API не есть драйвер. прям вообще ни разу.

> 2 Что будет использоваться для взаимодействия драйвера и работающей базы (может сокеты, может ещё что)?
А что захочешь, то и будет использоваться. Хоть сообщения, хоть сокеты, хоть файл на диске. Тыжпрограммист, кто тебе запретит.

> Могу ли я из драйвера вызывать какую-то функцию
Можешь вызывать функцию (экспорты никто не отменял), можешь посылать сообщение, можешь посылать JSON строку, можешь сразу SQL запрос сформированный посылать, кто ж запретит.

Ты же на сишечке пишешь, так что никто тебе не указ, реализовать можно практически что угодно. Как пользователю удобнее будет общаться с БД, такой API и создавай.
Ответ написан
@asd111
Судя по коду mongo работает через TCP сокет.
В Unix бывают следующие виды IPC(inter process communications - межпроцессорное взаимодействие)
Статья в русской википедии
1.Pipe
2.FIFO, or named pipe
3.Socket and Unix Domain Socket
4.Message Queue
5.Signal
6.Semaphore
7.Shared memory
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы