I have really enjoyed using servicestack for my side project and I am hoping to start a new role where I lead the technology choices.
I am going to have to get familiar with ASP.NET core very soon and I will surely form my own opinion.
However I am interested in others thoughts…is servicestack (on .net core) still a compelling choice for you for NEW projects now that web api and mvc have merged and improved in asp.net core and it has reached 2.0 …reasons why?
It shouldn’t be Servicestack vs ASP.NET Core 2.0 as ServiceStack runs on ASP.NET Core 2.0, which is just one of the many platforms ServiceStack runs on. Unlike .NET Core, ServiceStack is only a single code-base with most packages also supporting on .NET Core 2.0 which makes porting easy as most of your existing source code will be source-compatible. This also maximizes your existing investments and knowledge transfer as there’s a lot less breaking changes new things you need to learn.
You’ll probably want to compare ServiceStack vs MVC/Web Api, but I don’t see why ServiceStack is somehow less appealing, if anything being able to use ServiceStack unique features is more appealing given the same features have more places it can run on efficiently and for the first time is able to run cleanly with other frameworks as just another handler in .NET Core’s pipeline. So you can easily use both MVC and ServiceStack together, it doesn’t have to be an either/or.
After this release we’ll be starting on v5 which will merge the .NET Core packages into the main ServiceStack packages and upgrade everything to .NET Standard 2.0 which will simplify ServiceStack .NET Core projects. After that we’ll develop more .NET Core templates and make our integrated Single Page App templates available to .NET Core projects.
ServiceStack is much more than just a framework for building REST applications. It’s a wide infrastructure of well-integrated components which allow to create complex high performance and disributed cloud-oriented web solutions. If you want to use Redis, Amazon Web Services - you can just add couple lines of code and get it working out of the box. Want to use Sql Server, Postgres or My Sql - just add serviceStack.OrmLite and you’ll get unified interface to access all of these data storages.
If you need to create client applications to your REST API, ServiceStack has API types bindings for large amount programming langages: C#, java, typescript etc. Need to create mobile clients? ServiceStack has PCL and netstandard libraries for Xamarin platform.
Also ServiceStack has large variety of plugins which allow to easily to get features which commonly used in Web applications.
And this is only small part of features which are available in ServiceStack, I think @mythz can describe pros more detaily
For me ServiceStack is great product I’d love to use for web applications which are targeted to run on Linux platform
Indeed I really mean ServiceStack vs Web API as I would most likely use ServiceStack with MVC for a new project. I believe the typed API bindings are the most compelling for any organisation that is looking to develop mobile apps that use the API. While Ormlite is also great, one could argue that there are many sufficient open source alternative microORMs.
Something else I love is how I can send and receive MQ messages in the familiar DTO-first architecture, potentially allowing the same web service to be used for MQ and HTTP API.
I chose Servicestack originally for it’s better peformance than Web API and WCF, however I know the new .NET Web API will now have awesome performance. With all the features it now has I don’t think ServiceStack on .NET Core necessarily has to beat Web API on .NET Core. Of course to make it easier for me to sell it to others it would be great to have those benchmarks available for comparison.