[erlang-questions] Erlang Web Libraries & Frameworks
Joe Armstrong
erlang@REDACTED
Thu Aug 11 11:01:07 CEST 2011
On Wed, Aug 10, 2011 at 1:04 AM, Sam Elliott <sam@REDACTED> wrote:
> Hi erlang-questions,
>
> Recently I needed to compare a few Erlang web libraries and frameworks
> for a friend who was writing a simple internal API endpoint. He
> suggested I should publish the rundown for others, and I thought I'd
> also circulate it here. I'm relatively new to Erlang, so I have
> probably missed a few libraries.
>
> I'll try to keep it updated as people send me information, so don't
> hesitate to contact me if i've got something wrong.
>
> The article: http://lenary.co.uk/erlang/2011/08/erlang-web-libraries/
>
> What are your thoughts?
This is great. In addition to your summaries (which are excellent) I'd
like to see
a simple cross-framework API. Is what your friend is doing?
For example, If I start off by using yaws and then change my mind
later and decide to use mochiweb
I'd like this to have minimal impact on my code. It should be a simple
as changing the name of
an interface module. (( ie a GoF adapter pattern ))
To use yaws I'd like to write:
-define(?ADAPTOR, yaws_adapter).
-include("adaptor.hrl").
-import(?ADAPTOR, [my_callback/1, reply/1, start_web_server/0]).
start() ->
?ADAPTER:start_web_server(),
?ADAPTER:my_callback(fun my_handler/1).
my_handler(X) when is_record(X,'GET') ->
...
?ADAPTER:reply(#'RELY'{type=html, data=Binary})
If I wanted to use mochiweb I'd just have to change the module name of
the adaptor.
(this was the original reason for the import declaration in Erlang -
to make changing the
implementation of a feature simple :-)
Exactly which routines the adapter would export and the records in
the include file would need a little thought - but handling
HTTP GET, POST, PUT, DELETE requests should be easy enough
If all suppliers of web- frameworks could adopt a common adapter
pattern - it would make
life a lot easier. I realize that this would not allow us to use some
of the finer facilities
offered by an individual web-server, but it would be very useful for the simple
cases of serving up files etc.
One could have a common API then choose the implementation depending upon
the requirements of the application.
/Joe
>
> Sam
>
> --
> Sam Elliott
> sam@REDACTED
> --
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
More information about the erlang-questions
mailing list