Although ServiceStack is an opinionated web service framework (i.e. includes most components required to make high-performance web services), each feature is built around pure/clean, dependency-free C# interfaces enabling the use of alternate, pluggable, xml/config-free and testable C# components.
By default ServiceStack includes high-performance replacements for ASP.NET's Session, Caching, Logging, Authentication, Membership and Configuration providers yielding config-free, testable and mockable alternatives that can be hosted in or outside of an ASP.NET web host.
Whilst any providers contributed by the community that require any external dependencies are kept here (with links to their NuGet packages):
ServiceStack's built-in Authentication and Authorization plugin provides an extensible and pluggable model supporting multiple caching providers (for fast pre-request session access) as well as multiple datastore providers for long-term persistance of User Registration and Authentication information.
Caching Providers (ICacheClient)
- In Memory:
MemoryCacheClientin ServiceStack - Redis:
RedisClient,PooledRedisClientManagerandBasicRedisClientManagerin ServiceStack.Redis - Memcached:
MemcachedClientCachein ServiceStack.Caching.Memcached - Azure:
AzureCacheClientin ServiceStack.Caching.Azure - created by Manuel Nelson - Amazon:
DynamoDbCacheClientin ServiceStack.CacheAccess.AwsDynamoDb - created by Mike Pugh
User Auth Repositories (IUserAuthRepository)
- OrmLite:
OrmLiteAuthRepositoryin ServiceStack - Redis:
RedisAuthRepositoryin ServiceStack - In Memory:
InMemoryAuthRepositoryin ServiceStack - Mongo DB:
MongoDBAuthRepositoryin ServiceStack.Authentication.MongoDB - created by Assaf Raman - NHibernate:
NHibernateUserAuthRepositoryin ServiceStack.Authentication.NHibernate - created by Joshua Lewis
As the original compression libraries in .NET 2.0 (they're better now) were both slow and yielded in-efficiently large results, we've enabled adapters to plug-in alternative compression libraries. The ServiceStack.Compression project provides GZip and Deflate compression adapters for the excellent ICSharpCode libraries which you can enable ServiceStack to use with:
StreamExtensions.DeflateProvider = new ICSharpDeflateProvider();
StreamExtensions.GZipProvider = new ICSharpGZipProvider();