КАРТА САЙТА
Sibnet.ru
Sibnet.ru

Sibnet.ru — это информационно-развлекательный интернет-проект, ориентированный на широкий круг Сибирского региона.
По данным Rambler Top100, Sibnet.ru является самым популярным порталом в Сибири.

Контакты:
АО "Ринет"
ОГРН 1025402475856
г. Новосибирск, ул. Якушева, д. 37, 3 этаж
отдел рекламы:
(383) 347-10-50, 347-06-78, 347-22-11, 347-03-97

Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль




  Doppelganger

 личные данные


друзья:

21.11.2008
 
Doppelganger
10:48 Вариант принципиальной схемы реализации API на РНР
Запись открыта: всем
API определяется как посредник между приложением и отдельно разработанным функционалом. Само по себе ядро API обладает только служебными функциями. Приложение вызывает из ядра методы, ориентируясь лишь на открытые интерфейсы этих методов. Для выбора конкретной реализации интерфейса функциональности используется класс-фабрика, выполняющаяся в контексте ядра API, которое по сути является классом-адаптером.

[интерфейс] -> [реализация] -> [фабрика] -> [ядро] -> [приложение]

В соответстие с данной схемой:
=======================

1) Описываются интерфейсы разных областей функциональности - хранилища, шаблоны и пр.

2) Создаётся класс-реализация (или множество различных классов-реализаций) каждого интерфейса.

3) Создаются классы-фабрики для каждого интерфейса: задача фабрики - выбрать конкретный класс-реализацию.

4) Создаётся каркас класса-ядра, в котором регистрируются все фабрики. Ядро принимает от приложения параметры инстанцирования реализаций, данный параметры передаются в фабрики, фарики инстанцируют реализации и возвращяют реализации в ядро, где те хранятся в виде свойств.

5) Работа приложения с функционалом осуществляется через свойства ядра, которые являтся классами-реализациями, инстанцированными с необходимыми параметрами; формат вызовов полностью сответствует интерфейсам.

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

При реализации данной модели API на PHP нужно учесть 2 важных момента:
=======================================================

1) Т.к., РНР является языком с динамической типизацией, необходимо создание и введение в ядро класса-результата, иначе в некоторых случаях будет крайне сложно отличить нулевой результат (например, корректный возврат false) от крахового завершения исполнения метода.

2) Само ядро API лучше всего раелизовать синглтоном: понятно, что на одном вызове может работать только 1 экземпляр ядра.




Страницы: 1

code-warrior
21.11.2008, 10:56
К сожалению, на high load приложениях эти правила не используются. Также, как не работают законы классической механики на околосветовых скоростях.


dima75
21.11.2008, 12:19
привел бы хотя бы пример


ktak
21.11.2008, 17:43
Согласен с code-warrior. Для простых WEB-приложений эта схема слишком слложная, а для high-load - тормозная. Вообще описанная идеология сильно смахивает на CORBA, но на high-load WEB-приложениях от CORBA отказались из-за тормозов (а там ведь бинарный код!!!) и из-за сложности отладки таких приложений.

А не для WEB использовать PHP вообще не считаю правильным.


Да уж...
Doppelganger
23.11.2008, 17:27
Как же тогда следует проектировать API, чтобы с одной стороны оно подходило для использования в высоконагруженных приложениях, а с другой стороны было удобно для рефакторинга?


Страницы: 1
Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Размещение рекламы:
тел: (383) 347-06-78, 347-10-50

Правила использования материалов
Наши вакансии

О проекте
Пользовательское соглашение
Политика конфиденциальности