ios85
ios85

Reputation: 2134

Where should I begin for making a RESTful web service based on the .NET framework?

I am creating an iOS application that I need to connect to a database through a web service. I only know basic knowledge about using RESTful web services, I have never written my own before and was wondering if you can give me any advice on where I can find out how to write my own RESTful web service.

In my iOS program I will be sending a part number to the web service the web service will then need to return color and size information on the part. I'm not sure if XML is the best format or is there something better?

I guess my question is twofold here:

  1. Is this something I should be doing with a RESTful web service?
  2. Where can I find tutorials on creating a .NET-based RESTful web service?

Upvotes: 6

Views: 4919

Answers (6)

albertjan
albertjan

Reputation: 7817

You can use WCF for creating RESTful services, and you could use Nancy:

I'd recomend using json as a data format see here for some excelent links: iPhone/iOS JSON parsing tutorial

in wcf you'd go about creating a service like this: see here for a reasonable example: http://blogs.msdn.com/b/kaevans/archive/2008/04/03/creating-restful-services-using-wcf.aspx

[ServiceContract]
public interface IServeStuff
{
    [OperationContract]
    [WebGet(UriTemplate = "/stuff/{id}", 
            ResponseFormat = WebMessageFormat.Json)]
    Stuff GetStuff(string id);
}

public class StuffService : IServeStuff
{
    public Stuff GetStuff(string id)
    {
         return new Stuff(id);
    }
}

Or with nancy http://www.nancyfx.org/ like this:

public MyModule : NancyModule
{
    public MyModule()
    {  
        Get["/stuff/{id}"] = parameters => {
            return new Stuff(parameters.id).AsJson();
        };
    }
}

But before all this listen to @PeterKelly because he's right

Upvotes: 6

iandotkelly
iandotkelly

Reputation: 9124

My advice would be to implement this using ASP.NET MVC3 - as this provides a nice controller-action paradigm which is excellent for implementing a REST service. You could use WCF, and I am sure it would work fine, but from personal experience I found MVC3 to be very easy to use to write a REST back-end for an iOS client.

I would recommend using JSON and not XML, primarily as it is more concise than XML, but it has other advantages should you decide later to implement a web front end for your database, as Javascript has good support for JSON.

There are a number of JSON libraries for iOS, including SBJSON and YAJL

There is also a well regarded framework for iOS REST implementations called RestKit.

As for tutorials for implementing REST using the MVC famework, this might be one to look at.

Upvotes: 5

Peter Kelly
Peter Kelly

Reputation: 14391

Seeing as you have little experience with REST, I would first learn about the concept. It is important to understand what it is (it is not just pretty URLs) fundamentally before proceeding to design your service.

  1. I would start with reading Chapter 5 of Roy Fielding's dissertation (where the term REST originated - read the whole paper if you like).
  2. I would then move on to the excellent RESTful web services.
  3. Finally, I would then read RESTful .NET.

If you gave yourself 2 days you could read, understand and digest all of these resources no problem.

You will probably end up using WCF - you can get the REST Starter Kit from here

Upvotes: 3

Antoine Latter
Antoine Latter

Reputation: 1555

You can pretty much use anything.

If that's truly your only requirement, it would be pretty easy to just use an ASP.NET 'Generic Handler', pull the information out of the request query parameters and write the JSON/XML to the response.

But if you expect things to get even a smidge more complex in the future, you'll want to use some sort of framework like 'Bas B' and 'iandotkelly' recommend.

Upvotes: 1

Matt
Matt

Reputation: 3802

WCF Data Services will help you here.

Check out This beginners guide to WCF

Upvotes: 0

Bas
Bas

Reputation: 27085

Use WCF Data Services. This supports XML and json (json is more efficient).

Use this with Entity Framework for the least amount of development time.

Upvotes: 0

Related Questions