Hello World Todos Redis StackOverflow REST Files REST Movies Northwind Database Ajax Client

# Northwind Web Services

The Northwind Web Services Example project explores different features of ServiceStack using data from Northwind SQlite Database.

### Rest Services

ServiceStack's REST Services, are just normal Web Services with the addition of a [RestService] attribute that allows you to provide the canonical / permanent location for your web service.

| Path | Formats | Code
--- | --- | --- | ---
All Customers | customers | json xml html csv jsv x-vcard | CustomersService.cs
Customer Maria Anders | customers/ALFKI | json xml html csv jsv x-vcard | CustomerDetailsService.cs
Customer Maria Anders Orders | customers/ALFKI/orders | json xml html csv jsv | OrdersService.cs
Latest Orders | orders | json xml html csv jsv | OrdersService.cs
Latest Orders - page 2 | orders/page/2 | json xml html csv jsv | OrdersService.cs

The entire datasource for the Northwind project is contained in this Northwind.sqlite database created by this unit test.

### Adding Custom Media Types - The VCard format

The Northwind database also includes the addition of the VCard custom media format.
Checkout the walk thru to see how to create your own Custom Media Types with ServiceStack:

#### vcard-format.htm

### Cached Rest Services

As it's important for high-performance web services, ServiceStack includes a rich caching provider framework with Redis, Memcached, Memory and FileSystem-based cache providers available.

To compare the difference with caching enabled, below are the 'cached versions' of the REST services above.

| Path | Formats | Code
--- | --- | --- | ---
All Customers | cached/customers | json xml html csv jsv | CachedServices.cs
Customer Maria Anders | cached/customers/ALFKI | json xml html csv jsv | CachedServices.cs
Customer Maria Anders Orders | cached/customers/ALFKI/orders | json xml html csv jsv | CachedServices.cs
Latest Orders | cached/orders | json xml html csv jsv | CachedServices.cs
Latest Orders - page 2 | cached/orders/page/2 | json xml html csv jsv | CachedServices.cs

Note: The most optimal result is cached, i.e. if your browser supports gzip/deflate it will cache the compressed output. Caching also supports all user-defined formats.

## Advantages of a convention-based Web Services framework

#### Nothing but C#

The Northwind project is also an example of how much can be achieved with a minimal amount of effort and code. This entire website literally just consists of these three classes . Everything else seen here is automatically provided by ServiceStack using a code-first, convention-based approach. ServiceStack can infer a richer intelligence about your services to better able to provide more generic and re-usable functionality for free!

You're unlikley to ever see the same WCF SOAP service, generating a visually informative HTML view of your data, allow it to be exposed over REST-ful interfaces or be able to export it to a CSV data file. With ServiceStack not only is this possible - it comes out-of-the-box, config-pain-free :)

#### Config-free, convention-based, pure C# model-driven, web services

No other config, code-gen are required and you do not need to learn any other artificial constructs and concepts to get started. The logic of your services simply live in a pure C#, dependency-free and testable class.

#### Get Started by un-learning WCF RPC

The initial difficulty to new developers coming to ServiceStack is having to un-learn WCFs RPC approach to web services. In our opinion the problem with WCF is not that it's an abstract walled-interface forcing you to develop all your Network services in.

The main problem is it forcing all network requests to marshal onto a C# method, we believe is an un-natural fit, leading to the creation of slow, chatty APIs. ServiceStack believes this is an anti-pattern which produces more friction then its preferred strong-typed DTO approach.