The Doh moment of the week
when it comes to MS....
Microsoft has made a change to its forthcoming ASP.NET Core 2.0 web framework so that it is now incompatible with the Windows-only .NET Framework, causing confusion and annoyance for some .NET developers. The bewilderment is understandable. Here is a quick reminder of what various terms mean: .NET Framework: The Windows-only …
True... and, yeah, it's all legacy apps and services. When is the last time you heard about a hot new application or service being written in .NET? Who uses ASP.NET to design interactive web apps anymore? Why would anyone, at this point in time, want to constrain themselves to Windows Server and MS SQL? I know that .NET is technically being open sourced, but that is just MSFT marketing. MSFT has no interest in maintaining .NET to make zero dollars by not selling Windows or MS SQL. Why would they care about .NET running on MySQL and Linux? That will be a negligible market just so they can say they are open, much like Azure runs a negligible percent of Linux and OSS but MSFT still does a big marketing push so they can say they are open... as everyone wants open these days.
I'm kinda surprised there were people running ASP.NET Core on top of the .NET Framework. I've found mixing Core and Framework to be a big problem. Better to go all one way or the other. Up until now I didn't know this combination was possible. We're still using .NET Framework and the older ASP.NET to avoid the compatibility and reliability issues and to avoid running multiple runtimes (we have legacy ASP.NET Forms applications).
I wonder how common this really is.
Probably more common than you think. All our new work is Core only, but we have one client who insists on updating their data by uploading an MS Access file which we then copy data to Sql. This process is (currently) only available on the full framework, so the site is Asp.Net Core on top of .Net Framework.
Microsoft moves fast and with little notice for a big organisation. Just try to recall Silverlight, Windows Phone, Windows Mobile, Internet Explorer (I was thankful when they finally ditched it and started pushing Edge) - the list goes on!
If you want slow and steady then pick Java. If you want fast and furious pick MS. No one should be surprised by Microsoft taking pragmatic decisions very quickly when they need to.
I thought so too, until I worked at a firm that built high frequency, low latency systems in Java. Can't mention performance stats, but suffice to say it processed complicated messages from end-to-end in time measured in micros, not millis. This was on bog standard commodity hardware, though using a specialised low-latency JVM.
I'm sure it's possible to write grindingly slow Java, but...
You're right, there are 'specialized low-latency JVMs' available, like the Azul systems Zing JVM, which sets you back $3500 USD PER server and PER year.
Compared to the free .NET Framework JVM, which performs already very well, that's extremely much.
.NET can even simply compiled to native code nowadays, which means it nears C++ execution times.
COM automation – which is a Windows-specific technology for calling native code
The world would be a better place if referring to a program, api, library, protocol or whatever piece of software as "a technology" would cause a pissed off badger to materialize in the underwear of whoever made the statement.
The T word is what happens when the marketing types are running the show. They assume that their own knowledge of these things is all that their audience needs to know, and they've long since brushed over the complexity of the software world with the T word.
Are we talking about an ordinary pissed off badger, or a properly irritated honey badger?
When it comes to web development then I personally actually prefer using ASP.NET in favor of more commonly used environments such as PHP. I've been using Visual Studio together with IIS for quite a while now and it has always worked reliably for me. For both professional as well as personal use.
But I don't get why you'd want to bother with this. Maybe to conform yourself to certain set standards which might be important to customers or others, but for everything else you seriously don't have to.
When it became common knowledge that Microsoft was discontinuing TechNet the IT department in my (small!) company started looking around for alternatives, simply because the company couldn't afford 2 server licenses where the 2nd would be hardly used (mostly for testing purposes). However, we did more than just look at Microsoft based alternatives (like discontinuing the use of a test server), we also looked into the Mono project.
Which is my point here... Why bother with all the overhead when there's already a pretty mature and most of all: fully usable and open source(d) solution available right now?
It may not be 100% compatible with the latest standards, but it can sure as heck get the job done. Right now I'm using Mono + Apache with a PostgreSQL backend on a FreeBSD environment running several ASP.NET powered websites (developed using Visual Studio) and so far Mono has hardly failed me.
In fact, I can recommend it to everyone else who's looking for alternatives other than Microsoft.
why not code for SOMETHING THAT IS NOT ".Not" instead.
then you can AVOID Micro-shaft's REDONKULOUS bass-ackwards "object oriented" "solution" (aka overcomplex bloatware designed to turn senior Win32 developers into junior developers again, so "next generation" can be fully indoctrinated into "the Micro-shaft way" and thereby LOCKED IN in perpetuity to what ultimately became Win-10-nic).
So yeah, pick something ELSE. If you *MUST* code the bass-ackwards C-pound way, use Java and be TRULY cross-platform.
Or use another toolkit that's cross-platform like GTK, QT, or wxWidgets.
ANY of those alternate solutions are superior to ".Not". And MONO.
/me remembers how *ANGRY* was when Debian included MONO dependencies into gnome by making 'tomboy' part of the gnome-desktop package. Hello extra GIGABYTES of CRUFT that's all needed JUST! FOR! ONE! TRIVIAL! APPLICATION!!
Mono. what a *JOKE*
Java is now mainly property of Oracle, the greediest of all tech companies.
The future of Java specs is very unclear and changing constantly, and they even charge companies HUGE amounts of money for using some diagnostics tool that have been supplied in the default JVM distribution for ages, but which contained a little, unnoticed license, that it shouldn't be used in commercial settings.
And truly multi-platform!? Come-on, how many times have we encountered various issues and unsupported features in platforms ranging from AIX to Linux, and most of the time you'll have to write platform-specific code anyways.
Don't believe the hype/lies!!
... that Microsoft managed to have an insanely great idea and then turn it into an absolute omnishambles. The writing was on the wall when they pivoted away from favouring purity over backward compatibility and now trampling all over the people who bought into the compatible approach by now deciding that compatibility is a bit of a bind after all (well duh!).
That and the complete confusion that has always reigned over the names and version numbers seemingly pulled at random out of a marketing left-overs bin.
They should have stuck to the "all new" idea and positioned this not as .NET Core/Blah but something else entirely.
After all, it's not the Core of .Net, never was and was never intended to be.
Na - the promise was there from the start? Remember the 'End of DLL hell"? I wrote a load of useful shit in .NET1 which of course wouldnt run in .NET2. And those I knew who'd written a lot of active web pages in other languages looked upon ASP.NET as a large pile of poo.
It's like Bazza says above - the Marketing types are running the show and doing a lot of the coding too. I'd recommend nuclear powered seriously pissed off honey badgers myself.
Although this makes sense long-term, the risk is that developers will be unable or unwilling to move to the new platform, leaving them stuck with a web framework that will be increasingly out of date.
I'd have thought that the risk is that developers will get utterly pissed off with your treatment of them and move to another framework.
There have been several last-minute changes of direction with .NET core which may well have been for good reasons but make it very difficult to recommend as a development platform right now. That coupled with the fact that as the article says there's a lot missing or different, particularly when you include Entity Framework and MVC. And because of the quick succession of releases half the documentation you come across online is simply now wrong.
There's a lot of good stuff in .NET core and having a cross-platform solution will be ultimately be important for the longevity of applications - provided Microsoft remains committed to it. One way of demonstrating that would be to show a bit more commitment to their present .NET user base.
Applications programmers are used to notions like module incompatibility, they tend to take it as just part of the job, but in reality there's no room for 'its just the way it is', there has to be a reason why components are incompatible. Instead of just accepting this and swallowing whatever fixes are offered its time that programmers got together and agreed on a set of working components that if manufacturers wish to augment those manufacturers need to give assurances about compatibility and functionality.
Current software seems very slapdash -- emphasis seems to be on proprietary technologies (i.e. "making our stuff incompatible with potential competitors'"), building to deadlines with inadequate testing, no thought given to resource usage resulting in code bloat, hangs on disk or network operations. Its just a mess. If you question it you get the emperor/no clothes treatment -- obviously you questioning this wonderful crap is indicative of how little you know, how out of date you are and so on.
Personally, I'd rather retire than waste any more time developing on -- or for -- these platforms. I've got better things to do with my life.
The old strategy of Windows first is dead, hence why Windows Mobile/Phone were ditched. Microsoft sees the OS no more than a dumb software layer, its the apps that run on the OS that matter.
So the new strategy is Windows Apps Everywhere, run Office on Android and iOS and MacOS, why waste money developing and supporting expensive new windows platforms? MS also has the ultimate app store, Azure, as someone has commented above, a significant portion of websites now run on Azure.
So it is not surprising that they are creating more portable and less Windows centric version of ASP .Net.
Rug pulled from under devs feet = par for the course
e.g. Tom 7 mentioned .NET1 to 2 incompatibilities
With Win mobile there was no upgrade path from CE/ mobile 6.x to Mobile 7 - code rewrite or don't bother with Mobile 7 (way to go for early adopters, and of course for legacy CE/6.x mobile maintenance ("rugged" devices still in use running this OS in many industries) MS do not support development of it beyond VS2008 and not at all on Win 10
Remember when Silverlight was the next big thing, now it has pretty much withered and died.
With MS there is no guarantee a dev technology will not be tossed aside or suffer major breaking changes, it's always been like that, Russian Roulette development.
The software that I support is partly written with .NET 4 and worked perfectly with 4.0. Yes, it's OLD!
Then the twonks at MS released 4.5.0 and decided to auto-update all installs of .NET 4.0 to 4.5.0 which broke some of our functionality. They then realised that and quickly released 4.5.1 and auto-updated that too. Guess what? They hadn't fixed some of the problems and had introduced others. Finally they released 4.5.2 and DIDN'T auto-update that even though it fixed everything.
Then the feckless eejits released 4.6.0 and the auto-update farce continued with 4.6.1. We were forced to rewrite the software to support 4.6.2 for Win10 compatability and it now works but I have lost count of the times I have had to uninstall a later version of .NET and install an older version.
What I don't understand is why 4.5 and 4.6 weren't just called 5.0 and 6.0 which would have prevented the older versions from being updated. They used to do exactly that before 3.5.
Reading the comments on stories like this reminds me of the feeling I had when I got the hell out of Microsoft development hell and discovered the joy of Linux. Yes, there are problems, some of it is pretty shit, stuff breaks, there are bugs,.. but they're /accidental/ blunders*, made by programmers, not deliberate policy decisions designed to fulfill the latest marketing wheeze.
* well yes, ok,... systemd is the exception that proves the rule ;)
In '17 the ' looks a bit like an insect stinger, the 1 looks like a skewer, and the 7 like a spatula. Don't fret on which arm is the handle. Will 2017 be the year, also, of the fork? Gasp. Or perhaps GASP. Gnu ASP--too retro, too jarring? HASP, to lock down on compatibility? Or CASPer, the friendly platform with a ghost of a chance? RASP, because it grates or is dehiscent? WASP, for So Many Reasons? In school, teachers downvoted me for flippancy. I say, if you have a spatula, flip away. And bite me.
Remember the phrase "write once, run anywhere"? With all that implied, including full backwards compatibility?
It seems to only apply to the very first version of something, when "everywhere" is limited to one version on one machine.
The very essence of a 'platform' is a consistent target. Yes, aspects will need to change and improve. But only design flaws should require an incompatible change to an interface.
On their blog announcement, they say the .NET core only support is just for the preview:
This preview version of ASP.NET Core 2.0 ships with support for the .NET Core 2.0 SDK only. Our goal is to ship ASP.NET Core 2.0 on .NET Standard 2.0 so applications can run on .NET Core, Mono and .NET Framework.
Does that mean this story is a non-issue?
Now with some advances, you can rely on .NET be it for building a desktop application, a website, a mobile app, or a microservice. Code sharing is now easy because GitHub now provides a unified BCL. You can focus on the attributes and technologies which are specific to user experiences and platforms you target.
So whats the future of .Net Core ?