RehanSaeed / rehansaeed.github.io

Muhammad Rehan Saeed's Blog
https://rehansaeed.com
30 stars 6 forks source link

[Comment] Is ASP.NET Core now a Mature Platform? #82

Open RehanSaeed opened 4 years ago

RehanSaeed commented 4 years ago

https://rehansaeed.com/is-asp-net-core-now-a-mature-platform/

RehanSaeed commented 4 years ago

Jorge Jorge commented on 2018-12-18 15:55:59

Great article, I've been looking for this kind of insight for a long time, folks here are afraid of using .net core and it's relieving to read this.

RehanSaeed commented 4 years ago

Dmitry Pavlov Dmitry Pavlov commented on 2018-12-18 16:58:02

For sure. I have completely switched to it and 3rd year deal with ASP.NET Core projects only. Much easier and elegant configuration, common development tasks handling, and in general - pleasure to work with it.

RehanSaeed commented 4 years ago

Gianluigi Liguori Gianluigi Liguori commented on 2018-12-18 21:33:08

Amazing article. I was already convinced to answer 'YES', after this, it is a '101%' yes. :)

RehanSaeed commented 4 years ago

Nirman Doshi Nirman Doshi commented on 2018-12-19 06:47:14

Nice article, and overview of all aspects are covered. This means, .NET core is now more than ready ever for large enterprise application. Thanks

RehanSaeed commented 4 years ago

Vincent Jenks Vincent Jenks commented on 2018-12-19 14:32:13

Not really fair to throw Node under the bus in your comparisons. I've been a dotnet dev since it has been a thing, and I still love it, but I've had wonderful results with Node the past few years. Much faster dev cycle, much easier to maintain and deploy, and the biggest open source package repository known to software development. It's great! I think Core and dotnet in general, still has a long way to go. I hope it catches up to compete! Would love to work with it professionally, again.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2018-12-19 14:38:57

Not really fair to throw Node under the bus in your comparisons. I've been a dotnet dev since it has been a thing, and I still love it, but I've had wonderful results with Node the past few years. Much faster dev cycle, much easier to maintain and deploy, and the biggest open source package repository known to software development. It's great! I think Core and dotnet in general, still has a long way to go. I hope it catches up to compete! Would love to work with it professionally, again.

That was not my intention at all, totally my fault if that is what is coming across. There are things Node can do that .NET can't. In fact, I think I mentioned that myself and others have ported JavaScript/Node code to C# because it didn't exist on the .NET platform. As you say, the fast get up and go factor with Node is really one of it's great selling points. I just didn't mention it because it wasn't the subject of the post.

RehanSaeed commented 4 years ago

Dan Dan commented on 2018-12-19 16:57:32

For sure. I have completely switched to it and 3rd year deal with ASP.NET Core projects only. Much easier and elegant configuration, common development tasks handling, and in general - pleasure to work with it.

Can you explain please more, what did you feel migrating your existing applications from older versions of the .Net Core to the newer ones till these 3 years

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2018-12-19 17:01:47

Can you explain please more, what did you feel migrating your existing applications from older versions of the .Net Core to the newer ones till these 3 years

Honestly, it was a pain. Older versions of .NET Core changed a lot more than say 2.2 which was released recently. Moving forward, there is less churn and breaking changes, so now is a good time to use .NET Core.

RehanSaeed commented 4 years ago

Mathias Raacke Mathias Raacke commented on 2018-12-19 18:33:20

There actually is a project for serving precompressed static files: https://github.com/AnderssonPeter/CompressedStaticFiles :)

RehanSaeed commented 4 years ago

Kaushik Roy Chowdhury Kaushik Roy Chowdhury commented on 2018-12-20 00:32:28

Hi Rehan,

A very insightful article from a person who knows the subject and what he's talking about. I have come to like ASP.Net Core after having implemented several DIY projects from asp.net website of Microsoft and putting these on GitHub.

Personally I have also been tutoring ASP.Net Core on my YouTube channel (https://www.youtube.com/c/KaushikRoyChowdhury-deveducate) on specific playlists, with video tutorials made mainly out of the ASP.Net Core tutorials documented by ASP.Net Core group of collaborators. They are quite supportive as on date.

However I still consider myself at a beginner (having taken it from 2.0 version on) level and I shall also like to take my knowledge in ASP.Net Core to a specialized level.

Any advice will be highly regarded.

RehanSaeed commented 4 years ago

Steed Steed commented on 2018-12-20 07:30:30

You should deff look at nswag. The idea of centralized models between all your microservices including your angular/js frontend has long been a holy grail that devs quested for. Now with nswag, this promise seems to be true.

RehanSaeed commented 4 years ago

Ahmad Mozaffar Ahmad Mozaffar commented on 2018-12-20 09:48:21

Very nice article Keep going

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2018-12-20 10:31:54

There actually is a project for serving precompressed static files: https://github.com/AnderssonPeter/CompressedStaticFiles :)

Thanks, I'll take a look.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2018-12-20 10:33:48

Hi Rehan,

A very insightful article from a person who knows the subject and what he's talking about. I have come to like ASP.Net Core after having implemented several DIY projects from asp.net website of Microsoft and putting these on GitHub.

Personally I have also been tutoring ASP.Net Core on my YouTube channel (https://www.youtube.com/c/KaushikRoyChowdhury-deveducate) on specific playlists, with video tutorials made mainly out of the ASP.Net Core tutorials documented by ASP.Net Core group of collaborators. They are quite supportive as on date.

However I still consider myself at a beginner (having taken it from 2.0 version on) level and I shall also like to take my knowledge in ASP.Net Core to a specialized level.

Any advice will be highly regarded.

I don't think any developers who blog make a living from it. At best it can help differentiate you from other candidates in a job interview. I write blog posts because it can be fun, interacting with readers is fun. I also come back and read my own posts sometimes to see how something is done.

In terms of advice, blog frequently and have a mix of interesting content. I'm not sure there is more advice I can offer.

Hope that helps.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2018-12-20 10:34:26

You should deff look at nswag. The idea of centralized models between all your microservices including your angular/js frontend has long been a holy grail that devs quested for. Now with nswag, this promise seems to be true.

Will take a look at NSwag, definately feels like that is where the community is moving.

RehanSaeed commented 4 years ago

Ashmeet Singh Ashmeet Singh commented on 2018-12-21 03:39:39

Why is dotnet core propagation in startups so low? Correct me if this statement is incorrect. What is your take on it?

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2018-12-21 09:34:14

Why is dotnet core propagation in startups so low? Correct me if this statement is incorrect. What is your take on it?

Probably a number of factors:

  1. Some people still think about the old Micro$oft and it's bad ways. In the past Microsoft has also not been very good with open source.
  2. .NET Core is still fairly new and gaining in popularity as compared to other frameworks which have been around for longer.
  3. There may be a negative association with the old .NET Framework which is considered heavy and slow.
  4. Microsoft gives incentives to startups. Maybe it should do this more.
  5. Universities don't teach .NET Core, they prefer Java and C++ in my experience due to the open and free nature of the tools used with those languages. This will literally take a generation to change as new professors are trained and enter the workplace.
  6. Is .NET Core cool? I don't know. Go and Rust seem to be what's 'cool' at the moment.
  7. .NET has an image problem, people think enterprises use it.

Some reasons off the top of my head. Not sure if any are true. Probably missing quite a few reasons.

RehanSaeed commented 4 years ago

Shahdat Hosain Shahdat Hosain commented on 2019-01-13 00:53:27

I would add nopCommerce in "Who is using it?" using it section. nopCommerce is open source one of the popular e-commerce platform which is built on ASP.NET Core.

RehanSaeed commented 4 years ago

rod macdonald rod macdonald commented on 2019-01-13 01:07:27

ASP.NET Core will be a mature platform when .NET Core has embraced WebAssembly and the future of a unified XAML and HTML UI is clear.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2019-01-14 08:52:26

ASP.NET Core will be a mature platform when .NET Core has embraced WebAssembly and the future of a unified XAML and HTML UI is clear.

When Blazor (which uses WebAssembly) came out I was really excited (I did a lot of WPF/Silverlight/Windows Phone 7, 8/UWP/XAML a few years ago). However, I now suspect that it won't catch on outside of the enterprise companies. That's not to say that Blazor is not cool and the XAML developer in me doesn't love it, but I don't think it will be as wildly popular as some people think.

Why? Well, in the real world when you build a site using say React or Vue, you also use a bunch of other libraries to get things done and right now Blazor simply does not have that massive pool of open source projects available to it. Also, you know what other language can be compiled to WebAssembly? JavaScript! There is already a lot of web based software built in JavaScript, while all other WebAssembly languages (like Rust which seems to be the most popular) simply do not, they just need to flip a compiler switch and they can compile to WebAssembly.

I've thought about blogging about this but I don't want to come off so negative...

RehanSaeed commented 4 years ago

Tony Tony commented on 2019-01-14 18:07:02

My time is too valuable. I'm waiting for things to stabilize. When 3.0 is released, I will take a look at it. I look forward to the performance improvements.

RehanSaeed commented 4 years ago

Keith Thomas Keith Thomas commented on 2019-01-23 21:32:37

The poor souls who wrote Objective C, have jumped to Swift.

Poor souls? Objective-C jobs pay very well actually.

"Well, I'm familiar with Node.js and the situation there is bordering on silly. Packages are very unstable and constantly being rev'ed. Keeping up and staying on latest is a constant battle almost every day."

Why would anyone want to keep Node.js and all NPM packages up to date in a project almost every day? Maybe every few months at most, unless there are security issues reported in a package and you are required to install a newer version of it. If a JavaScript project is stable and working then there is not much to be gained from constant updates.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2019-01-24 09:47:41

My time is too valuable. I'm waiting for things to stabilize. When 3.0 is released, I will take a look at it. I look forward to the performance improvements.

Everyone has a different level of stability they require and their own risk profile. That's a valid decision.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2019-01-24 09:50:29

The poor souls who wrote Objective C, have jumped to Swift.

Poor souls? Objective-C jobs pay very well actually.

"Well, I'm familiar with Node.js and the situation there is bordering on silly. Packages are very unstable and constantly being rev'ed. Keeping up and staying on latest is a constant battle almost every day."

Why would anyone want to keep Node.js and all NPM packages up to date in a project almost every day? Maybe every few months at most, unless there are security issues reported in a package and you are required to install a newer version of it. If a JavaScript project is stable and working then there is not much to be gained from constant updates.

Poor souls? Objective-C jobs pay very well actually.

There are well paid developers still writing COBOL or working with mainframes (I know one of these). They are well paid but a job can be well paid and still be a bit rubbish.

Why would anyone want to keep Node.js and all NPM packages up to date in a project almost every day? Maybe every few months at most, unless there are security issues reported in a package and you are required to install a newer version of it. If a JavaScript project is stable and working then there is not much to be gained from constant updates.

Security vulnerabilities are common on NPM, probably due to the shear number of packages involved. New features, better performance, faster...stronger...longer, there are a lot of reasons to be upgrading more then every few months. Your mileage may vary.

RehanSaeed commented 4 years ago

Roger Roger commented on 2019-02-19 04:29:03

I think its overly complex. Just making a simple input form post has turned into a weekend project of frustration, all their tutorials assume you want to use the entity framework and other related Microsoft APIs, any deviation from their 50 page tutorial (Spread out over multiple webpages) results in banging your head against a wall.

In the end you're left with a simple page that can list and submit records. ::slow clap::

From an outsiders perspective, it seems like a great unintuitive mess.

The simple act of binding client/server data requires so much fuss and hand holding at every step, segmenting a simple page into different elements is a huge pain in the ass if you want to do anything beyond just showing basic data, their automated naming structure system boggles the mind (Why would you place logic based on filenames in 2019?), security seems to be off by default on everything (God forbid you forget an attribute somewhere), the API seems to be moving so fast that tutorials made just last year is already out of date (Do I use partial views or view components? If I use a view component to post data I have to implement the receiving function in the view and not the component? Then what is the point in compartmentalizing it?).

If adaptation rate seems slow, I think it might be because it just seems like a huge mess.

Productivity is king. At least from my perspective; asp.net core does not garner productivity.

Which is a shame, because I do love the C# language and Visual Studio.

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2019-02-19 09:16:37

I think its overly complex. Just making a simple input form post has turned into a weekend project of frustration, all their tutorials assume you want to use the entity framework and other related Microsoft APIs, any deviation from their 50 page tutorial (Spread out over multiple webpages) results in banging your head against a wall.

In the end you're left with a simple page that can list and submit records. ::slow clap::

From an outsiders perspective, it seems like a great unintuitive mess.

The simple act of binding client/server data requires so much fuss and hand holding at every step, segmenting a simple page into different elements is a huge pain in the ass if you want to do anything beyond just showing basic data, their automated naming structure system boggles the mind (Why would you place logic based on filenames in 2019?), security seems to be off by default on everything (God forbid you forget an attribute somewhere), the API seems to be moving so fast that tutorials made just last year is already out of date (Do I use partial views or view components? If I use a view component to post data I have to implement the receiving function in the view and not the component? Then what is the point in compartmentalizing it?).

If adaptation rate seems slow, I think it might be because it just seems like a huge mess.

Productivity is king. At least from my perspective; asp.net core does not garner productivity.

Which is a shame, because I do love the C# language and Visual Studio.

A lot of what you said resonates. Productivity in general has gone down. Learning all this stuff took me considerable time. Unfortunately, the web is complex and that complexity is only growing at a fairly rapid rate. Still, it keeps us in a job! Some docs do show the use of EF Core but I'll forgive them that. I think Microsoft has really upped it's game with the docs. We now have some of the best docs in the industry.

Sounds like most of the trouble you are having is with server side rendering of HTML i.e. Razor pages or MVC views. I personally don't use that stuff and only use ASP.NET Core for API's. The industry has moved on to SPA's or even server rendered SPA's like Nuxt.js (based on Vue.js which I recommend) or Next.js (based on React.js).

As for security, ASP.NET Core is way more secure than it used to be but security is an ever lasting cat and mouse game, so this is always going to be a complex moving target.

As for adoption rate, take a look at the StackOverflow developer survey, adoption is growing very quickly and it's a much loved framework that people enjoy.

RehanSaeed commented 4 years ago

Luca Gabi Luca Gabi commented on 2019-03-02 19:44:54

Hi, I have a question if I may: how come Asp Net Core has no projects to speed up development, is it to young, maybe ?

For example PHP has a number of such projects that generate CRUD from a defined model and also have ready made user and roles management fetures and code modules: https://laravelvoyager.com/ https://pyrocms.com/

This is a reason for many to chose PHP Laravel (blade viewengine) framework over Asp Net Core MVC (razor viewengine).

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2019-03-02 20:37:36

Hi, I have a question if I may: how come Asp Net Core has no projects to speed up development, is it to young, maybe ?

For example PHP has a number of such projects that generate CRUD from a defined model and also have ready made user and roles management fetures and code modules: https://laravelvoyager.com/ https://pyrocms.com/

This is a reason for many to chose PHP Laravel (blade viewengine) framework over Asp Net Core MVC (razor viewengine).

There are quite a few project templates available (I even author some called Dotnet Boxed). If you use Visual Studio, you can use the built in scaffolding to generate Controllers and action methods that do CRUD around some given model. Regarding role management, unclear what you're asking since I'm not familiar with Laravel but it's pretty trivial to setup roles and auth. Also we have a world class open source product in IdentityServer4 for OAuth and Open ID Connect.

It is still a fairly young project. It does take time for third party open source projects which boost productivity to spring up but it's happening slowly and surely.

RehanSaeed commented 4 years ago

Trung Tran Trung Tran commented on 2019-03-03 11:44:46

What a great post! I have solved many of my confusions before. Many thanks. .NET Core is an amazing thing I think, but there are too many things to learn nowadays so that will be a headache :) Btw, can you advise me some learning paths as a .NET Core Backend Dev. I'm trying the following things:

RehanSaeed commented 4 years ago

Muhammad Rehan Saeed Muhammad Rehan Saeed commented on 2019-03-03 12:13:27

What a great post! I have solved many of my confusions before. Many thanks. .NET Core is an amazing thing I think, but there are too many things to learn nowadays so that will be a headache :) Btw, can you advise me some learning paths as a .NET Core Backend Dev. I'm trying the following things:

  • Web Api
  • Security I'm a bit hesitant about the next steps: Dockers or something ... Love hearing your advices!

Sign up for a PluralSight account and/or read every page of the ASP.NET Core docs because they are really great. Docker is now the best way to deploy an API or website, so definitely also worth learning.

RehanSaeed commented 4 years ago

Trung Tran Trung Tran commented on 2019-03-04 09:35:14

Sign up for a PluralSight account and/or read every page of the ASP.NET Core docs because they are really great. Docker is now the best way to deploy an API or website, so definitely also worth learning.

Thanks. I will try soon.