-
Notifications
You must be signed in to change notification settings - Fork 0
Release Notes
Note: During this release ServiceStack has upgraded and moved to a GitHub Organization here. Please update your watch lists.
##Service Stack 1.82 Release Notes
The biggest feature added in this release is likely the new HTML5 report format that generates a human-readable HTML view of your web services response when viewing it in a web browser. Good news is, like the ServiceStack-CSV-Format it works with your existing webservices as-is, with no configuration or code-changes required.
Here are some results of web services created before the newer HTML5 and CSV formats existed:
- RedisStackOverflow Latest Questions
- RestMovies All Movie listings
- RestFiles Root Directory
Use the ?format=[json|xml|html|csv|jsv] to toggle and view the same webservice in different formats.
In order to be able to better demonstrate features with a 'real-world' DataSet, a new ServiceStack.Northwind project has been added which inspects the Northwind dataset from an SQLite database. A live demo is hosted at http://servicestack.net/ServiceStack.Northwind/. Here are some links below to better demonstrate the new HTML format with a real-world dataset:
ServiceStack has always had its own (i.e. ASP.NET implementation-free) good support for caching, though like most un-documented features it is rarely used. The caching has been improved in this version to now support caching of user-defined formats as well. Here is example usage from the new Northwind project:
public class CachedCustomersService : RestServiceBase<CachedCustomers>
{
public ICacheClient CacheClient { get; set; }
public override object OnGet(CachedCustomers request)
{
return base.RequestContext.ToOptimizedResultUsingCache(
this.CacheClient, "urn:customers", () => {
var service = base.ResolveService<CustomersService>();
return (CustomersResponse) service.Get(new Customers());
});
}
}
The above code caches the most optimal output based on browser capabilities, i.e. if your browser supports deflate compression (as most do), a deflated, serialized output is cached and written directly on the response stream for subsequent calls. Only if no cache exists will the web service implementation (e.g lambda) be executed, which populates the cache before returning the response.
To see the difference caching provides, here are cached equivalents of the above REST web service calls:
The underlying IHttpRequest (an adapter interface over ASP.NET/HttpListener HTTP Requests) can now be retrieved within your webservice to be able to query the different HTTP Request properties:
var httpReq = base.RequestContext.Get<IHttpRequest>();
Also added is the ability to resolve existing web services (already auto-wired by the IOC) so you can re-use existing web service logic. Here is an example of usage from the Northwind CustomerDetailsService.cs.
var ordersService = base.ResolveService<OrdersService>();
var ordersResponse = (OrdersResponse)ordersService.Get(new Orders { CustomerId = customer.Id });
- New users should download ServiceStack.Examples - v1.82
- Existing users can download just the ServiceStack.dlls - v1.82
Follow @demisbellot and @ServiceStack for twitter updates
.
##Service Stack 1.79 Release Notes
- Enhanced REST functionality and access, now more succinct than ever
- Uploading of files to ServiceStack web services using HTTP POST multipart/form-data
- More robust error handling support handling C# exceptions over REST services
- For examples of on how to use the C# REST client API check out the tests in the new REST Files project:
New RestFiles project added to ServiceStack.Examples GitHub project:
Live demo available at: servicestack.net/RestFiles/
- Provides a complete remote file system management over a REST-ful api
- The complete REST-ful /files web service implementation is only 1 C# page class
- Includes a pure ajax client to provide a GitHub-like file browsing experience, written in only 1 static HTML page, using only jQuery
- C# integration test examples are also included showing how to access this REST-ful api over sync and async C# clients
Read the rest of the Rest Files README.md for a more detailed overview about the project.
##Service Stack 1.78 Release Notes
-
Added more tests and fixed bugs in ServiceStack's new CSV format and Request/Response filters
-
Added new information on the generated web service index, individual web service page now include:
- REST paths (if any are defined) thanks to @jakescott
- Included directions to consumers on how to override the HTTP Accept header and specify the format
- Now including any System.CompontentModel.Description meta information attributed on your Request DTO
- Preview the new documentation pages on ServiceStack Hello and Movies example web service pages.
-
Added tests to show how to implement Basic Authentication using the new RequestFilters
-
Changed the httpHandler paths in the Example projects and created a new Config class to store which supported mappings go with which web servers + middleware.
-
Provide a way to register new urls for different ServiceStack handler mappings used, e.g. to register IIS 6.0 urls:
SetConfig(new EndpointConfig { ServiceEndpointsMetadataConfig = ServiceEndpointsMetadataConfig.GetForIis6ServiceStackAshx() });
##Service Stack 1.77 Release Notes
This release was focused to opening up ServiceStack to better support adding more hooks and extension points where new formats can be added. The CSV format was also added to test these new extension APIs.
- Added support for the CSV format
- Enhanced the IContentTypeFilter API to add support for different serialization formats
- Added Request and Response filters so custom code can inspect and modify the incoming IHttpRequest or IHttpResponse.
- Added
Request.Itemsso you can share arbitrary data between your filters and web services. - Added
Request.Cookiesfor reading cookies (to avoid retrieving it from HttpRuntime.Current) - Removed the preceding UTF8 BOM character to ServiceStack's JSON and JSV Serializers.
- All features above are available on both ASP.NET and HttpListener hosts
Using the same tech that makes ServiceStack's JSV and JSON serializers so fast (i.e. no run-time reflection, static delegate caching, etc), should make it the fastest POCO CSV Serializer available for .NET.
The 'CSV' format is the first format added using the new extensions API, which only took the following lines of code:
//Register the 'text/csv' content-type and serializers (format is inferred from the last part of the content-type)
this.ContentTypeFilters.Register(ContentType.Csv,
CsvSerializer.SerializeToStream, CsvSerializer.DeserializeFromStream);
//Add a response filter to add a 'Content-Disposition' header so browsers treat it as a native .csv file
this.ResponseFilters.Add((req, res, dto) =>
{
if (req.ResponseContentType == ContentType.Csv)
{
res.AddHeader(HttpHeaders.ContentDisposition,
string.Format("attachment;filename={0}.csv", req.OperationName));
}
});
With only the code above, the 'CSV' format is now a first-class supported format which means all your existing web services can take advantage of the new format without any config or code changes. Just drop the latest ServiceStack.dlls (v1.77+) and you're good to go!
Note: there are some limitations on the CSV format and implementation which you can read about on the ServiceStack CSV Format page.
The Request filter takes a IHttpRequest, IHttpResponse and the Request DTO: List<Action<IHttpRequest, IHttpResponse, object>> RequestFilters { get; }
The Response filter takes a IHttpRequest, IHttpResponse and the Response DTO: List<Action<IHttpRequest, IHttpResponse, object>> ResponseFilters{ get; }
Note: both sets of filters are called before there any output is written to the response stream so you can happily use the filters to authorize and redirect the request. Calling IHttpResponse.Close() will close the response stream and stop any further processing of this request.
Feel free to discuss or find more about any of these features at the Service Stack Google Group
- Why ServiceStack?
- What is a message based web service?
- Advantages of message based web services
- Why remote services should use separate DTOs
- Getting Started
- Reference
- Clients
- Formats
- View Engines 4. Razor & Markdown Razor
- Hosts
- Security
- Advanced
- Configuration options
- Access HTTP specific features in services
- Logging
- Serialization/deserialization
- Request/response filters
- Filter attributes
- Concurrency Model
- Built-in caching options
- Built-in profiling
- Form Hijacking Prevention
- Auto-Mapping
- HTTP Utils
- Virtual File System
- Config API
- Physical Project Structure
- Modularizing Services
- MVC Integration
- Plugins 3. Request logger 4. Swagger API
- Tests
- Other Languages
- Use Cases
- Performance
- How To
- Future
