20 ms·
20 Years of .NET
- NicoJuicy 5y agoBeen programming since 2.0 in DotNet. I must say props for the insane compatibility that was kept over the years/decades! Even migrating some apps from vb6 was relatively easy, that effort shouldn't be underestimated. A minor nit would be with Silverlight, but I wasn't affected by it. I didn't use much of wpf because of that though. Since around that time, everything migrated to the web. A well deserved thanks!
- pjmlp 5y agoNow there is a company making Silverlight work on top of WebAssembly. https://opensilver.net/ https://opensilver.net/
- kevingadd 5y agoOn the bright side, a lot of Silverlight code still works since it wasn't a completely separate class library etc. Back when I was still working on JSIL, I had one enterprise customer who was slowly porting over a huge pile of Silverlight code to run on top of my stack. It was more feasible than you'd think since so much of the code could be used without modification. You basically only had to replace the frontend.
- NicoJuicy 5y agoIt still works, yes. But for the people that migrated around that time to it, I suspect a deprecated framework ( although functional), probably wasn't what was anticipated. https://docs.microsoft.com/en-US/troubleshoot/developer/visualstudio/silverlight/silverlight-not-work-google-chrome https://docs.microsoft.com/en-US/troubleshoot/developer/visu... They still have a updated faq for it.
- d--b 5y ago> Free. Cross-platform. Open source. Some things do change
- hughrr 5y agoIt was pretty much always open source and cross platform. The original version wasn't even developed on windows: https://github.com/SSCLI/sscli20_20060311 https://github.com/SSCLI/sscli20_20060311 Although being open source and free doesn't necessarily make it open and accessible. The core CLR team do not listen to customers, particularly ones who complain about not wanting telemetry by default in there, ones who open bugs in the HTTP stack which spam logs for months and months and months and complete deadlocks and crashes. Open Source has only completely absolved Microsoft of any responsibility to support their products to actual paying customers, who are told to open github issues now which are auto-closed after being ignored. I'd rather invest my time in any other platform without the other issues that it brings at this point.
- electroly 5y agoThat bit about SSCLI is only about half true, at best. The original version of .NET was developed on Windows, but they contracted Corel to implement the cross-platform bits they wanted for SSCLI. Those bits only existed in SSCLI; it was never integrated into the actual commercial .NET implementation. SSCLI is not a snapshot of the actual .NET Framework code; not like the later Reference Source is.
- a_imho 5y agoI'm not sure whether you are implying Microsoft has changed or their PR?
- pdenton 5y agoThere's still vendor lock-in though
- speed_spread 5y agoCross-Platform... as long as you don't use the GUI libs.
- Xevi 5y agoBesides .NET MAUI and Xamarin, there's plenty of third party cross platform frameworks, like Avalonia and Uno.
- mindwok 5y agoI think in 50 years if Microsoft is still around, it’ll probably be because of .NET. For a company I have very little time for, .NET is an exceptionally awesome tool and ecosystem.
- bayesian_horse 5y agoI can compare .NET core to Django and .NET doesn't hold a candle in terms of tools and ecosystem.
- Xevi 5y agoThe .NET ecosystem is enormous, what do you mean?
- pjmlp 5y agoReally? Too busy setting up VMs or rewriting Python code into C to notice?
- alkonaut 5y agoDjango is a web app framework. Did you mean to compare ASP.NET do Django? Or .NET to Python?
- bayesian_horse 5y agoParticularly I am talking about Django and ASP.NET. I find Django to be a lot more productive and pleasant. Supporting open source libraries/projects are thinner for .NET. That is hard to quantify, besides the raw package count, but is a general (subjective) observation I have. There are some replacements for Celery for example, but rather recent and not as capable. Django REST Framework beats the .NET equivalents hands down. The Django ORM is better than EF, IMHO. Django comes with a command line framework (which can somehow be integrated into .NET projects probably). Reloading times are faster. IMHO the template engine is better. I like F#, which is more pleasant to work with than C#. But it's hard to get a team going with F#, because it is also harder to learn.
- bergheim 5y ago
- Aurelius3 5y agoAs someone just getting into .NET (c# desktop applications) anything I should know about .NET and/or it's history?
- smackeyacky 5y agoThe desktop GUI story is awful and Microsoft have no good ways of fixing it. Most everything else is awesome. .NET core or .NET 6 is what you want.
- WalterGR 5y agoWhat do you think of WinForms?
- p1peridine 5y agoWinForms is great. There are several companies making WinForms components (controls) still. https://www.devexpress.com/products/net/controls/winforms/ https://www.devexpress.com/products/net/controls/winforms/ https://www.syncfusion.com/winforms-ui-controls https://www.syncfusion.com/winforms-ui-controls https://www.nevron.com/products-open-vision-winforms-ui-controls-overview.aspx https://www.nevron.com/products-open-vision-winforms-ui-cont... https://www.infragistics.com/products/windows-forms https://www.infragistics.com/products/windows-forms https://www.grapecity.com/componentone/winforms-ui-controls https://www.grapecity.com/componentone/winforms-ui-controls
- bayesian_horse 5y agoYou are basically selling your soul to Microsoft. Microsoft is controlling virtually all development even on the open source side. Also, expect to write 5-10 times more code than with other popular languages. You may not notice this when you come from Java or C++ because then it is an improvement.
- GiorgioG 5y agoHate Microsoft much? You’re not selling anything to Microsoft. You sound like you just stepped out of the 90s. As for the misinformation about writing 5-10 times more code than other popular languages, which languages would that be?
- Dave3of5 5y agoWell it has kept me employee for quite some time now so that's something to celebrate. The opposite side to that it I think every commercial .Net system I've ever worked with / on has been an absolute mess. Not sure if it's .Net or the companies but something there seems to attract devs to make ill performing, over abstracted, confusing, massive architecture systems that in reality could be simplified down to a bunch of data forms. As I say I shouldn't complain keeping these things running pays my bills.
- mbrodersen 5y agoDon’t bite the hand that feeds you :)
- hughrr 5y agoSame here. I'm sitting here debugging some 15 year old c# at the moment in the middle of a mega shit show. I got paid. That's all the good stuff I can say about it.
- tonyjstark 5y agoI never came across code older than 2-3 years that’s not a complete clusterfuck. So looking at it from this side, the fact that it still runs is more of a sign of quality, what do you think?
- onphonenow 5y agoSilver light / wpf / xaml Something about .net made Microsoft lose their minds
- hughrr 5y agoThis is microsoft not .net's fault. .Net was just jam to spread over the turds. Microsoft tried to jump on every fad that came along and proceeded to burn all the old ones yet still keep the customers limping on them. Lets not forget stuff like Velocity, DNA, AppFabric, Workflow Foundation etc all of which we had to spend millions rewriting out of products. Before that it was the C++ frameworks: MFC, ATL etc etc etc.
- black_13 5y ago
- cudgy 5y agoATL was elegant and clean if you were able to wrap your head around C++ templates.
- WalterGR 5y agoWhat stable non-Microsoft platforms do you use instead?
- rad_gruchalski 5y agoExcel macros and formulas.
- onphonenow 5y agoAbsolutely still a thing! Formulas forever. I don't like the macro deployment story fully so dialed that way back -> if you can worth avoiding I think.
- metaltyphoon 5y agoThere won't answer because it will be laughable. Just take a look at his other comments on this thread.
- sylens 5y agoAs someone coming from Node who has only recently (with .NET 6) taken a good look at the ecosystem, it appears to me that there have been a lot of breaking changes to get where they are now. On one hand, I love that they’re trying to reduce boilerplate and align closer to something like Node with Minimal APIs. On the other hand, nearly every reference guide or tutorial I look up is outdated and I’m left trying to figure out what changed between .NET 5 (or earlier) and .NET 6. I was following the Little ASP.NET Core book one day and things like there being no Startup.cs anymore (being merged into Program.cs) took me a minute to figure out, as there’s also no definitive resource for a newcomer on what has changed that would make older documentation inaccurate.
- Hawxy 5y ago> as there’s also no definitive resource for a newcomer on what has changed that would make older documentation inaccurate. The two pages you want are: https://docs.microsoft.com/en-us/aspnet/core/migration/50-to-60 https://docs.microsoft.com/en-us/aspnet/core/migration/50-to... and https://docs.microsoft.com/en-us/aspnet/core/migration/50-to-60-samples https://docs.microsoft.com/en-us/aspnet/core/migration/50-to... Both should cover the majority of scenarios. The main takeaway is that everything you usually configure in `ConfigureServices` now hangs off `builder.Services`, and everything you'd configure in the middleware pipeline `Configure(IApplicationBuilder app)` is available after you call `var app = builder.Build();`. I'll note that the change to the Minimal API was only in the project templates, so the old model does continue to work without any breaking changes.
- smarx007 5y agoIs there an up-to-date guide for migrating from .NET Framework 4.8 to .NET Core 6.0 (or whatever the latest LTS is)? I guess many projects have not yet migrated, especially libraries that wanted to stay compatible.
- throwaway6532 5y agoUpgrading usually requires an enormous amount of remediation work before it's even possible. Generally you can do it like this - convert to PackageReference style NuGet packages (this one alone may even be a blocker if you have certain unfortunate dependencies which aren't compatible with PackageReference), upgrade all your dependencies to a netstandard2.x compatible version (this is often brutally difficult in a big system and you may have to replace certain dependencies outright), start swapping out DI / Logging etc with the netstandard equivalents found in .NET Core, create a new .NET Core solution file and try to compile your project to see what breaks and fix any remaining issues. Having done this it does work, but it's fairly time consuming and for larger apps virtually impossible without massive buy-in from the business.
- pharmakom 5y agoIf it wasn’t for F# I’d see little reason to use .NET honestly.
- munchler 5y agoC# is fine for what it is, but F# really is the shining star of .NET.
- Lapsa 5y agodevelopers developers developers developers
- ksec 5y agoI am wondering what is the size of .Net ecosystem compared to Java and JVM? One tenth? Are .Net shops still mostly on Windows? Just wondering as someone who doesn't have a clue about anything .Net.
- rjbwork 5y agoAt my company, most of us write on windows in VS. A couple of us use MacOS. We use WSL pretty often, largely for Docker and dev ops work. Our build pipelines are mostly run on Windows, unless we're making containers. We deploy to Linux (AWS Lambda mostly, but with some Debian on EC2/Fargate/Batch here and there).
- scruple 5y agoI'd say that the .NET teams that I work with (probably 60-70 FTEs) are 80% Windows, 15% Mac, 5% Linux. A handful of the Windows folks are using WSL1/2. But we target Linux for everything but our oldest ( we've got a couple of 10-20+ years old codebases that are perpetually being phased out) legacy systems at this point.
- electroly 5y agoThese days it's pretty common to develop on Windows and deploy on Linux.
- binarynate 5y agoIn Stack Overflow's 2021 developer survey, 34.5% of pro developers said they use Java and 29.8% said they use C#: https://insights.stackoverflow.com/survey/2021#most-popular-technologies-language-prof https://insights.stackoverflow.com/survey/2021#most-popular-... That doesn't factor in other JVM and .NET languages like Scala and F#, but it does give you some idea.
- ksec 5y agoThat is a lot higher than I thought. .Net seems to be doing great.
- decafninja 5y agoI started my career as a .NET dev, and until recently was the stack I've worked the longest with. I have fond memories of working with C#. However I am no longer interested in any job that uses .NET and have removed all mention of C# and .NET on my LinkedIn and resume. This is because even despite great recent advances, .NET still seems to be almost exclusively used by tech-as-a-cost-center enterprise companies that I have no interest in working for anymore. I'm sure there are some great companies in some corners of the world working with C# and .NET, but as far as I can tell, they are still by far, the exception, not the rule.
- christophilus 5y agoI’m in the same boat. C# and F# are excellent languages. But C# jobs are as you describe. F# jobs are practically nonexistent. So, I’ve moved on to other stacks. I do miss LINQ. Other than that, I’m quite happy with Go and Node+TypeScript.
- danjac 5y agoThat's a good point I don't see mentioned much about choice of tech stack and impact on career. It's not so much about the technical merits of the stack itself as about what kinds of companies and projects use that stack, and sometimes it might be worth learning some technologies you might not be particularly invested in if you want to work at those companies. It's not easy to switch stacks either - yes you can learn a new stack but you need those golden "years of experience" in your resume, making a switch an expensive and risky proposition, so you need to choose wisely.
- sbergot 5y agoIn the two companies where I have used .net software was the source of revenue.
- Merad 5y agoThe landscape has been changing rapidly since .Net Core (now just .Net) matured 3-4 years ago. As you say there are a LOT of big enterprise shops out there using .Net, but more and it's catching the attention of small companies and startups. I work at a small-ish (~300 employees) B2B SaaS that has a wide variety of legacy code bases: .Net Framework, Node, Ruby, Php, and a few others. We made the decision last year to make .Net our default choice for new projects.
- cm2187 5y agoHas anyone seen some numbers on the .net core vs .net full usage? A lot of my projects are stuck on full, either because of incompatible dependencies, CLR APIs not implemented or winform. I can’t be alone. As a result I kind of stopped following what’s new on .net. It feels like a python 2/3 split of the user base, though a lot quieter.
- withinrafael 5y ago.NET 6 currently supports WinForms/WPF if you target Windows specifically [1]. Most API gaps are filled. And .NET Framework compatibility mode [2] might Just Work (tm) for your dependencies. [1] https://docs.microsoft.com/en-us/dotnet/standard/frameworks#suggested-targets https://docs.microsoft.com/en-us/dotnet/standard/frameworks#... [2] https://docs.microsoft.com/en-us/dotnet/core/porting/#net-framework-compatibility-mode https://docs.microsoft.com/en-us/dotnet/core/porting/#net-fr...
- jjkaczor 5y agoSigh (fond memories) - I had just signed a deal to make my 1-person consulting company a Sun Certified Partner, as Java was clearly the future. VB6/COM was an obvious dead-end, and my other preferred alternative - Borland Delphi - was just not being considered by my enterprise clients. A friend who had recently been hired into Microsoft got me into the alpha pre-release program for .NET. And boom - I never touched Java again, except to port code to C# (or tell IBM sub-contractors how to integerate with .NET/Windows authentication ecosystems). Weirdly enough - as a programmer who got my start with VB1, I ended-up immediately preferring C# over VB.NET - mostly because my first paying .NET client was facing a complete dead-end with FoxPro - so, as we were performing architectural and technical evaluations of .NET, it was exciting to see that C# was submitted very early-on for ECMA (and eventually ISO) certification. Myself - I see the release of .NET as the point where Microsoft started to become more open, more platform-agnostic and more developer-friendly than it had ever been before.
- roblabla 5y ago> Myself - I see the release of .NET as the point where Microsoft started to become more open, more platform-agnostic and more developer-friendly than it had ever been before. .NET certainly was more developer friendly, and I guess more open in a way by engaging with standardizing bodies. But more platform-agnostic? The original .NET (anything before dotnet) was very windows-centric. You couldn't take your .NET code and run it anywhere else. The C# language was ISO-certified, sure, but not the APIs. And C# without the APIs is quite uninteresting. MS only started being interested in platform agnosticism again in the last 3-4 years, because they aren't the dominant platform anymore in a few important verticals (servers and mobile). But for most of the previous decade, they have not cared at all about it.
- jjkaczor 5y agoAgree - the platform agnostic thing is only a recent reality - but, the "possibility" was there at the begining, and at the time the future seemed very bright. (The fact that they did not sue Mono into oblivion immediately was a good sign - of course, but then their historical trend of influental buy-outs continued with the eventual aquisition of Xamarin...)
- deleted 5y ago[deleted]
- MangoCoffee 5y ago1. use .Net that work with open standard like ASP.net (html/css/javascript) never buy into Microsoft's own technology like Silverlight. Blazor look promising since its based on webassembly 2. Microsoft fat client is a mess. winform? wpf? uwp? which one to use? don't forget winRT
- electroly 5y agoMess is subjective. I've been using the same stable UI framework for 20 years. Today's junior frontend devs were in diapers when I started using Windows Forms and it hasn't ever been broken or required rewrites. I don't think web developers even realize this is possible. The biggest choice is deciding how much you like technologies from the Windows team. Personally, I stay away from them. With the exception of the very oldest technologies (Win32 and COM), tech from the Windows team has less longevity than technologies from DevDiv. That means yes to Blazor, WinForms, and WPF, and no to UWP and WinRT. Note that Blazor has a server-side edition. Most production Blazor usage is not WebAssembly-based at this point in time.
- mpmpmpmp 5y agoThat's interesting because the 3 blazor projects that I have done client work for are all WASM not server. Do you have a source for the stats on server vs wasm deployments or just what you've experienced so far?
- electroly 5y agoIt's just personal experience and what I've heard from other enterprises. Inside corporate networks the latency from Blazor Server isn't a showstopper, and Blazor Server has been production-ready for much longer than Blazor/WASM.
- hackerfromthefu 5y agoAnd sadly Blazor WASM even in .NET 6 has runtime performance slower than React, with 5 Mb hello world download. The other big advantage of Blazor server is you can remove the separate service layer project and deployment target entirely, reducing total code and total infrastructure significantly.
- darksaints 5y agoIn my opinion, almost every complaint I could possibly have about .NET would not exist if it weren't for windows. From the weird idiosyncrasies that make cross platform GUI development hard, to the dumb enterprisey software patterns, to the weird build systems and packaging...all of them can be traced back to windows somehow. Windows ruins everything.
- disease 5y agoCurrently working in the world of TypeScript/Node/JavaScript there's so much stuff I miss from .NET. * Awesome standard library - very little need to install packages from randos on the internet * LINQ makes performing complicated work with collections simple and readable * Great async model for work that needs to be done in parallel or scheduled Was also impressed at how much stuff they managed to add to it over the years: * Generics * Now runs just about anywhere: Windows/Linux/macOS/mobile * Null reference types largely gets rid of the endless 'Object not set to instance of ...' errors * Now supports some form of immutable data types (records) Frankly most of the complaints I'm reading about here come from the companies that choose to use the technology rather than the tech itself.