The platform, tools and C# as a language are a pleasure to work with on both my Mac and Windows machines (small caveat on VS for Mac, it’s still a bit lumpy)
I’ve been using Unity for about 8 years and I’m finally confident building a backend using .Net and basking in the joy of interfacing it with Unity.
When I first started using Unity many years ago, we used to say it made making games fun again. I can say .Net Core feels the same for Web/API development.
Kudos to all those who put effort into bringing 2.0 out.
How are you hosting this? Can you share any experience? I built a Web API using .Net 4.6.1 and when it came time to host it, Azure DB, Azure Web App became quickly super expensive.
I'd be curious to know if you've find a cost-effective hosting solution for hosting .Net Core APIs in a Production-like environment for a SaaS website (which is what I'm building on the side)
Let me start off that you can host (ASP).NET Core projects just about anywhere, so using AWS is definitely a possibility. I myself use basic Azure functionality though. Here's what I do when costs are the limiting factor:
For storage, Azure used to provide a small (20MB) db instance for free in their 'free tier', but that doesn't seem to be available anymore.
As an alternative you should consider using Azure Table Storage instead of Azure DB.
While Azure DB offers a fully-functional SQL server instance, it will cost at least $5 per month to use on a basic plan. Using Table Storage (Azure's 'NoSQL' solution), on the other hand, is way cheaper. For a fairly small application with less than a hundred users my average monthly bill is $0.00. Even if it scales to a hundred thousands users (while it isn't really built for that) the costs for using Table Storage would probably still be less than a dollar per month.
Alternatively, you could use SQL Server Compact. This should be possible on Azure but I would not recommend going this route though.
As for hosting, my personal apps almost exclusively make use of the Free tier for App Services. For what my apps are doing this turns out to be efficient enough. If that's not enough, a simple Shared hosting environment is also pretty cheap at less than $10 per month.
It only gets expensive if you really need dedicated VMs running for you but even then $50 per month for a dedicated machine shouldn't break the bank if your SaaS business is actually going somewhere, plus scaling it up or out is dead simple. On average I spend more time per month babysitting the single VM I have with RackSpace where I run old (non-azure) webapps than our entire team spends managing our azure environments (DTAP) with hundreds of apps and databases.
How does it handle a lot of users hammering at the API at the same time?
.Net and .Net Core can do API services very well, and can scale very well. It doesn't mean you can't still shoot yourself in the foot easily.
For the person that asked why choose dotnet core over another technology: the only other technology I've recently used on the backend had been node which paled in comparison to core's compute performance, documentation and ease of development (TypeScript helps a ton on node, but C# on Visual Studio makes things really simple and easy).
Database level, our DBAs are very SQL Server oriented and all of our primary data stores are such, the ORM for .NET Core, Entity Framework plays very well with it. This was probably the biggest factor. It has a decent Redis library.
Application Level, it is a managed runtime, strongly typed, performant, with a strong ecosystem of libraries. We're running calculations on data so out of the box performance is important. Scaffolding models into Controllers and Views is handled very well, along with migrations. Strong facilities for serializing and parsing Json & XML. Nice interfaces for integrating email and SMS services. It has a secure, extensible authorization framework (Identity Server). It has a strong debugger, when you make a typo, you know right away, so you can cut out the vast majority of issues by the time you're running it. Easily share class libraries across projects with a private NuGet repository. A nice implementation to get metadata in System.Reflection along with intuitive handling of generics. Support for lambda expressions and functionalish behaviors. Carefully considered implementations of asynchrony and parallelism.
For front-end tools I'm not as up to speed, but browsersync is built in, so that is running without any configuration. They have automatic minification of css and javascript on build, and some tools to work with Angular, Vue, React, etc. as well as an emmet clone which allows you to use emmet shorthand when generating html.
Dev Ops, the Visual Studio IDE is really comfortable for a wide range of people. Strong integration with GitHub & Docker.
Ten years ago when I was starting out, Microsoft wasn't even a consideration when looking at toolsets, it was stodgy, expensive, and didn't run on a MacBook. Now, not only have they completely redesigned, and sold me on their development toolsets, but they've implemented an interesting alternative to AWS, and they've shifted my go-to machine from a Mac to a Windows machine. The turnaround is pretty remarkable (obviously they have remarkable resources, but still). I sort of want Michael Lewis, or someone, to write a book about the last decade at Microsoft.