Существуют ли веб-фреймворки MVC, поддерживающие несколько типов запросов?
-
02-07-2019 - |
Вопрос
В каждой среде 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.