Friday, October 24, 2008

За и Против URI-based interface

Под такими интерфейсами имеется виду интерфейс связи между слоями в приложения(или системы) - когда весь обмен происходит через запросы:
  • get(URI) - получения информации с единственным параметром URI - строкой описывающей, что нужно получить или что нужно выполнить;
  • set(URI,Object) - сохранения с параметром URI описывающей какой ресурс нужно изменить и значение на которое нужно изменить.
В общем случае объектом при передаче между слоями может быть бинарное представление объекта, сериализованый(serialized object) объект в xml или обычная строка.

Пример: URI - /p1=v1/p2=v2 ~ select * from all where p1=v1 and p2=v2;

Достоинства:
  • унификация запросов между слоями и http запросами на сервер;
  • гибкость логики запроса;
  • возможность расширения - добавления новых параметров при сохранении обработки старых вариантов не влияет на работу системы и прозрачно для приложения;
  • удобное представление запроса для случая хранения данных в дереве(подобие xpath);
  • возможность кеширования всех приходящих запросов через один механизм;
  • возможность указания разрешений через регулярные выражения для строки.

Недостатки:
  • необходимость дополнительного разбора и формирования запросов для преобразования в форму удобную для выполнения;
  • сложность(иногда невозможность) передачи в качестве параметра в запросе величины без достаточно простого строкового отображения.

No comments: