Возвращение данных пользователю (Good API Design) - PullRequest
0 голосов
/ 16 мая 2009

Итак, сейчас я разработал приложение, для которого я пытаюсь написать API. Приложение в идеале будет возвращать строки обратно пользователю. API не может «возвращать» данные в обычном программном смысле, поскольку из приложения может отправляться неизвестное количество строк. В системах Unix плохая идея передавать эти данные пользователю через именованный канал? У меня были проблемы с поиском какой-либо информации о деталях создания API. Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 16 мая 2009

API не может «возвращать» данные в обычном программном смысле, поскольку из приложения может отправляться неизвестное количество строк. В системах Unix плохая идея передавать эти данные пользователю через именованный канал?

В Unix программа обычно выводит свои данные, столько данных, сколько ей нужно, может быть, много данных, записывая данные в «стандартный вывод». Пользователь может направить эти выходные данные на экран или в файл или передать их как входные данные для другой программы (которая может, например, фильтровать данные).

У меня возникли проблемы с поиском какой-либо информации о деталях создания API.

http://www.faqs.org/docs/artu/ довольно известен, fwiw: http://www.faqs.org/docs/artu/ch07s02.html#plumbing говорит кое-что (с некоторым примером) об использовании каналов для вывода данных из одной программы в другую программу.

0 голосов
/ 16 мая 2009

Зависит от приложения. Если это недолговечный инструмент командной строки, то модель read-from-stdin / write-to-stdout работает отлично. grep / sed / awk / perl позаботится о пост-обработке данных. Если это демон, то пятно или сокет может быть хорошей идеей, хотя вам придется подумать о протоколе клиент-сервер в этом потоке. Если вы сделаете еще один шаг вперед, предоставив библиотеку, которая знает этот протокол и дает разработчику приложения какой-то непротиворечивый набор функций для взаимодействия с вашим приложением, это настоящий API. Это классический клиент-сервер, так работает, например, большинство баз данных.

...