Feature Requests
Feature, docs and use-case samples requests for ServiceStack. If you can, focus on the end-user benefit / use-case, rather than the technical details so we can focus on the end-goal and free us to work on how best to achieve it. Features can also include supporting content, e.g. a starter project on how to use ServiceStack with another product (e.g. SS + SharePoint).
-
Replace System.IO.MemoryStream with Microsoft.IO.RecycableMemoryStream
Refer to http://www.codeproject.com/Articles/873615/Announcing-Microsoft-IO-RecycableMemoryStream
Quote:
Microsoft.IO.RecyclableMemoryStream is a MemoryStream replacement that offers superior behavior for performance-critical systems. In particular it is optimized to do the following:Eliminate Large Object Heap allocations by using pooled buffers
Avoid memory leaks by having a bounded pool size
Avoid memory fragmentation
Provide excellent debuggability
Provide metrics for performance tracking0 votesThis is now configurable from v4.0.38:
-
Allow LoadSelect to selectively load references
Akin to the EF "Include" method, enhance OrmLite's LoadSelect method to take an optional string array of references to load. For performance reasons, I don't always want to load all references to an object, particularly if its a central object like Account or User. As a coding efficiency measure, it'd be great to pass in a list of only the reference objects or properties that are relevant to the code snippet.
10 votesThis change is available from v4.0.37+ that’s now available on MyGet:
-
Customize Auth DTO Response
Currently if we want to customize the Auth DTO Response in Credential Auth Provider, we must to rewrite the Auth Feature,the Authentication Service and the Credential Provider.
It would be useful to be able to set a custom auth DTO Response.At this time there isn't a simple solution.
I found this post on stackoverflow that explains the problem in details:9 votesYou can use the Meta string Dictionary to extend the AuthenticateResponse with additional custom info, but we’re not planning on trying to support for switching the AuthenticateResponse DTO entirely and breaking the Service Contract.
-
Service Stack OrmLite 4.0.34 does not return result set for async version
4.0.34 version of ormlite gives null for an async call
for example// user1 is not null in this case
var user1 = db.Single(db.From<Users>().Where(x => x.UserPartyId == userPartyId).Select());// user2 is null in this case
var user2 = await db.SingleAsync(db.From<Users>().Where(x => x.UserPartyId == userPartyId).Select());1 voteThis was reported and fixed in: https://github.com/ServiceStack/ServiceStack.OrmLite/pull/426
the fix is available in v4.0.35 that’s now on MyGet:
https://github.com/ServiceStack/ServiceStack/wiki/MyGetAlso please post future issues in: https://github.com/ServiceStack/Issues
This site only for enhancements / feature requests.
-
48 votes
Async support has now been added to OrmLite in v4.0.33, see release notes for details: https://github.com/ServiceStack/ServiceStack/blob/master/release-notes.md#ormlite-now-supports-async
-
Implement SQL Server 2012 Paging with OFFSET and FETCH
Add and option to use "SQL Server 2012" features/dialect and use OFFSET and FETCH for paging.
The new SQL Server 2012 paging feature will offer better performance and generated sql will be easier to understand.
21 votesAdd new `SqlServer2012Dialect.Provider` with support for 2012’s new OFFSET/ROWS paging support in this commit: https://github.com/ServiceStack/ServiceStack.OrmLite/commit/f27901b4d5e1fdef4a3eadaeff8cc78cd34ba54e
This change is available from v4.0.43+ that’s now available on MyGet: https://github.com/ServiceStack/ServiceStack/wiki/MyGet
-
.UrlEncode(... bool lowerCase = true)
Possibility to choose UPPER Casing for URL Encoding's ie %2F, as many public API using OAuth use upper cased encoding for signing.
3 votesAn optional `upperCase` flag was added on UrlEncode to change case of urlencoded chars.
-
Endpoint Configuration Discovery
In WCF, I can create a udp endpoint discovery to allow client finding the service without knowing the endpoint addresses.
Is there a similar approach using restful servicestack so that the client could discover the end point addresses using some kind of discovery detection ?
13 votesService Gateway allows for a customizable gateway where there are now a couple of Service Discovery options listed at: https://github.com/ServiceStack/ServiceStack/wiki/Service-Discovery
-
add meta documentation page for response object
Right now only request object is parsed for ApiMember attributes to generate documentation page. We've added support to parse all properties and show documentation for "subtypes".
Is it that much more work to add documentation to parse response object in similar manner? And show documentation for it as well?
Ideally it'd be in sections on the meta doc page.
Request
request typesResponse
response typesI can take a stab at it, but might misdesign again.
4 votesshould be done in v4.0.32+ https://github.com/ServiceStack/ServiceStack/blob/master/release-notes.md#other
-
AuthFeature().ServiceRoutes - Option to hide route /Auth
Add a property to Remove the /Auth route, in favor of only /Authenticate instead.
Currently, I've added the following to hide /Auth routes.
// This is a way to remove the /Auth route and leave /Authorize instead. We don't need 2
ServiceRoutes = new Dictionary<Type, string[]> {{ typeof(AuthenticateService), new[] { "/" + localize(LocalizedStrings.Authenticate), "/" + localize(LocalizedStrings.Authenticate) + "/{provider}" }}},Maybe there is a better way? Or is this bad?
1 voteLike most plugins you can configure them when registering them, you can change it to only host Authenticate Services on `/authenticate` route with:
var authFeature = new AuthFeature(…);
authFeature.ServiceRoutes[typeof (AuthenticateService)] = new[] {
“/authenticate”,
“/authenticate/{provider}”,
};Plugins.Add(authFeature);
-
Support SSL connection to Redis instances hosted as PaaS in public clouds such as Azure.
At this time, StackExchange.Redis is the only .Net library I can find that supports SSL connections to Azure Redis. I imagine others will follow suit. It would be useful to have SSL connection available in ServiceStack as well. Thanks.
34 votesSSL Support was added to ServiceStack.Redis in v4.0.33. We’ve alsocreated a new Getting Started page for connecting ServiceStack.Redis with Azure Redis at:
https://github.com/ServiceStack/ServiceStack/wiki/Secure-SSL-Redis-connections-to-Azure-Redis -
Redis implementation of MemoryServerEvents
Just it! I would like to use the SSE feature with load balancing.
3 votesWe’ve added a new Redis ServerEvents backend in v4.0.31 so you can now use Server Events in load-balanced/scale-out environments: http://tinyurl.com/redisserverevents
-
Create PCL/Silverlight version of MsgPackServiceClient
The MessagePack format seems pretty ideal for communication between a ServiceStack service and a Silverlight client. Unfortunately there is no PCL package for ServiceStack.MsgPack.
On top of that it would be useful to split the client and server parts into separate packages.
8 votesSilverlight/PCL is dead but ServiceStack.MsgPack supports both .NET v4.5 and .NET Standard 2.0 which supports most active .NET platforms.
-
Add MQ Server support for Azure Service Bus
Add a MQ Server for Azure Service Bus that implements ServiceStack's Messaging API: https://github.com/ServiceStack/ServiceStack/wiki/Messaging
166 votesSupport for Azure ServiceBus was added in v4.5.14 in new ServiceStack.Azure NuGet package:
http://docs.servicestack.net/releases/v4.5.14#servicestackazure
-
GZip/Deflate on PCL clients
Support http compression on clients (Xamarin/sl5) with Microsoft Compression BCL library
20 votesShould be possible with the new HttpClient-based JsonHttpClient released in v4.0.42: https://github.com/ServiceStack/ServiceStack/wiki/C%23-client#jsonhttpclient
This MSDN Article shows how to enable it using a custom HttpClientHandler: http://blogs.msdn.com/b/dotnet/archive/2013/06/06/portable-compression-and-httpclient-working-together.aspx
-
AsyncRequestFilters
We are creating a api that uses authorization attribute request filter in all paths(except login, of course). The attribute request for authorization to another system. Because request filters are sync the request is blocked and waiting for response at this point. A solution can be that request filters can returns a Task. Something like this:
public override Task ProcessRequestAsync(IRequest httpReq, IResponse httpRes, string operationName){
.....
return Task.Factory.ContinueWhenAll(appHost.ApplyAsyncRequestFilters(httpReq, httpRes, request),
tasks => httpRes.IsClosed ? null : GetResponse(httpReq, request))
.ContinueWith(tResponse => HandleResponse(tResponse.Result, response =>
{
if (appHost.ApplyResponseFilters(httpReq, httpRes, response))
return null;if (responseContentType.Contains("jsv") && !string.IsNullOrEmpty(httpReq.QueryString["debug"]))
return WriteDebugResponse(httpRes, response);if (doJsonp && !(response…
1 voteSupport for Async Request Filters was added in v4.5.8:
http://docs.servicestack.net/releases/v4.5.8#async-global-request-filters
-
Add message-level encryption
Add the ability to specify message-level encryption on all client/server requests. Allow custom selection of encryption techniques (RSA, AES, etc.) for each direction, and the initialization vectors. Server-side I can see doing this via plug-ins and / or attributes.
Create a subset of client libraries that handle encryption, perhaps using function pointers to encrypt / decrypt.
Its been suggested previously by Demois on different forums.
http://stackoverflow.com/questions/16098839/encrypting-messages-over-servicestack
http://www.linkedin.com/groups/Service-Stack-versus-ASP-NET-1779887.S.107976247
22 votesEncrypted Messaging was added in v4.0.42: https://github.com/ServiceStack/ServiceStack/wiki/Encrypted-Messaging
-
Async CredentialsAuthProvider
An AsyncCredentialsAuthProvider would allow us to authenticate users asynchronously (query a database, calculate hashes, etc). Right now when extending the CredentialsAuthProvider, we are limited to do everything synchronously in the TryAuthenticate method which can lead to thread starvation.
13 votesThis has now been implemented as part of the major async upgrade in v5.10 release:
-
An example of a servicestack service supporting oAuth 2.0 authorization
Although oAuth 2.0 is supported by ServiceStack with its AuthN providers, the assumption the current model makes is that clients wishing to access the service will first authenticate through the SS service (by calling the Auth endpoint). This AuthN then caches the users identity in the session of the SS service, and uses it to verify AuthN for subsequent calls. AuthZ is then provided with the users identity fetched from session cache.
However, in more distributed models AuthN may be handled outside of the SS service, by other services, perhaps from the client directly and users identity stored elsewhere. But…
12 votesThe new Android Java Chat includes a detailed walkthrough showing how to use Facebook, Twitter and Google’s Native SDK’s to Authenticate using Access Tokens directly:
-
Add MQ Server Support for Amazon SQS
Add a MQ Server for Amazon SQS that implements ServiceStack's Messaging API: https://github.com/ServiceStack/ServiceStack/wiki/Messaging
8 votesThis is now available in the new SqsMqServer MQ server that was shipped in ServiceStack.Aws package in v4.0.48: https://github.com/ServiceStack/ServiceStack/blob/master/docs/2015/release-notes.md#servicestackaws
- Don't see your idea?