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

1

12

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.

Ternopol answered 20/5, 2015 at 3:51 Comment(0)
B
18

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.

Brownstone answered 20/5, 2015 at 15:7 Comment(1)
Exactly what I was looking for in an answer - cheers! Even if it means a bit of confusion, and code being out of sync with documentation, it's great to see that Seaside is still being actively developed.Ternopol

© 2022 - 2024 — McMap. All rights reserved.