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
add comment

3 Answers

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
4  
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
add comment

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
add comment

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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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