用于Squeak / Pharo Web服务的Microframeworks

时间:2010-12-22 20:18:10

标签: web-services frameworks smalltalk squeak pharo

许多语言都有微框架,用于编写非常小的网站或Web服务,例如Flask for Python或Sinatra for Ruby。在吱吱声中,似乎没有任何等同物; Iliad,Seaside和AIDA都非常重,只需要一点点服务。完成此任务的首选方法是什么?直接将一个hanlder注入Comanche或Swazoo?

4 个答案:

答案 0 :(得分:6)

  

“在这种特殊情况下,我确实有三个需要通过HTTP POST执行操作的URL;就是这样。”

对于非常简单的情况,您可以像这样注册(或子类)Kom的HttpService(来自类注释,请参阅更多信息/选项):

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

答案 1 :(得分:5)

您也可以使用teapot。 Teapot是基于Zinc HTTP组件的微型Web框架,侧重于简单性和易用性。它不到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"

在过滤器之前,有可用的胡子模板,输出变换器。该框架已有详细记录。

答案 2 :(得分:3)

我想分享一下我认为更新的信息(截至2012年底)。

锌成分

目前在Pharo 1.4 / 2.0中,HTTP客户端/服务器的事实标准似乎是Zinc HTTP Components。最新的Seaside版本(3.0)也改用了Zinc。

您当然可以直接使用Zinc来实现网络服务或提供网页。

特别注意课程ZnServer并搜索Zn*Delegate等课程(例如ZnDefaultServerDelegateZnStaticFileServerDelegate

海边休息

Seaside的最新版本包括对RESTful Web服务的支持。这可用于实现Web服务或提供Web页面。这很简单。

有关更多信息,请查看online Seaside book的“REST服务”一章。本章以实现Web服务为中心,但也适用于Web页面。

Ratpack

我也被告知过Ratpack,一个由Tim Felgentreff开发的类似sinatra的网络框架。有两个存储库。我认为github是最新的。见这里:

此信息来自我最近发布的similar question

答案 3 :(得分:2)

你可以在Swazoo中为这样一个微型网站继承SwazooSite,但我认为你很快就会需要更多的功能,所以直接从这三个框架中的一个开始就是长期更好的选择。

它们很重,可能只是一种印象,缺乏对这些简单网站使用情况的更好记录。另外,如果你把框架看作blackbox,内部复杂但外部很简单,那么我会说所有Smalltalk web框架与其他web框架相比都非常简单。