Микрофреймы для веб-сервиса Squeak / Pharo - PullRequest
5 голосов
/ 22 декабря 2010

На многих языках есть микрофреймы для написания очень маленьких веб-сайтов или веб-сервисов, таких как Flask для Python или Sinatra для Ruby. На Squeak, похоже, нет никакого эквивалента; Iliad, Seaside и AIDA очень тяжелы для того, чтобы просто иметь небольшое обслуживание. Какой предпочтительный способ сделать это? Непосредственно впрыскивать ручку в команчи или свазу?

Ответы [ 4 ]

6 голосов
/ 23 декабря 2010

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

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

    (HttpService on: 8080 named: 'Example Http Service')
    onRequestDo: [ :httpRequest | SomeGlobal processRequest: httpRequest ];
    start
5 голосов
/ 01 декабря 2014

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

Доступны шаблоны усов, выходные преобразователи, перед фильтрами. Каркас хорошо документирован.

3 голосов
/ 04 декабря 2012

Я хотел бы поделиться, как мне кажется, более актуальной информацией (по состоянию на конец 2012 года).

Цинковые компоненты

В настоящее время в Pharo 1.4 / 2.0Фактически стандарт для HTTP клиент / сервер выглядит как Zinc HTTP Components .И последняя версия Seaside (3.0) также перешла на Zinc.

Конечно, вы можете использовать Zinc непосредственно для реализации веб-сервисов или обслуживания веб-страниц.

Обратите особое внимание на занятияZnServer и поиск таких классов, как Zn*Delegate (например, ZnDefaultServerDelegate или ZnStaticFileServerDelegate)

Seaside REST

Последние версии Seaside включают поддержку RESTful web-Сервисы.Это может быть использовано для реализации веб-сервисов или обслуживания веб-страниц.Это довольно просто.

Для получения дополнительной информации см. Главу "Службы REST" в онлайновой Приморской книге .Эта глава посвящена реализации веб-сервисов, но также работает и для веб-страниц.

Ratpack

Мне также рассказывали о Ratpack, подобной sinatra веб-платформе, разработанной Тимом.Felgentreff.Есть два хранилища.Я думаю, что GitHub один более свежий.См. Здесь:

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

2 голосов
/ 22 декабря 2010

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

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

...