14 ms·
I have been absolutely loving .NET Core since I started using it this spring. Currently running two applications in production, one on a Windows Server with IIS
by jefe_ 9y ago
I have been absolutely loving .NET Core since I started using it this spring. Currently running two applications in production, one on a Windows Server with IIS and another on a Centos 6 server with Docker. Docker was surprisingly easier than configuring Web Deploy to IIS. There have been a few things that are oddly documented, but generally documentation has improved over these months as user base has grown. They have some great videos on Microsoft Virtual Academy. Early on it felt like many packages weren't compatible (particularly PDF & Image tools), but as time has progressed many old packages have been converted to .Net Core. One project I converted was in PHP before, so I can't accurately speak to performance (obviously feels fast), but development speeds have increased greatly with IntelliSense vs a text-editor. Another project, I had a C++ console application that sort of needed to become a web application but wasn't worth the effort of rewriting. In relatively short order, I had a .Net Core web application using interop services to call the dll. I was later chided by some C# purists that it could have been rewritten in C#, but it was still cool to see how easy it was.
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.
- Yhippa 9y agoWhy did you select .NET Core versus other technologies?
- jefe_ 9y agoIt made sense throughout the whole stack. We're right on the edge of small-midsized, so we need to find technologies which our people know or can easily learn. 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.
- strayamaaate 9y agoCouldn’t agree more. I’ve been using .Net Core 1.1 daily for the last couple of months building out a reasonably large Web API for a game. 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.
- dep_b 9y ago> building out a reasonably large Web API for a game. How does it handle a lot of users hammering at the API at the same time?
- tracker1 9y agoFor the most part there are similar caveats to .Net as anything else... you want to remain as stateless as possible at the request level, and you want to avoid blocking on IO as much as possible. There are async versions of most things, and you just have to use them... It's easy to do things that will sink you. .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.
- justboxing 9y ago> building out a reasonably large Web API for a game. 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)
- Huppie 9y agoI'm not OP but maybe I can chime in. My employer runs a fairly large application platform on Azure and I've used Azure for personal projects a few times. 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.
- disease 9y agoI've had a similarly positive experience writing a CMS in dotnet core that currently runs my blog. Like you said, being able to stick everything I need in a Docker container makes life so much more easy then it was with ASP.NET in the past. 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).