多くの言語には、Python用のFlaskやRuby用のSinatraなど、非常に小さなWebサイトやWebサービスを作成するためのマイクロフレームワークがあります。Squeakには、同等のものはないようです。Iliad、Seaside、AIDAはすべて、ほんの少しのサービスを提供するだけで非常に重いです。これを達成するための好ましい方法は何ですか?コマンチェまたはスワズーにハンダーを直接注入しますか?
4 に答える
「この特定のケースでは、文字通り、HTTPPOSTを介して処理を実行する必要のある3つのURLがあります。それだけです。」
非常に単純なケースでは、次のようにKomのHttpServiceに登録(またはサブクラス)することができます(クラスのコメントから、詳細/オプションを参照してください)。
(HttpService on: 8080 named: 'Example Http Service')
onRequestDo: [ :httpRequest | SomeGlobal processRequest: httpRequest ];
start
ティーポットも使用できます。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"
フィルタの前に、利用可能な口ひげテンプレート、出力トランスがあります。フレームワークは十分に文書化されています。
私が思うに、より最新の情報(2012年末現在)を共有したいと思います。
亜鉛成分
現在、Pharo 1.4 / 2.0では、HTTPクライアント/サーバーのデファクトスタンダードはZincHTTPコンポーネントのようです。また、最新のSeasideバージョン(3.0)もZincに切り替わりました。
もちろん、Zincを直接使用して、Webサービスを実装したりWebページを提供したりすることもできます。
特にクラスを見て、(likeまたは)のようなクラスZnServer
を検索してくださいZn*Delegate
ZnDefaultServerDelegate
ZnStaticFileServerDelegate
シーサイドREST
Seasideの最新バージョンには、RESTfulWebサービスのサポートが含まれています。これは、Webサービスの実装またはWebページの提供に使用できます。それはかなり簡単です。
詳細については、オンラインのSeasideブックの「RESTサービス」の章を参照してください。この章では、Webサービスの実装を中心に説明しますが、Webページでも機能します。
ラットパック
また、TimFelgentreffによって開発されたシナトラのようなWebフレームワークであるRatpackについても聞いたことがあります。2つのリポジトリがあります。githubのものはもっと最近のものだと思います。ここを参照してください:
この情報は、私が最近投稿した同様の質問からのものです。
SwazooのSwazooSiteをそのようなマイクロWebサイトにサブクラス化することはできますが、すぐにもっと多くの機能が必要になると思います。したがって、これら3つのフレームワークのいずれかから直接開始する方が長期的には適切です。
それらが重いということは、おそらく単なる印象であり、そのような単純なWebサイトの使用法に関するより良いドキュメントが不足しています。また、フレームワークをブラックボックスとして見ると、内部的には複雑ですが、外部的には単純です。すべてのSmalltalk Webフレームワークは、他のWebフレームワークと比較して非常に単純であると言えます。