Во многих языках есть микрофреймворки для написания очень маленьких веб-сайтов или веб-сервисов, таких как Flask для Python или Sinatra для Ruby. На Squeak, кажется, нет никакого эквивалента; «Илиада», «Приморье» и «Аида» очень тяжелы из-за небольшого обслуживания. Какой предпочтительный способ сделать это? Напрямую вводить обработчик в Comanche или Swazoo?
Микрофреймворки для веб-сервиса Squeak/Pharo
Ответы (4)
Я хотел бы поделиться тем, что я считаю более актуальной информацией (по состоянию на конец 2012 года).
Цинковые компоненты
В настоящее время в Pharo 1.4/2.0 стандартом де-факто для HTTP-клиента/сервера является Zinc HTTP. Компоненты. И последняя версия Seaside (3.0) тоже перешла на Zinc.
Конечно, вы можете использовать Zinc напрямую для реализации веб-сервисов или обслуживания веб-страниц.
Обратите особое внимание на классы ZnServer
и найдите такие классы, как Zn*Delegate
(например, ZnDefaultServerDelegate
или ZnStaticFileServerDelegate
).
ОТДЫХ НА МОРЕ
Последние версии Seaside включают поддержку веб-сервисов RESTful. Это можно использовать для реализации веб-сервисов или обслуживания веб-страниц. Это довольно просто.
Дополнительную информацию см. в главе "Службы REST" онлайн-книги о Seaside. Эта глава посвящена реализации веб-сервисов, но она работает и для веб-страниц.
Крысиная стая
Мне также рассказали о Ratpack, веб-фреймворке, похожем на sinatra, разработанном Тимом Фельгентреффом. Есть два репозитория. Я думаю, что github более поздний. Глянь сюда:
Эта информация получена из подобного вопроса, который я опубликовал недавно.
«В этом конкретном случае у меня буквально есть три URL-адреса, которые нужно делать через HTTP POST, вот и все».
Для действительно простых случаев вы можете просто зарегистрироваться в (или подклассе) Kom HttpService следующим образом (из комментария класса см. дополнительную информацию/параметры):
(HttpService on: 8080 named: 'Example Http Service')
onRequestDo: [ :httpRequest | SomeGlobal processRequest: httpRequest ];
start
Вы также можете использовать чайник. Teapot — это микровеб-фреймворк на основе HTTP-компонентов Zinc, ориентированный на простоту и удобство использования. Это менее 500 строк кода, не считая тестов.
Teapot on
GET: '/hi' -> 'Bonjour!';
GET: '/hi/<user>' -> [:req | 'Hello ', (req at: #user)];
GET: '/say/hi/*' -> (Send message: #greet: to: greeter);
start.
(ZnEasy get: 'http://localhost:1701/hi/user1') entity string. "Hello user1"
Имеются в наличии шаблоны усов, выходных трансформаторов, перед фильтрами. Фреймворк хорошо документирован.
Вы можете создать подкласс SwazooSite в Swazoo для такого микро-веб-сайта, но я думаю, что вам скоро перестанет требоваться дополнительная функциональность, поэтому лучше начинать непосредственно с одной из этих трех платформ в долгосрочной перспективе.
То, что они тяжелые, возможно, просто впечатление и отсутствие лучшей документации по использованию таких простых веб-сайтов. Кроме того, если вы посмотрите на фреймворк как на черный ящик, который сложен внутри, но прост снаружи, то я бы сказал, что все веб-фреймворки Smalltalk довольно просты по сравнению с другими веб-фреймворками.