Существуют ли веб-фреймворки MVC, поддерживающие несколько типов запросов?

StackOverflow https://stackoverflow.com/questions/115691

Вопрос

В каждой среде MVC, которую я пробовал (Rails, Merb, Waves, Spring и Struts), идея запроса (и ответа) связана с понятием HTTP-запроса.То есть, даже если существует AbstractRequest, который является суперклассом Request, у AbstractRequest есть такие вещи, как заголовки, метод запроса (GET, POST и т. д.) и все остальное, связанное с HTTP.

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

Единственный другой вариант, о котором я подумал, — это создать, например, опросчик Twitter, который запускается в отдельном потоке и преобразует сообщения в локальные HTTP-запросы, а затем отправляет ответы обратно.

Если здесь были хорошая платформа для мультимедиа запросов, как будет выглядеть маршрутизация?В Rails маршрутизация HTTP выглядит примерно так:

map.connect 'some/path/with/:parameter_1/:paramter_2', :controller => 'foo', :action => 'bar'

Как будет выглядеть маршрут Twitter или SMS?Регулярные выражения для соответствия ключевым словам и параметрам?

Это было полезно?

Решение

Кажется, вы работаете в основном с Java и/или Ruby, поэтому простите меня, что этот ответ основан на Perl :-).

Мне очень нравится Catalyst MVC Framework (http://www.catalystframework.org/).Он делегирует фактическое отображение запросов (в общем, общем смысле) коду через механизмы.Конечно, все классы движка в настоящее время основаны на HTTP, но я подумывал о том, чтобы попытаться написать класс движка, который не был бы основан на HTTP (или, возможно, был бы привязан к чему-то вроде Twitter, но был бы отделен от взаимодействий HTTP). которые использует Twitter).По крайней мере, я убежден, что это возможно, даже если я еще не успел это попробовать.

Другие советы

Я не видел ни одного.Проблема в том, что запрос тоже привязан к хосту, а ответ привязан к запросу.

Итак, если вы получаете запрос по электронной почте, и контроллер говорит, что нужно отобразить представление «о нас», вам понадобится платформа MVC, чтобы знать, как:

  • в первую очередь получите запрос - инфраструктура MVC почти должна быть хостом (IIS не получает уведомлений о новых электронных письмах, так как же запускается ваш код опроса электронной почты?)
  • разрешить гибкое сопоставление маршрутов — сопоставление по пути/URL-адресу не будет работать для всех, поэтому потребуется маршрутизация контроллера для конкретного запроса.
  • используйте о нас электронная почта представление, а не представление SMS или HTTP с именем «aboutus».
  • отправьте ответ по электронной почте правильному получателю

Веб-фреймворк MVC не справится с этой задачей — вам понадобится «хост» MVC, который сможет обрабатывать активацию через Интернет, SMS, электронную почту и т. д.

Спецификация Java Servlet была разработана для того, чтобы сервлеты были нейтральными к протоколу и расширялись в зависимости от протокола - HttpServlet является расширением сервлета для конкретного протокола.Я всегда предполагал, что Sun или другие сторонние поставщики платформ разработают другие расширения для конкретных протоколов, такие как FtpServlet или MailServlet, или, в данном случае, SmsServlet и TwitterServlet.

Вместо этого произошло следующее: люди либо полностью обошли структуру сервлетов, либо построили свои протоколы поверх HTTP.

Конечно, если вы хотите реализовать расширение для конкретного протокола для необходимых вам протоколов, вам придется разработать весь стек — объект запроса, объект ответа, механизм идентификации сеансов (например, использование MSISDN в SMS вместо файлов cookie). ), фреймворк шаблонов и рендеринга (эквивалент JSP), а затем создайте на его основе фреймворк MVC.

Вы можете реализовать на основе REST Адаптер над вашим сайтом, который заменяет шаблоны и выполняет редиректы в соответствии с входными параметрами.

Все запросы, поступающие API.yourhost.com будет обрабатываться адаптером на основе REST.

Этот адаптер позволит программно вызывать ваш сайт и получать результат в анализируемом формате.

Практически это означает:Он заменяет шаблоны собственным шаблонизатором, на котором происходят следующие вещи:

  • вместо назначенного шаблона вызывается общий шаблон xml/json, который просто выводит xml, содержащий все переменные шаблона.

затем вы можете создать свой опросчик Twitter, шлюз SMS или даже вызвать его из Javascript.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top