3 ms·
I definitely sympathize with having to endure the perpetual rewrites of Microsoft Web and Web service frameworks. In contrast I'd like to offer our competing S
by mythz 9y ago
I definitely sympathize with having to endure the perpetual rewrites of Microsoft Web and Web service frameworks.
In contrast I'd like to offer our competing ServiceStack framework as an alternative (commercial) platform [1] which has been in active development since 2008 that in contrast to the ever changing MS frameworks offers a single integrated Web Services [2] and Web [3] solution that has maintained the same clean, stable high-level message-based API throughout its lifetime. It was created out of frustration in the WCF/WebForms era [4] where we were the first to offer an integrated IOC, impl-free/testable multi-provider logging, caching, virtual files and configuration providers, clean/extensible typed user sessions - all using high-performance components. The first to run on .NET Framework and Mono, the first to create high-performance JSON and text serializers and fast typed ORM, which at the time they were developed were several times faster than anything MS offered [5].
All pre-dating Web API [6] and outlasting the continually changing fragmented MVC/Web API "framework in a framework" coupling as well as the rolling churn of abandoned OWIN/katana abstractions [7]. Instead we've maintained clean impl-free IRequest/IResponse interfaces which provides a lightweight abstraction over the underlying platforms concrete HTTP Request/Response abstractions where we're still the only framework where the same ServiceStack App can run on classic ASP.NET, self-hosting HttpListener (.NET Framework or Mono OSX/Linux), ASP.NET Core on .NET Core (Win/OSX/Linux) and ASP.NET Core on .NET Framework v4.7 [8].
As a result of our stable surface area we still have older v3 (BSD) Customers upgrading to our latest commercial version just so they can leverage their existing investments to run on ASP.NET Core which is relatively easy to port [9] where most of our .NET Live Demos [10] have been ported to run on .NET Core [11].
Unlike any of MS offerings, ServiceStack:
- Has never abandoned any .NET library, our libraries are continually enhanced and maintained, not rewritten or discarded
- The same Services implementation supports multiple formats out-of-the-box, can be called from multiple HTTP / MQ / SOAP endpoints, on multiple hosting options [12]
- Provides native, end-to-end typed development experience for C#, TypeScript/JS, Java, Kotlin, Swift, F# and VB.NET [13]
- Has no prejudice towards MS products, our libraries work equally well on all platforms/back-end providers, e.g. OrmLite [14] provides a high-level typed DB agnostic API across all major RDBMS's. Whilst SQL Server is our most popular dialect (courtesy of marketing in .NET), we personally prefer/use PostgreSQL and its a popular configuration to configure Unit tests to use SQLite for faster Integration tests.
- Provides clean abstractions of multiple providers for AWS [15] and Azure [16]
- Has its own flexible Auth Provider model [17] which hasn't had a schema change and never needed a "migration" whilst being continually updated to support new providers
- Has an aversion to complexity, instead of blindly adopting over-engineered solutions we develop our own cleaner alternatives. Some examples of this include AutoQuery vs OData [18] Add ServiceStack Reference vs WCF Service Reference [19], Templates [20] vs Razor [21]
- Offers a Simple and "pure Cloud App" solution for developing .NET Core Apps with built-in hot-reloading and without any compilation or builds [22]
From 2013 we've adopted a sustainable dual licensing model (commercial for closed-source or OSS/Free for OSS projects) which has allowed ServiceStack to be actively supported and maintained and continually updated with new releases [23].
Anyway I'd like to offer ServiceStack a stable competing framework for .NET and .NET Core that's being developed from a different mindset/values which has evolved gracefully over the years and stands no risk of abandonment or rewrite with many of our Customers sharing a different experience [24] than if you've had to live through the churn of MS's multiple framework rewrites.
[1] http://docs.servicestack.net/why-servicestack
[2] https://github.com/ServiceStackApps/HelloMobile
[3] http://razor.servicestack.net/
[4] https://www.slideshare.net/newmovie/what-istheservicestack-14819151
[5] http://mono.servicestack.net/benchmarks/
[6] http://mono.servicestack.net/mvc-powerpack/
[7] https://servicestack.uservoice.com/forums/176786-feature-requests/suggestions/4851342-owin-compatible-servicestack
[8] http://docs.servicestack.net/releases/v5.0.0#servicestack-mobile-and-desktop-apps
[9] http://docs.servicestack.net/netcore#exceptional-code-reuse
[10] https://github.com/ServiceStackApps/LiveDemos
[11] https://github.com/NetCoreApps/LiveDemos
[12] http://docs.servicestack.net/why-servicestack#multiple-pluggable-formats
[13] http://docs.servicestack.net/add-servicestack-reference
[14] https://github.com/ServiceStack/ServiceStack.OrmLite
[15] https://github.com/ServiceStack/ServiceStack.Aws
[16] https://github.com/ServiceStack/ServiceStack.Azure
[17] http://docs.servicestack.net/authentication-and-authorization
[18] http://docs.servicestack.net/autoquery
[19] http://docs.servicestack.net/add-servicestack-reference#advantages-over-wcf
[20] http://templates.servicestack.net
[21] http://docs.servicestack.net/why-not-razor
[22] http://templates.servicestack.net/docs/web-apps
[23] http://docs.servicestack.net/release-notes-history
[24] https://servicestack.net/#testimonials-carousel
- setquk 9y agoThanks for the write up. We evaluated ServiceStack and the license conditions, lock in risk and cost for a supported product across our estate was prohibitive. The only desirable feature was Redis sentinel but we can live without that. Honestly we can just switch parts of the system to another platform for the same cost and get an ROI over a couple of years.
- mythz 9y agoUnderstood, although I still think you should consider evaluating .NET Core (even w/o ServiceStack), the latest .NET Standard 2.0 offers a broad and compatible API Surface shared by .NET Framework v4.6.2 and .NET Core. The new msbuild project format is much more human-friendly that together with tools like `dotnet watch run` you can for the first time productively develop C# Apps with command-line tooling and a text editor like VS Code in any OS (that also sports IDE features like intelli-sense/debugging/etc - tho Rider is my personal pref / with VS Code for the SPA front-end). Being able to deploy to Linux opens up a new world of automation possibilities where you have first-class Docker support or can incrementally deploy just changed files in seconds with a single rsync + ssh supervisord bash command run with WSL - everything feels cleaner, faster and more automatable and runs flawlessly cross-platform, e.g. all our .NET Core Apps are developed on Windows and deployed to Linux. It's a different world with a much improved development model that I find vastly superior compared to traditional classic ASP.NET Framework Web Apps - which I don't see myself ever creating greenfield Apps for again.