14 ms·
I spent some time learning dotnet core this year and with the slow-grind progress Microsoft has made it really does look like the technology stack might start t
by tmpz22 6y ago
I spent some time learning dotnet core this year and with the slow-grind progress Microsoft has made it really does look like the technology stack might start to replace Java, Go, Rails, NodeJS, over the next decade. You can really feel Microsoft's experience in language development and enterprise software development coming together to provide better ecosystem ergonomics than other frameworks and toolchains.
Specifically I'm talking about tools like LINQ, dotnet core libraries, VS and VS Code integration, and the standard library and common library packages.
I still think it has a long way to go but its still a huge potential upside, which is to say nothing of how its coming to dominate the games industry as well.
- dmitryminkovsky 6y agoNot sure this will happen given Node/Typescript/VSCode (also Microsoft, fun how they’ve taken over Node right?) but the dotnet platform sure is rich. I had the opportunity to work with it this year and I found it to be very nice! Not surprised to see it gaining more and more momentum with libraries like this.
- tmpz22 6y agoThe coup de grace is functioning and sane server side rendering of ReactJS apps by c# applications. If Microsoft can make that easy and simple it will lead to a huge churn as many software companies replace less efficient nodeJS applications for that use case. Typescript will always have its placed client-side but there will be huge user benefits if we can have more and better server side rendering.
- dmitryminkovsky 6y agoI really enjoy how TS is the same on server and client. The C# runtime is way richer, but I like the TS type system more. Not sure I’d want to use different platforms on backend/front end even if C# did server rendering like React.
- manigandham 6y agoYou should try Blazor first: https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor
- cutler 6y agoNot sure what you mean by different platforms. Did you mean languages as React and Node are separate entities? Personally, if I had to hire a developer the minimum requirement would be competence in JS/React and a statically-compiled server-side language. JS-only developers are to be avoided.
- nullsense 6y agoOut of curiosity what if I'm good, say above average, with C# backend, but never used React commercially, though have used Vue on personal projects for the last several years, but consider my JS a bit of a weak spot?
- cutler 6y agoIf was thinking more about full-stack development so professionally you'd need some commercial exposure with JS.
- dmitryminkovsky 6y agoDifferent platforms meaning JavaScript vs C# vs Java and their respective runtimes. Yes server and client JS are not the same runtime but they are easy enough to smooth over that they are practically “the same” Yes a JS only developer is probably lacks certain experience but I am well versed in Java and have had solid exposure to C#, like they them both a lot, but today would prefer to use TS on backend and front end for any small project. The fact that I can share types and validation code (Joi) on both server and client is really powerful in my opinion. There’s only so much you have time to focus on when you’re working on a small project. Context switching two platforms is a big impediment in such cases.
- JamesBarney 6y ago
- manigandham 6y agoYou can already do that by running Node with SSR (or any npm/js code) in .NET using Node Services [1] or use ReactJS.NET that packages everything for you [2]. But Microsoft won't officially do any more since they have Blazor which lets you run C#/.NET in the browser with both client-side WASM and server-side SignalR/websocket running modes. It's much more advanced and functional than React already. [3] 1. https://channel9.msdn.com/Events/ASPNET-Events/ASPNET-Fall-Sessions/ASPNET--Spa https://channel9.msdn.com/Events/ASPNET-Events/ASPNET-Fall-S... 2. https://reactjs.net/ https://reactjs.net/ 3. https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor
- dmitryminkovsky 6y agoVery cool, thank you for sharing. > It's much more advanced and functional than React already. I’m sure this is true, but I can’t imagine there’s much of a community around it? The thing is with React you have a huuuuuuge community and ecosystem. You can share code with React Native. It’s so deep...
- manigandham 6y agoWell Blazor is new so React will have a bigger community, however there are millions of C# devs around the world and they can be instantly productive with Blazor so it shouldn't be that far behind, if at all. While React's ecosystem might be huge, the quality trails off quickly and it's pretty messy even with the popular stuff, much of which is to add functionality that every app needs but isn't included in React itself. Blazor already comes with everything included, but can also use the full power of C#, the massive standard library, plenty of 3rd-party packages, and the tight integration with the backend. I suggest looking at some of the Blazor presentations (by Steven Sanderson the original creator) to get a sense of just how quickly you can build: 1. https://www.youtube.com/watch?v=Khn7sDUSEJM https://www.youtube.com/watch?v=Khn7sDUSEJM 2. https://www.youtube.com/watch?v=QnBYmTpugz0 https://www.youtube.com/watch?v=QnBYmTpugz0 3. https://www.youtube.com/watch?v=kLhoRyLxwAE https://www.youtube.com/watch?v=kLhoRyLxwAE
- 6y ago
- Thaxll 6y agoI'm pretty sure net core will remain for a long time in the enterprise world before making anything in the more open source / general public. It's 2020 I can't name a single server side known application built in net core.
- brchn 6y agostackoverflow
- stepsrabbit 6y agoNot super popular outside the cryptocurrency niche but BTCPay (https://github.com/btcpayserver/btcpayserver https://github.com/btcpayserver/btcpayserver) is a good example and has been around for a while.
- bishalb 6y agohttps://customers.microsoft.com/en-us/story/tencent-telecommunications-dotnetcore https://customers.microsoft.com/en-us/story/tencent-telecomm...
- Rapzid 6y agoI'm incredibly interested in this. A daydream of mine is to create OSS infrastructure/SRE systems in .Net. F# if it makes sense. <3 F#.
- manigandham 6y agoSome links to help: 1. https://github.com/quozd/awesome-dotnet https://github.com/quozd/awesome-dotnet 2. https://github.com/thangchung/awesome-dotnet-core https://github.com/thangchung/awesome-dotnet-core 3. https://dapr.io/ https://dapr.io/ 4. https://www.pulumi.com/blog/dotnet-preview/ https://www.pulumi.com/blog/dotnet-preview/
- FridgeSeal 6y agoF# is nice, but always felt like the ignored child whenever I've used it. If you like F#, why not just reap all the functional benefits and write it in Haskell, or Rust which has (arguably) just as strong a functional influence (minus the syntax) as F# does, with the benefit of a stronger type system, and better performance, and these days, probably a bigger community than F# as well.
- boogies 6y ago> its coming to dominate the games industry as well Really? I was of the impression that Unity C# is the old, established player in this space, while Godot (which supports C# but doesn’t force it at all) is growing among hobbyists and indies and may eventually pass the current popularity of Blender in VFX and go on to dominate the games industry in a few years or a decade.
- greggman3 6y agoThat's seems like very wishful thinking. Why would you assume Godot would ever be able to truly complete with Unity (or Unreal). It's got 1/10th the features and probably 1/100th to engineers. Also less support, less people using it, less people teaching it, less people creating tutorials for it, etc... etc...
- boogies 6y agoIs that very different from Blender 2½ decades ago? It seems to be gaining more features, support, users, teachers, tutorials, etc. over time. Anecdotally my YouTube filter bubble has lots of small indie creators who’ve switched from Unity to Godot and are creating tutorials for it. Why would you assume Unity (and Unreal, which IUUC has little to do with .NET) will keep their mindshare and Godot not catch up?
- manigandham 6y agoIt already has replaced those (or prevented them from ever catching on) in thousands of companies. .NET was always fast and highly productive, and the last 5 years of .NET Core have taken it to the next level. The language stack is unmatched in terms of how quickly you can make a high-quality product across many different platforms.
- tempfs 6y agoFast? #lolno
- manigandham 6y agoDo you have some evidence or more substantive feedback? Because I can show you the techempower benchmarks which have it in 1st and 3rd place at over 7 million rps: https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=plaintext https://www.techempower.com/benchmarks/#section=data-r19&hw=... I built an adtech platform doing millions of requests in 2010 in dotnet. Then I did it again doing billions of requests in 2012. Nothing else at the time other than java could come close with the same amount of effort.
- oaiey 6y agoTo be fair: .NET (Framework) was not fast in the past. It was not. It was really slow. It was exclusively on Windows, IIS, some worker module, piped through a Webforms optimized System.Web dll and most of that code not optimized for memory usage etc. But that is over with modern .NET Core. Nothing of above is valid anymore and the result is wicked fast as your link shows as evidence.
- bovermyer 6y agoDisregarding popularity, why should I switch to C#/dotnet from PHP/Go/Ruby?
- manigandham 6y agoVery fast, statically typed, clean language design with features like LINQ for data operations and fantastic async support, cross-platform, comprehensive standard library, advanced ORMs like EntityFramework and NHibernate, easy deployment including docker/self-contained/single-file, build anything from web/mobile/desktop apps, best-in-class IDE and tooling, Blazor UI component framework running .NET in the browser, solid gaming support with Unity, etc. There's nothing quite like it, and I find myself coming back to it and doing everything faster. The only downside would be a smaller open-source ecosystem (for many various reasons) so you don't get all the "cool" libraries, although you there are more than enough to solve any problem.
- mattferderer 6y agoI think the web front end could be a huge multiplier for them. It's going to take a few years for Blazor to catch up & have a chance to surpass the Node ecosystem but they have a good shot. They need more/better front-end specific tooling & a quicker feedback loop with hot reloading. There is some hope that hot reloading will make it in for next November's .NET 6 release. As Wasm & Blazor improve, I think it has the potential to be what people like about TypeScript but with less setup required or worries about missing dependency support.
- manigandham 6y agoWe're already building with Blazor using the server-side model and it's pretty incredible. We can get massive amounts of functionality built in minutes because it's just .NET, especially with all the existing backend logic easily shared and used by those components (via signalr). The WASM mode is still a little rough but it's rapidly improving. Hot reloading will definitely make a big difference there when it arrives.
- 6y ago
- yyyuutt 6y agoI spent 10 years doing C# on a big system and love it. However it never got the momentum Java did so I've switched. I prefer C# over Java, I hate a lot of Spring attribute/factory/builder craziness, but Java has so much more wider support I would always choose it first now.
- spaetzleesser 6y agoSame here. The Java ecosystem has almost everything you could ever imagine needing so it’s a safer bet. Maybe it’s not as shiny but it works. I don’t understand why MS doesn’t provide the ability to call Java code from .NET. It would open up a lot of libraries to the platform. Right now there are a lot of libraries that are first class in Java but have either no or only half baked .NET ports.
- cutler 6y agoWhich libraries? Could you give some examples?
- kinjba11 6y agoJust off the top of my head, there are .NET copies of: - Akka https://github.com/akka/akka https://github.com/akka/akka - Lucene https://github.com/apache/lucene-solr https://github.com/apache/lucene-solr - Aeron https://github.com/real-logic/aeron https://github.com/real-logic/aeron - Retrofit https://github.com/square/retrofit https://github.com/square/retrofit Not to mention projects like Apache Spark, Cassandra, Elasticsearch, Druid - Java projects. Many projects (Foundation DB, Scylla DB, I could find more) will have in-house support for Java and not .NET. The .NET equivalents to these libraries tend to be playing catch up. Xamarin Android will always be playing catch-up to Android's Java/Kotlin APIs for Android. Big machine learning projects like PyTorch and TensorFlow tend to give first-class support of some fashion to a Java API (mostly due to Android). Is there a .NET equivalent to Deeplearning4j? Hadoop? Hive? Kakfa? In Java there is a proliferation of web projects: Spring, Vert.x, Quarkus, Micronaut, Play 2, Spark Java; Netty, Jetty, Apache. In .NET all you ever hear about is Microsoft projects ASP.NET core; Kestrel, IIS. Working as a .NET dev, when there is an SDK, if it's not from Microsoft, it's clear the .NET SDK is a lower priority for bug fixes and new features compared to e.g. the Java/Python/etc.
- atombender 6y ago.NET is starting to look nice on Linux and macOS. I'm very disappointed that AOT compilation has apparently fallen on the wayside, though. CoreRT was supposed to bring full AOT to C#, and that project is still in alpha with a disclaimer saying there are no plans to make it production-ready. LLILC, the compiler that targets LLVM, is also not production ready. Anyone know what's going on?
- mnmr 6y agoAOT is still on the roadmap, but has been pushed to .NET 6.
- kevingadd 6y agoAnd in this case "pushed to .NET 6" doesn't mean "not working" or anything, just not production-ready. The AOT implementation in Mono is robust and is being adapted for .NET Core, which requires changes and improvements. Not to mention the introduction of new platforms - supporting targets like Apple Silicon and WASM takes additional work.
- pjmlp 6y agoAs per discussions on Github it remains to be seen if Mono AOT is still the name of the game, or if CoreRT will take its place, or whatever.
- manigandham 6y agoOfficially it's been pushed back. The priority has been the unification of all the different runtimes and platforms first, which is coming with the big .NET 5 release.
- atombender 6y agoIs there a document describing this plan? Will this replace .NET Core, CoreRT, etc.? As someone who isn't a .NET developer, the sheer proliferation of runtimes and platforms is super confusing, and I can never remember what's what between, .NET, .NET Native, .NET Framework, .NET Core, Mono, CoreRT, etc. If this is getting cleaned up, that's great news.
- KurtMueller 6y agoIs it as good as rails? When I run a rails new command, I can setup my postgres connection, nodejs and webpack libraries, rails core library in one command. Rails has database migrations with conventions i like - the timestamp and a file name that represents the action to be performed against the database (e.g. AddNameToBlogs) which that can also be rolled back. I also really like the Rails restful router which is strongly tied to its controllers. I could go on. I really like that Rails gives me strong, opinionated conventions but also allows me to configure things to be liking if needed. I want to love .net core - I really like F#. Any other rails dev out there make the transition to .net core?
- zamalek 6y agoI had about a month of experience with Rails many years back (hobbyist), and have used ASP.Net Core extensively (professionally). The default web template is far more spartan than what Rails provides out of the box. The workflow you're talking about can be done by installing packages and configuration (5-10min maximum for experienced .Net developers), and I'd wager good money on such a workflow being available as a "dotnet new" template.
- manigandham 6y agoI wouldn't rely on "setup everything in 1 command" as indicative of platform quality but .NET does come with the CLI and the unmatched Visual Studio, both of which have plenty of templates and tooling to get you started quickly. Everything you mentioned can be done with some packages and a few lines of code, and the entire framework does have some opinionated conventions but with much more freedom than Rails. The fact that you can have MVC, Razor Pages, raw controllers, and Blazor all in the same app shows just how much freedom you have.
- KurtMueller 6y agoThat freedom is/was overwhelming for me. With Rails, you can choose the relational database and the frontend libraries you want to use - that's really about it. There's a default path I can take if I want to get up and running quickly - it comes with strong opinions and sane set of defaults. I think Microsoft is moving in the right direction though. Scott Hanselman has some .net core 101 videos out on Youtube that are good to get up and running.
- pjmlp 6y agoI have worked with .NET and Java since they exist, jumping between stacks either when moving between jobs or consulting projects, nowadays I tend to be more focused on .NET. Yet I don't see .NET getting on Java turf as much as many Internet thinks it can. It remains mostly a Windows stack (so many enterprise third party are yet to release Core stuff that is actually cross platform), and there are plenty of platforms without any kind of .NET support, yet you will find a Java vendor on them. Also ironically Microsoft is now a OpenJDK member and they are the ones doing the Apple Silicon support.
- saagarjha 6y agoPossibly, but the server JDK I’m running right now wasn’t ported by them ;)
- pjmlp 6y agohttps://appleinsider.com/articles/20/09/22/microsoft-contributes-to-java-port-for-apple-silicon-macs https://appleinsider.com/articles/20/09/22/microsoft-contrib... The beauty of Java is that it is like C, plenty of implementations to choose from. :)
- saagarjha 6y agoYep, that’s all just posturing for now. The one I am using was OpenJDK ported by one guy separate from that effort ;)
- oaiey 6y ago"Mostly Windows" is a limited view. Most modern .NET developments end up in a docker/kubernetes Linux container. In the first year of .NET Core some shops did Windows deployments but now, that is long gone. But I agree. .NET will not replace Java or any other serious language.
- aliswe 6y agoThis is simply baffling.
- SeriousM 6y agoPrograming languages are like patterns that may or may not fit in a developers head so they will not replace each other. I'm sure every developer can read all programing languages but it's about master the language and its eco system.
- johnnycerberus 6y agoWhy should a technology replace other technologies when it brings exactly the same things to the table that are possible with the technologies that it is meant to replace? Just because it gives you the feeling that you are under the dotNET umbrella? LINQ? Clojure and Scala can offer you much more than LINQ. Java is on par. dotNET Core libraries? I don't know, I have never heard people complaining much of the core libraries in the JVM world. VS and VS Code integration? JavaScript and TypeScript has the best VSCode integration, other languages are just supported, including C#, F#, Java, Scala etc. JetBrains IDEs are much more powerful than what VSCode will ever offer. VS is not even cross-platform. The C# used in game industry is a far cry from the one used in enterprise and I don't think C# is the longterm answer for scripting in game dev.
- fomine3 6y agoI wish Java has LINQ. It has only non-friendly non-expandable LINQ-to-Object equivalent. Example for bad parts: Handling checked exception in lambda, no extension method support, calling ".collect(Collectors.toList())" every time, no real closure support, complex lambda type due to primitive types. I should mention async/await for C# feature compared to Java. IMO Scala/Clojure is too much for me, C# is balanced option.