Микрофреймворки для веб-сервиса Squeak/Pharo

Во многих языках есть микрофреймворки для написания очень маленьких веб-сайтов или веб-сервисов, таких как Flask для Python или Sinatra для Ruby. На Squeak, кажется, нет никакого эквивалента; «Илиада», «Приморье» и «Аида» очень тяжелы из-за небольшого обслуживания. Какой предпочтительный способ сделать это? Напрямую вводить обработчик в Comanche или Swazoo?


person Benjamin Pollack    schedule 22.12.2010    source источник
comment
Я отправил аналогичный вопрос здесь   -  person Sebastian N.    schedule 04.12.2012


Ответы (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 более поздний. Глянь сюда:

Эта информация получена из подобного вопроса, который я опубликовал недавно.

person Sebastian N.    schedule 03.12.2012

«В этом конкретном случае у меня буквально есть три URL-адреса, которые нужно делать через HTTP POST, вот и все».

Для действительно простых случаев вы можете просто зарегистрироваться в (или подклассе) Kom HttpService следующим образом (из комментария класса см. дополнительную информацию/параметры):

    (HttpService on: 8080 named: 'Example Http Service')
    onRequestDo: [ :httpRequest | SomeGlobal processRequest: httpRequest ];
    start
person Sean DeNigris    schedule 22.12.2010

Вы также можете использовать чайник. 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"

Имеются в наличии шаблоны усов, выходных трансформаторов, перед фильтрами. Фреймворк хорошо документирован.

person vmusulainen    schedule 01.12.2014

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

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

person Janko Mivšek    schedule 22.12.2010
comment
В этом конкретном случае у меня буквально есть три URL-адреса, которые нужно делать через HTTP POST; Это оно. Он никогда не будет расти, потому что он просто использует три разных веб-хука и загружает их в HipChat. Дело не в том, что я не могу использовать Seaside или AIDA — я знаю, что могу — просто кажется несколько глупым втягивать, например, Весь фреймворк AIDA имеет всего три изящных 20-строчных обработчика. - person Benjamin Pollack; 22.12.2010
comment
Если у вас нет сложного HTML-кода для генерации ответа, то создание подкласса SwazooSite будет проще сделать. Например, см. SwazooDemoSite (в последней бета-версии) и SwazooServer››prepareDemoSite для подсказок, как сделать такой простой веб-сайт. - person Janko Mivšek; 23.12.2010