Hacker News new | ask | show | jobs
by jeffrand 3423 days ago
I've spent the last 4 months writing a C# web service on .NET Core and deploy on Linux. We chose it because it was the right tool for the job. We're consuming a verbose WCF web service and there were some unique benefits to doing it in a .NET language.

I've been primarily using python for the last couple of years so it's been a really interesting experience. Here are some of my thoughts:

- The language itself is really mature and actually really easy to be productive in. We're using ASP.NET MVC and getting to know the right way to do things took a while though.

- It's hard to use C# without Visual Studio on Windows. I've tried Rider from JetBrains which is decent but takes SO much memory and is pretty slow to develop in. I've been using VSCode recently which is a great general editor but lacks a number of great VS features. Visual Studio for Mac doesn't work with how our app is structured for some reason (VS on Windows in a VM works fine though). I've had to fire up bootcamp a few times to use VS on Windows.

- I thought static typing was going to make it harder to do things, but I think in terms of preventing some common bugs its great. It's no silver bullet though.

- I'm developing on a mac and deploying on Linux. There's no great way to filter for .NET Core packages on NuGet (the M$ package manager). We've run into some issues trying to use versions of packages that aren't yet .NET Core compatible

- There are a number of commonly used Linux environment tools we cant use, like New Relic for APM, because they don't have support for the platform version yet

- The ORM (Entity Framework) we're using is nowhere near as good as something like SQLAlchemy when it comes to migrations. It's laughably bad.

- The testing framework is pretty good, but without real Visual Studio we're missing some great features like code coverage analysis

- Paying for a license to use a library we needed feels REALLY weird

- Overall our web service is really fast. Asynchronous programming in C# is very easy and very powerful and we've been able to make a lot of performance gains by using it judiciously.

- Its honestly hard to find answers googling around sometimes because there are so many version of .NET and 10+ year of answers to the same questions. The same can be said for a number of languages.

- Our build and deployment already handles a few other statically typed languages to making it work with .NET wasn't a big deal for us, but I can see how that could be hard

I'd be happy to answer any questions that people might have.

1 comments

.NET is highly backwards compatible, so why does "10+ year of answers to the same questions" matter to you?