|
Project Information
Featured
Downloads
Links
|
Service Stack .NET has moved to Git Hib!Service Stack has moved over to GitHub at the main project site at https://github.com/ServiceStack/ServiceStack Service Stack Sub Projects now have their own homes as well
For the latest source code and binary releases please refer to the above active projects. This project site is now in-active but will be kept alive for historical purposes. Previous Home PageLatest Version of Service Stack released: available here. Service Stack is a high-performance .NET web services framework (including a number of high-performance sub-components: see below) that simplifies the development of XML, JSON, JSV and WCF SOAP Web Services. For more info check out servicestack.net. Simple web service example[DataContract]
public class GetFactorial
{
[DataMember]
public long ForNumber { get; set; }
}
[DataContract]
public class GetFactorialResponse
{
[DataMember]
public long Result { get; set; }
}
public class GetFactorialService : IService<GetFactorial>
{
public object Execute(GetFactorial request)
{
return new GetFactorialResponse { Result = GetFactorial(request.ForNumber) };
}
static long GetFactorial(long n)
{
return n > 1 ? n * GetFactorial(n - 1) : 1;
}
}Calling the service from any C#/.NET Client//no code-gen required, can re-use above DTO's
var serviceClient = new XmlServiceClient("http://localhost/ServiceStack.Examples.Host.Web/Public/");
var response = this.ServiceClient.Send<GetFactorialResponse>(new GetFactorial { ForNumber = 3 });
Console.WriteLine("Result: {0}", response.Result);Calling the service from a Java Script client i.e. Ajaxvar serviceClient = new JsonServiceClient("http://localhost/ServiceStack.Examples.Host.Web/Public/");
serviceClient.getFromService("GetFactorial", { ForNumber: 3 }, function(e) {
alert(e.Result);
});That's all the application code required to create a simple web service. Preview links using just the above code sample with (live demo running on Linux): XML, JSON, JSV Check out the live demo with full source code. DownloadTo start developing web services with Service Stack we recommend starting with the ServiceStack.Examples project (includes ServiceStack.dlls): If you already have ServiceStack and just want to download the latest release binaries get them at: Getting StartedAn online tutorial that walks you through developing and calling web services is available here:
Features of a modern web services frameworkDeveloped in the modern age, Service Stack provides an alternate, cleaner POCO-driven way of creating web services, featuring: Define your web services in a code-first approach using DSL-like POCO'sService Stack was designed with a top-down view, i.e. we identified the minimum amount of effort required to implement a web service and ensured it remained that way. What are the minimum number or artefacts required to implement a web service? From our point of view it is the Request and Response DTO's (which on their own define the web service contract or interface) and the actual implementation of the web service which would take in a Request and in most cases return the Response. As it turns out these remain the only classes required to create a functional web service in Service Stack. The Request and Response DTO's are standard DataContract POCO's while the implementation just needs to inherit from a testable and dependency-free IService<TRequestDto>. As a bonus for keeping your DTO's in a separate dependency-free .dll, you're able to re-use them in your C#/.NET clients providing a strongly-typed API without any code-gen what-so-ever. Also your DTO's define everything Service Stack does not pollute your web services with any additional custom artefacts or markup. Service Stack re-uses the custom artefacts above and with zero-config and without imposing any extra burden on the developer adds discover-ability and provides hosting of your web service on a number of different physical end-points which as of today includes: XML (+REST), JSON (+REST), JSV (+REST) and SOAP 1.1 / SOAP 1.2. Full support for unit and integration testsYour application logic should not be tied to a third party vendor's web service host platform. In Service Stack they're not, your web service implementations are host and end-point ignorant, dependency-free and can be unit-tested independently of ASP.NET, Service Stack or its IOC. Without any code changes unit tests written can be re-used and run as integration tests simply by switching the IServiceClient used to point to a configured end-point host. Built-in Funq IOC containerConfigured to auto-wire all of your web services with your registered dependencies. Funq was chosen for it's high-performance, low footprint and intuitive full-featured minimalistic API. Encourages development of message-style, re-usable and batch-full web servicesEntire POCO types are used to define the request and response DTO's to promote the creation well-defined coarse-grained web services. Message-based interfaces are best-practices when dealing with out-of-process calls as they are can batch more work using less network calls and are ultimately more re-usable as the same operation can be called using different calling semantics. This is in stark contrast to WCF's Operation or Service contracts which encourage RPC-style, application-specific web services by using method signatures to define each operation. As it stands in general-purpose computing today, there is nothing more expensive you can do than a remote network call. Although easier for the newbie developer, by using methods to define web service operations, WCF is promoting bad-practices by encouraging them to design and treat web-service calls like normal function calls even though they are millions of times slower. Especially at the app-server tier, nothing hurts performance and scalability of your client and server than multiple dependent and synchronous web service calls. Batch-full, message-based web services are ideally suited in development of SOA services as they result in fewer, richer and more re-usable web services that need to be maintained. RPC-style services normally manifest themselves from a client perspective that is the result of the requirements of a single applications data access scenario. Single applications come and go over time while your data and services are poised to hang around for the longer term. Ideally you want to think about the definition of your web service from a services and data perspective and how you can expose your data so it is more re-usable by a number of your clients. Cross Platform Web Services FrameworkWith Mono on Linux now reaching full-maturity, Service Stack runs on .NET or Linux with Mono and can either be hosted inside an ASP.NET Web Application, Windows service or Console application running in or independently of a Web Server. Low Coupling for maximum accessibility and testabilityNo coupling between the transport's endpoint and your web service's payload. You can re-use your existing strongly-typed web service DTO's with any .NET client using the available Soap, Xml and Json Service Clients - giving you a strongly-typed API while at the same time avoiding the need for any generated code.
High Performance Sub ProjectsAlso included in ServiceStack are libraries that are useful in the development of high performance web services:
Find out More
Future RoadmapService Stack is under continuous improvement and is always adding features that are useful for high-performance, scalable and resilient web service scenarios. This is the current road map but is open to change. If you have suggestions for new features or want to prioritize the existing ones below: you can leave feedback here.
Similar open source projectsSimilar Open source .NET projects for developing or accessing web services include:
Runs on both Mono and .NET 3.5. (Live preview hosted on Mono / CentOS) |