views:

310

answers:

6

I'm developing out replacements for our company's web service stack.

The current stack was developed using SOAP and had some REST endpoints manually hacked in. It's a maintenance nightmare.

I can use any language, tech, and framework as long as it it fits the goal.

Requirements are:

  • easy for serving up RESTful services
  • uses an MVC model
  • supports injecting middle layers to do authentication (OAuth and Basic Auth) around calls (preferably in a declarative way)
  • makes it easy to do JSON, JSONP, and Plain ol' XML (Simple XML) type serialization of the return data
  • preferably has built in caching control and built in E-Tags support
  • preferably using a statically typed language but this doesn't matter if the amount of code I have to write is dramatically less
  • it would be awesome to have a framework that supports doing microthreaded/epoll type HTTP handling so I can easily support HTTP long polling, but this isn't a requirement

So far I've looked at:

  • .NET (C#)
    • ASP.NET MVC (simple MVC framework, would have to add the missing pieces manually to fit my requirements)
    • Monorails (simple MVC framework, less supported)
    • WCF (unfortunately it takes a lot of overriding to force it into submission to work nicely for consumption on clients not using WCF themselves)
  • Python
    • Pylons (top of my list right now, but it lacks easy XML serialization)
    • DJango (more traditional web framework than REST framework)
  • Scala (still new but big startups are using it)
  • Ruby on Rails (doesn't scale the way I like)

Any other ideas or thoughts?

+1  A: 

Ruby on Rails (doesn't scale the way I like)

Generally speaking, Ruby on Rails can scale well (now, anyway; the past is the past).

What kind of scalability does your system require and does Rails not offer?

In all other aspects of your requirements aside from static typing, Rails seems to be the industry leader.

Justice
I'm prejudging it based on Twitter's experience with it when they hit critical mass with it. The web services are going to get pounded like crazy. I'm also not using traditional a datastore (a bigtable clone with No SQL) so the activerecord concept doesn't help me either.
Zac Bowling
+2  A: 

I just started to work with Django and Piston — I think its a great combination

vikingosegundo
interesting! that may work!
Zac Bowling
reading up on piston. it seems what I was looking for that I couldn't find the first time I looked at django. (Googling restful services with django doesn't return piston :-) )
Zac Bowling
oh man. built in OAuth boilerplate in piston. We have a winrar!
Zac Bowling
:D I'm glad, that it was helpful!
vikingosegundo
+3  A: 

If you're considering .Net, there's OpenRasta ( http://trac.caffeine-it.com/openrasta/wiki/Doc ) , a really nice REST framework, simple yet powerful, where REST was not retrofitted as an afterthought like it was in WCF.

Yann Schwartz
I support this Framework too - it's a great, lightweight but powerful one for REST services as first class citizens.
Dokie
+1  A: 

There's alternative Ruby frameworks like Sinatra. It's very lightweight and flexible - definitely worth a look.

The example app:

require 'rubygems'
require 'sinatra'
get '/hi' do
  "Hello World!"
end

There's also a glue framework for Sinatra called 'Monk' which makes setting up more sophisticated project layouts much easier.

Mike
A: 

Nobody mentions http://www.jboss.org/resteasy/

djangofan
A: 

There are several alternatives, many listed on this page: http://en.wikipedia.org/wiki/Representational%5FState%5FTransfer

I recommend Restlet, our RESTful framework for Java developers, with editions for Java SE, Java EE, Android, GWT and GAE.

Best regards,

Jerome Louvel

Restlet ~ Founder and Lead developer ~ http://www.restlet.org

Noelios Technologies ~ Co-founder ~ http://www.noelios.com

Jerome Louvel