Implementig a XCAP web server: Ebb and Rack ?

  • Thread starter Iñaki Baz Castillo
  • Start date
I

Iñaki Baz Castillo

Hi, I plan to deploy a web server to implement a XCAP service (it's basical=
ly=20
a web server which handles body with specific XML content). Some examples:

=2D The client requests a XML document (GET) so the server replies it in th=
e=20
body of the 200 OK.

=2D The client stores a XML document (PUT) in the server, so the server=20
validates it and stores in a DB table.


There are a lot of web servers built in Ruby and I'm getting a bit crazy by=
=20
tryting to choose one. I've read about Ebb web server (which seems to be ve=
ry=20
fast) and RACK (which seems to be a framework to build the application by=20
receiving requests from the web service, Ebb in this case).

Unfortunatelly, by reading the doc of RACK (Ebb has no doc at all) I can't=
=20
figure how to build the application:
http://rack.rubyforge.org/doc/

RACK doc also talks about "middleware" (buff...) which annoy me even more.=
=20
Anyhow I think that what I want to achieve doesn't require more middleware.=
=20
But I would like to have some "get started" guidelines to work with RACK. F=
or=20
example, a ismple example:

A web server that receive a request and replies "200 OK" if the request URL=
is=20
"/yes" and "404 Not Found" is the request URL is "/no".

Could I get some tips on how to build this simple example with Ebb and RACK?

Thanks a lot.




=2D-=20
I=C3=B1aki Baz Castillo <[email protected]>
 
I

Iñaki Baz Castillo

El Jueves, 27 de Agosto de 2009, I=C3=B1aki Baz Castillo escribi=C3=B3:
RACK doc also talks about "middleware" (buff...) which annoy me even more.
Anyhow I think that what I want to achieve doesn't require more middlewar= e.
But I would like to have some "get started" guidelines to work with RACK.
For example, a ismple example:

A web server that receive a request and replies "200 OK" if the request U= RL
is "/yes" and "404 Not Found" is the request URL is "/no".

Could I get some tips on how to build this simple example with Ebb and
RACK?

I've found a introduction to Rack:
http://chneukirchen.org/blog/archive/2007/02/introducing-rack.html

=2D-=20
I=C3=B1aki Baz Castillo <[email protected]>
 
D

David Masover

- The client requests a XML document (GET) so the server replies it in the
body of the 200 OK.

- The client stores a XML document (PUT) in the server, so the server
validates it and stores in a DB table.

Sounds very much like a REST architecture, which Rails (among others) is ve=
ry=20
good at.
There are a lot of web servers built in Ruby and I'm getting a bit crazy = by
tryting to choose one.
Don't.

I've read about Ebb web server (which seems to be
very fast) and RACK (which seems to be a framework to build the applicati= on
by receiving requests from the web service, Ebb in this case).

That's the point.

If you wanted to work close to the metal, you would use Rack. Your applicat=
ion=20
would then be easily portable beween Ebb, Mongrel, Thin, Passenger/modrails=
,=20
etc, without much work from you.

But if you use Rack, you shouldn't have to choose one of those other=20
frameworks right away, in order to develop your app. Develop the app first,=
=20
then try different webservers to see which one works best.
Unfortunatelly, by reading the doc of RACK (Ebb has no doc at all) I can't
figure how to build the application:

Rack itself is still not really friendly to work with.

If you don't want to learn Rails (which ultimately uses Rack), you could=20
instead try something else. Sinatra might be the simplest. But even here,=20
you're choosing between frameworks -- you shouldn't really have to think ab=
out=20
all those other layers.

What I'm getting at is, say you want to use Sinatra. You would just do:

# gem install sinatra

Then, in your application, you'd do:

require 'rubygems'
require 'sinatra'

And then you'd forget Rack, or Ebb, or any of those other things even exist=
,=20
until you need to tune your app for performance.
A web server that receive a request and replies "200 OK" if the request U= RL
is "/yes" and "404 Not Found" is the request URL is "/no".

Here's a simple Sinatra script:

require 'rubygems'
require 'sinatra'

get '/yes' do
"Hello, World!\n"
end


Just run that, then try http://localhost:4567/yes, and you'll get 'Hello,=20
World!' with a status code of 200. Anything else, you'll get a 404.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top