Самый простой RPC клиентский метод в PHP - PullRequest
4 голосов
/ 22 апреля 2010

Меня попросили помочь компании друга открыть веб-приложение. У меня очень ограниченное время, и я неохотно принял запрос, при одном условии. Поскольку большая часть логики продолжается в бэкэнде, я предложил закончить весь бэкэнд only , что позволит разработчику внешнего интерфейса просто взаимодействовать с моим бэкэндом.

Я планирую сделать бэкэнд в Java EE или Python (с Pylons). На данный момент это не имеет значения. Я планирую полностью подготовить и протестировать свой бэкэнд, чтобы после завершения моей работы вряд ли понадобился мой вклад.

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

Я мог бы реализовать бэкэнд как доступный через веб-сервис, такой как XML-RPC или SOAP. Возможен даже RESTful API.

Тем не менее, моя главная цель - сделать что-то, с чем может легко взаимодействовать полный PHP-программист, не путаясь. Предпочтительно я даже не хочу разговаривать с ним, потому что у меня, как правило, очень напряженный график, и я не хочу делать «звонки в службу поддержки». Какой подход я должен выбрать? Буду рад любым предложениям и предложениям!

Ответы [ 3 ]

5 голосов
/ 22 апреля 2010

Я бы лично выбрал REST API, вероятно, с ответом JSON. SOAP и XML могут быть немного сложными для простых сервисов, и даже самый начинающий веб-разработчик понимает концепцию доступа к базовому URL-адресу, даже если они не используют общую концепцию REST. Существует множество способов работы с URL-адресами в PHP, поэтому я уверен, что они смогут что-то придумать, даже если это будет хакерская работа вместо хорошего клиентского пакета.

Я бы также, вероятно, выбрал кодировку и декодирование JSON, поскольку это, как правило, довольно просто, тогда как синтаксический анализ XML может быть немного сложнее.

Я бы также написал хотя бы некоторую базовую документацию по сервису, независимо от того, какие форматы вы выберете. В противном случае вы не сможете избежать звонков в службу поддержки. Ваш целевой потребитель должен иметь ссылку на доступные ему удаленные действия или метод для обнаружения этих действий. Вероятно, вам понадобится 10 минут, чтобы создать пример кода, когда он будет готов, и эти 10 минут могут сэкономить вам много писем.

2 голосов
/ 22 апреля 2010

Был там, сделал это.

Бэкэнд в Django, интерфейс в PHP от подрядчика «мы делаем страницы».я создал REST-подобный API с использованием JSON и предоставил им пару пятистрочных PHP-функций для доступа к моему сервису в качестве хранилища значений ключей.

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

2 голосов
/ 22 апреля 2010

Определенно перейдите к реализации, подобной отдыху, и верните вывод в формате строки запроса.

Просто помните, что php превратит массив как переменные в массив на стороне php.

Возьмите строку запроса для ваших параметров

Входной сигнал: p1=v1&p2=v2....

Выход: output1=var1&output[0]=var2;output[2]=var3

Доступ к этому в php тогда прост:

<?
   $request['myparam1'] = param; 
   ...
   $webService ="http://path.to.service?".http_build_query($request);

   parse_str(file_get_contents($webService),$response);

   // response is now an array with you response parameters in it
   // $response['responseParam1'], reponse['responseParam1'] etc
 ?>
...