Is ASP.NET Core Now a Mature Platform?
rehansaeed.com
rehansaeed.com
* Running EF Core migrations against postgres on startup. I wasn't able to google a solution to this. I hacked around this by deploying an init container with a migrate.sql script but I expect that'll bring me problems later on.
* Let's Encrypt. Found an archived package on GitHub, I expected more maturity.
* Not very easy to ascertain the state of the setup, things need to be registered in a certain order for them to work (UseDefaultFiles & UseStaticFiles f.i.). This would be made easier by me having more experience with the stack or better docs, still a waste of time.
https://github.com/fluentmigrator/fluentmigrator/issues
I am curious about your encrytion scenario and why did .Net core fall short.
Re encryption, I was looking for a way to do automatic TLS via https://letsencrypt.org/. Closest I could find was https://github.com/natemcmaster/LetsEncrypt which is archived.
This point drives me mad. Only after running into errors and reading SO you discover some methods should be called before other. Given how many there is, it's difficult to know if the whole order is done right.
Google cache cos it appears the site is down at the moment :(
I mainly develop on Ubuntu using VS Code & Docker.
https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcor...
https://docs.microsoft.com/en-us/aspnet/tutorials
Both of which provide more depth than just "Hello World".
And some free trainings where you can create as many classes as you wish.
Also, I develop on MacOS using VS Code most of the time.
Though you can basically use any editor.
VSCode works, but I enjoy Rider.
Can't stand Windows, and Visual Studio is pretty terrible as well (IMHO), it always freezes on my beefy hardware (32 core threadripper, oodles of RAM, NVME, etc).
FWIW, VS freezes for me come mostly from Resharper. I'm still debating whether the small productivity gain is worth it. Pretty much the only thing I'm really missing without Resharper is the smart completion which VS doesn't do well on its own.
It's kinda funny, though, how Jetbrains touts Rider's performance because the Resharper engine runs in a separate process. Something that Microsoft has recommended VS extensions that do a lot of hefty processing to do since VS 2008 ...
.NET Core is great, but I would continue to run it on .NET Framework for now.
- Autofac - Automapper - EntityFramework Core - MassTransit - MediatR - Moq - Newtonsoft.Json - NodaTime - NUnit - Quartz.Net - RabbitMq.Client - RestSharp - Serilog
The only thing we use .NET Framework applications for is Windows services through our use of TopShelf since it does all the heavy lifting surrounding windows service's lifetime management. All our other apps are .NET Core though.
We build a lot of CQRS / DDD style applications, and the above list covers us off pretty well for our architecture that uses RabbitMq for messaging.
Would be interested to know which packages you are missing?
So far, Oracle only bothered to port a subset to their .NET Core managed driver.
However there are some features like UDT, distributed transactions and specific cipher modes that are only available on the native driver.
Due to this, I have already done a .NET => Java port of a server application, because the customer required migration to UNIX servers and the JDBC driver had 100% feature parity with what we required.
Switching to other RDMS is not an option on Oracle heavy enterprise shops, it has plenty of nice features at scale and UI tooling.
I've done a few projects using ASP.Net Core and they've used all of those
using DotEnv = dotenv.net.DotEnv;
But I wish the usage for the default load scenario was better. Here's how I'm using it. public static void Init()
{
var levelsToCheck = 4;
var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory());
for (; currentDirectory != null && levelsToCheck > 0; levelsToCheck--, currentDirectory = currentDirectory.Parent)
{
foreach (var fi in currentDirectory.GetFiles(".env", SearchOption.TopDirectoryOnly))
{
DotEnv.Config(false, fi.FullName);
return; // found .env file
}
};
}The only negative things I hear is when people assume it is meant to be internet facing and looking for out of the box load balancing or some such. For it's intended purpose behind a reverse proxy like nginx, I've had zero issues or missing features.
I've used flask, django, rails..and even Gorilla (go) none has loadbalancer.
I usually put memory limit to the docker instance with .net core. After doing this its been running great. stable, lightning fast!
It's not really that intuitive to use, compared to the offerings from languages like Go or Python. At least at that time it seemed like there was a lot of boiler plating code, that you wheren't really expected to understand, and the documentation really only go you to the point where things sort of worked, but you didn't really know why or how you where suppose to move on.
https://github.com/dotnet/cli/issues/3093#issuecomment-44343...
I suggest anyone interested reads the entire thread.
It's growing but not that fast.
C# is very verbose compared to Ruby. You'll find it hard to get Rails level of productivity with Asp.net core.
Why? Because there is no sidekick, actionmailer, or asset piplining, turbolinks.
Stuff like, "has many, through" (Rails) relationship isn't supported in entity framework. If you plan to use postgres, you'll run into many issues.
You end up dealing with ugly DbContext for setting up basic models. And DbSets to enable tables for your models. All this ugly stuff is thrown in your face.
There are no tutorials on how to add Vuejs or React to your asp.net core project.
Postgres is simply treated as "not important" and you are expected to use mssql.
PostGres + Entity Framework Core is mostly a hack. You run into soo many issues that you'll be forced to leave Postgres and go for mssql.
Need image processing libaries? Good luck with that. There is simply no support.
The only thing you've going for you is, static typing and cool IDE support.
I tried asp.net core for several months and went back to Rails.
Lookup ActiveMerchant and how many payment gateways it support, there is nothing like that in Asp.net core.
Don't get me wrong everything is possible in asp.net core but you'll have to hack together your own solution, there is no standard way of doing things like there is in Rails.
There is a very good reference project: Discource if you want to see the potential of Rails.
Where can i find reference project for asp.net core? There are no good books either.
Only tutorials available teach basic stuff like middleware, rest api without authentication.
Heck all that can be done in Flask in 10 lines.
> There are no tutorials on how to add Vuejs or React to your asp.net core project.
This is a remarkable complaint to make. There are literally template starter projects for react/angular when you go to file -> new project. If you choose not to use a starter template, adding your own frontend is trivial: place the built frontend in wwwroot and have an MVC endpoint that returns index.html. I’m not sure how this could be any easier, and it makes me wonder if you ever used .NET core at all.
> Postgres is simply treated as "not important" and you are expected to use mssql. PostGres + Entity Framework Core is mostly a hack. You run into soo many issues that you'll be forced to leave Postgres and go for mssql.
This is simply false. I have used Postgres with .NET core extensively and have never been forced to fall back on SQL server. Exactly what are these serious issues?
> Only tutorials available teach basic stuff like middleware, rest api without authentication.
Are you complaining about setting up authentication? It is easy to add JWT support in startup.cs and then secure endpoints via attributes.
> You end up dealing with ugly DbContext for setting up basic models. And DbSets to enable tables for your models. All this ugly stuff is thrown in your face.
What’s ugly about it? The DbContext represents a particular database connection and a DbSet represents an entity within that database. That’s an entirely rational way to represent the data layer.
> Need image processing libaries? Good luck with that. There is simply no support.
Another remarkable complaint to make. Nothing apart from OpenCV, ImageSharp, the native System.Drawing package, and this entire list of options: https://blogs.msdn.microsoft.com/dotnet/2017/01/19/net-core-...
You should really stop making claims about .NET core that are demonstrably false.