[plt-scheme] Web framework question

From: Noel Welsh (noelwelsh at gmail.com)
Date: Thu Apr 15 10:11:12 EDT 2010

Hi Johan,

Untyped (http://www.untyped.com/) have built several web apps in PLT
Scheme. You can find more on our website and some of our code in
Planet (planet.plt-scheme.org). Note a lot of our releases are now
very old. More up-to-date code is at http://svn.untyped.com/ and will
probably be moving to Github or similar in the near future.

Some of your specific points:

On Sun, Apr 11, 2010 at 1:17 PM, Johan Coppieters <johan577 at mac.com> wrote:
> Persistent data should be stored in an SQL database, but it should be wisely used, not as most PHP/CMS solutions like Drupal and others that execute a multitude of queries for every page they serve. We have clients for which we serve more than a terrabyte of html web app data per month.

Snooze is our ORM, which handles the mundane cases well.

> I've been experimenting with a number of alternatives. After 6 months, I'm left with 2 possibilities:
> - Go mainstream this time, pick java/jsp, it's robust, widely used and well suited for MVC and you can find many programmers already experienced with the tools.

I wouldn't use JSP. There are many better Java frameworks.

> 1) I'm not sure using continuations is the best way to keep sessions for users.
> 2) Some of our clients have very busy sites/web-apps/intranets. We need to be able to upgrade these applications live, without breaking their sessions. So the session data needs to be serializable and it should be possible to have more/different session data after the upgrade.

Jay has given a great answer to this.

> 3) The language used in the Model-Controller part should be the same (or at least integrate seamlessly into) the HTML pages that are used as View.

SHP (http://planet.plt-scheme.org/display.ss?package=shp.plt&owner=bzlib)
might be useful here, but I no experience with it. Otherwise you're
looking at building your own -- which can be as simple as
include-template and eval as Jay notes.

> 4) We need some kind of AMVC model. I've added a A for Application because some data and methods need to be on application level (multi language label data, navigational model, etc...) . There is no need to fetch this data for each request and/or session. I don't want an IO / DB trashing framework.

As Jay said this requires no special support.

HTH,
N.


Posted on the users mailing list.