Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently in the process of developing a REST service that will be consumed by an iPhone app. Basically, the service wraps existing business logic. This business logic is written in c# and I'm writing the service in c#. From a purely curious point of view (not this project) my questions are: What other languages and frameworks exist to build REST services? If the technology choice was open which one would you choose and why? Can you wrap c# assemblies using non Microsoft languages? Would you ever do it? (If the development team was able to support it)

share|improve this question

closed as too broad by gnat, Martijn Pieters, ChrisF Dec 5 at 12:46

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers 4

up vote 3 down vote accepted

If you could choose your language freely, it's always a good idea to use the same language on the client and on the server. For example, when you build a RESTful webservice in Java, and an Android client that uses it, you could share some of the code.

Sadly, the iPhone uses Objective-C and nobody wants to use that, certainly not on the server side.

But I would guess, most of the time, people just use the language they know best, because it's mostly the fastest and most save way to go.

share|improve this answer
There is no need to use the same languages on client / server. If you are exposing a REST API the language is completely irrelevant. Use the best language for each platform. –  Steve Haigh Apr 11 '11 at 9:12
I know there is no need, but you save some time and work when you can use the same classes and routines on client and server. You don't have to rewrite all the shared stuff and, if you are the only developer in the project, don't have to switch between languages all the time. –  Tim Büthe Apr 11 '11 at 11:54
I have found in practice the code reuse to be far less than in theory. I've worked on a node.js project where we did share models between the client and server, but we still had to implement logic either in both places (things like validation), sometimes due to limitations in the client or server or differences in the implementations of libraries or else we had code which only really could work on one of the client or server, which had to be carefully guarded so that it couldn't be run on the other. –  eques Dec 5 at 13:55

There are 2 .Net frameworks you could look at to help you, so you can still leverage your C# and get a leg up from a framework:

WCF has a Rest Starter Kit which does what it says. Great if you either already use WCF or may need to extend your API to support SOAP etc.

An alternative, which we have used very successfully, is to use the ASP.Net MVC Framework to build out a REST API. This works pretty well. There is a lot of info on the web to look at, but Phil Haack's blog would be a good place to start.

share|improve this answer
+1 for the native .NET solutions, but I would mention that the WCF can do rest without the starter stuff as well. I have had better luck with that than with the starter kit. @gblock on twitter is working on the next set of bits for REST and they look very good channel9.msdn.com/Forums/Coffeehouse/… –  Bill Apr 21 '11 at 18:02
I'm currently reading RESTfull .NET by Jon Flanders, from O'Reilly and I'm so far impressed with it. I'm over half way through it, and it doesn't mention the linked REST Starter Kit. IMO, it's a good book for learning how to implement REST with WCF. –  Yoopergeek Jul 14 '11 at 15:03

For REST services today, I'd seriously consider Node.js. It may be fashionable but, it has a few aspects that make it the "right tool" for the job.

First, it is designed to do this. No general purpose genericity and add-on stuff. Its designed for high-throughput, heavy I/O data manipulation. This does mean its not good for high-performance processing, but then you'll choose another tool for that, namely C/C++ and link or connect that to the node server. (which is easy BTW)

Secondly, it uses the same language as the client - you'll be writing javascript clients to access this from a web client, so keeping the server in the same language helps development productivity. Consider libraries such as restify or express that help client and server programming and you've got a REST API system in next to no time.

share|improve this answer

I started to use Django framework with python. It is really good technology. Both development and runtime speed is really fast. I mean, you can develop your server app very fast and also it is process performance is really good. Django Rest Framework is really good for RESTful services.

share|improve this answer
It is the question that is problematic here, so this is not entirely your fault. But even so, lists of technologies do not make for helpful and useful answers on Programmers, and this question will likely be closed now that you drew attention to its existence again. –  Martijn Pieters Dec 5 at 11:00
OK bighead. That is my fault ;) –  yeulucay Dec 5 at 18:25

Not the answer you're looking for? Browse other questions tagged or ask your own question.