Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between these web servers in Seaside: Zinc, Kom, and Swazoo?

It's been a while since I've dabbled in Seaside, and, wanting to play around with it again for a small project, I downloaded the one-click image for Pharo and thought I'd look through the documentation to get my bearings. (There is a related question about performance differences between two of these, and one about which ones can server static files, but neither explains the differences between all of them.)

The first image of A Walk on the Seaside shows two available servers in the "Seaside Control Panel": WASwazooAdaptor and WAComancheAdaptor. The download page for Seaside on Pharo says you can start either Zinc, Kom, or Swazoo as your web server, and that either of them is available as an adaptor from the Seaside Control Panel. However, that panel in my newly downloaded image only has WATestServerAdaptor, ZnZincServerAdaptor, ZnZincStaticServerAdaptor, and ZnZincStreamingServerAdaptor. The second of these is the only one available by default.

I gather from all this conflicting information that Zinc is the latest one to use, at least on Pharo - is that correct? Are the other ones all outdated? Or do they each have their strengths and weaknesses, and need to be added to the image (e.g. via Monticello)? Are Kom and Swazoo only for Squeak? When would I use the three different Zinc servers on Pharo? I'm hoping someone can clear up my confusion.

like image 513
Amos M. Carpenter Avatar asked May 20 '15 03:05

Amos M. Carpenter


1 Answers

Zinc is the default, and bundled, HTTP stack framework (server/client) for Pharo since version 1.3 (Zinc). As far as I know Zinc is only supported in Pharo.

Kommanche (Kom) is the default web server of Squeak, and is only supported in Squeak as well (it "can" run in Pharo, but only a few still uses it).

Swazoo was an attempt to have a common web server among different Smalltalk dialects (it was conceived during a Camp Smalltalk event) and depended on a common set of "compatibility classes" called SPort (Smalltalk Portability), and during a while it succeeded to be the baseline of some web related solutions (I did two ports of Swazoo to Dolphin Smalltalk).

With Seaside 3, which was its primary dependant, the Adapter Pattern was choosen to provide a common API so there was no need to have a common webserver for all Smalltalk dialects, just one adapter for each web server implementation. And for platform specific features a new compatibility layer was selected (Grease), dropping the dependency with SPort as well.

Swazoo is still being used by the AIDA/web framework, mainly because its author is also one the main coders of Swazoo itself.

Regarding the different subclasses of ZnServer if you still don't know which one to use you'll be good only using ZnZincServerAdaptor startOn: 8080, you'll identify the specifc use of the other adaptors as you go.

Tip: ZnZincServerAdaptor default server debugMode: true.

like image 122
Esteban A. Maringolo Avatar answered Oct 19 '22 18:10

Esteban A. Maringolo