Create a Ubiquitous .NET Client Application Development Model
This vote is for developers who wish to see the idea of a ubiquitous .NET client application development model created by Microsoft and the Visual Studio team.
A ubiquitous .NET client application development model is a model that is defined in .NET-based technologies and is able to run in a multitude of runtime environments -- both native-compiled (store-hosted) and web-hosted.
A *very* rough image of the vision can be found here:
The goal is to enable *one* .NET Client Application Project to build deliverables for the following platforms:
1) Windows 10
2) Legacy Windows
3) *nix (Unix/Linux)
8) ??? (Extendible to different, future platforms)
In order to achieve the above, a ubiquitous .NET client application development model should strive to possess the following qualities:
1) Native Cross-Platform Capable - For native-compiled/store-hosted scenarios (iOS/Droid/Windows Store)
3) Consistent User Experience - For brand recognition, reinforcement, and optimal usability across all known scenarios
4) Cross-Boundary Accessibility - For shared code/assemblies between server and client boundaries
5) Xaml-Powered - Harnessing one of the greatest inventions in Microsoft's great history
6) Object Serialization Congruence - Markup used to describe serialized objects is what is created in memory
7) Holistic Development Consistency - The same guidelines and conventions are used in both client and server scenarios
For more information around this idea and the qualities above, a series of articles has been created to discuss the notion of a ubiquitous .NET client application development model at length. You can view that series here:
Finally, this is intended to be a starting point for discussion, and not a final solution. THAT is meant for the experts there at Microsoft. :) Thank you for any support, dialogue, and feedback around this idea!
@mala, thank you for sharing Eder's vote. It is great to see this idea and the idea you reference sitting at #1 and #2 hottest ideas in Visual Studio right now, respectively. Also, this idea crossed the 1,000 mark today, and that is nothing short of awesome and beyond any expectations when this vote was initially created short of 8 weeks ago. Combined with the related votes over in UWP's board, the demand for a ubiquitous .NET client application model is over 3,500 combined votes between the voting boards (you can view the weekly vote reports at the referenced link below in a previous comment).
The support really has been amazing. A tremendous thank you goes out to all who have supported so far. This is far from done, however. A look at the top votes here @ Visual Studio board shows there are ideas with tens of thousands of votes rotting on the vine or "under review" with months (or years!) of time passed without an update. That should scare anyone wishing to make a vote on this board or who has hopes of having their idea heard here.
By contrast, hopefully these two votes will start to generate some internal discussion there at MSFT and get some seriously disruptive, marketplace-dominating innovation going on again in the MSFT client application development space.
If anyone is interested, we are keeping track of this vote and others like it at
Bring Windows 10 Universal Apps to Android and iOS
Create something like what Xamarin is doing in order to help developers to code once and run EVERYWHERE (Wndows 10, windows 10 mobile, android and ios).
If Microsoft could not buy Xamarin, at least do what they are doing by your own. Make something that enable us to archive real NATIVE cross platform development. It could dramatically increase the numbers of developers using .net to create mobile applications as well as increasing the number of apps created to wp too, since app could be compiled to ios, android AND WINDOWS PHONE. Hibrid apps like apache Cordova has a lot of potential but right now it is limited to offer a bad user experience when compared to the native apps you could build native with native objective-c on iOS, java on Android or C# (on Xamarin.Forms o WP and Windows 8). Porting .net to others platforms is good, but go further MS, create something that help us to "code once and run everywhere. And by EVERYWHERE I mean, not just windows, I mean: Native apps on Android, iOS, Windows PC, Windows Mobile, Xbox, HoloLens and to on. Bring us a tool that enable us to make Visual Studio Universal Apps REALLY UNIVERSAL (running as well on android and iOS).
We want a Framework that enable us to build NATIVE.
By the way Xamarin Starter edition has a very limited package size so is almost impossible to create even small apps with an organised architecture (multi layers) and its licences fees is very expensive too.
Hey M$ look to the opportunity a tool like Xamarin could bring to the windows ecosystem. It could help you to resolve the app gap Windows Phone suffers so far. With a tool that can help developers to build native applications to windows as well as to android and iOS could bring the apple and android developers interest to use it and since it will be able to compile to windows phone then they will not have why to do not do so. It will also bring mobile developers form other platforms (android and iOS) to Visual Studio and .NET.
"continuing like this, the new versions of .Net will even exclude more of MS own OS's, and these operating systems are still used by the majority"
And developers will continue to target lower versions of the .NET Framework from Visual Studio to accommodate users on those OSes, which kind of defeats the purpose.
Even Visual Studio 2015 defaults to targeting .NET 4.5.x by default, instead of 4.6, for example.
Honestly, I feel like .NET has introduced more headaches than benefits to client application developers. The performance delta between different UI technologies from Microsoft is far beyond trivial, and WPF performs terribly on lower/mid-range machines which are a ton of Windows' users. Hardly anyone wants to deal with MFC for new projects, and we lost VB for Quick Data-Based Projects.
On top of that, Microsoft is deprecating technologies like SQL Server Compact and making it a PITA for some of us who develop solutions for our own use using them. I'm back to using Access for the moment. I don't feel like a 150MB (300MB+ Install) Payload is worth any of SQL Server Express LocalDB's benefits... Never mind that is a hard sell for people selling apps that used those technologies, should they migrate to Microsoft's "replacements."
Eventually, I will stop using Windows for my personal stuff and migrate all of that over to OS X/Cocoa. Things are a lot more organized in Mac-Land.
@Marc Roussel, indeed,that is a piece of the puzzle. :) CSHTML5 satisfies a good number of the desired qualities of a ubiquitous .NET client application model. Primarily, it takes the desired and ultimately logical approach of transpiling .NET into HTML5-compliant artifacts. Unfortunately, it doesn't account for such critical features such as Portable Class Libraries or support shared/common assemblies for code reuse between application/server boundaries (cross-boundary accessibility). It also doesn't support a native-compiled workflow for store-hosted/native applications (more performant than JS). Nonetheless, it is on the right path and ultimately offers a more cost-effective approach/design than what we saw endorsed on stage by MSFT during Connect 2015 (traditional JS front-end on a .NET backend -- great for node.js, terrible for .NET).
You can see more about CSHTML5's (and other models') alignment with the desired qualities here: http://blog.developers.win/2015/10/existing-net-client-application-models/#cshtml5
Thank you for your support!
Marc Roussel commented
Could that be the answer we're looking for ?
Thank you for your feedback, Maxwell. Self-hosting ASP.NET has actually been in discussion:
The problem with this approach is that JS on the client and .NET on the backend are incompatible (cannot share code across boundaries), and therefore break DRY. More details here:
As you mention, nodejs works really well in this scenario, as JS can be shared between client and server boundaries, reducing development time (and therefore, cost). This is why developers and organizations are moving away from .NET and a solution like this idea suggests is necessary.
Maxwell Bloch commented
So, self-host ASP.NET and bundle a browser or WebView, a la Electron in nodejs land.
If anyone is interested, we are keeping track of this vote and others like it that aim for a ubiquitous .NET client application model. The first report can be found here:
Future weekly reports will be found here:
As of today, the ubiquitous .NET client category has just over 3000 combined votes at 3013. Not bad. :) Please continue sharing this idea and make sure that our voices are heard!
if only that was true!
yuliya alasheeva commented
Украли мою разработку, я на Facebook отправляла ссылку, потом удалила.
Man, MS reached to a point that even it's own old OS's are left behind, the new .Net 4.6 system requirements:
, does not support windows XP, and all Windows Server from 2012 and bellow.
continuing like this, the new versions of .Net will even exclude more of MS own OS's, and these operating systems are still used by the majority.
and I did not start talking about other OS's from other vendors, and as some of us recall, when MS talked about creation of .Net
, it was to fight java moto:
"Write once, run anywhere" (WORA): https://en.wikipedia.org/wiki/Write_once,_run_anywhere
, while this succeeded in java to a certain point, it was forgotten by MS. Totally!!
Thanks for the dialogue, developers... this is awesome. :)
@Louis, that migration path is unfortunately one of a broken, incompatible system as highlighted by the series. It is transitioning into a sub-optimal and inferior design from a .NET perspective. Again this works great for JS-only solutions, but not so for .NET-backed ones. :(
@stimpy77: this goes beyond Windows 10 and is for .NET client application developers. The bridges you speak of are going into Windows, not out of, which is backwards and what the series and this vision seeks to address. Even at 1B Windows 10 installs, there will still be ~1.5B installs of Droid/iOS that outweigh Windows 10, and even much more ubiquity found in the web:
@Marc: To be sure, the transpilers/compilers only come into play when you are ready to deploy to a target environment/platform. Until then you should be able to develop as you suggest: freely and quickly with instant feedback. And yes, I am dreaming out loud right with you, LOL!
Marc Roussel commented
Here's my little story.
I did a lot of SL app for many business and I'm actually the only one capable of converting these apps for them. I'm forced to use HTML 5 and JQuery and a bit of TypeScript and let me tell you that it's not the future I wanted. So sad to see both sides so disconnected. Server side very nice OOP c# code with lamda, linq etc and all the glory that goes with it and then you transfer your object s to the client side to find out that you're playing with strings and some kind of freaky OOP that doesn't have real intellisense at all and I don't want to talk about the UI design in HTML which is totally absent of this world which xaml and Blend was offering so easily.
So yes we need .NET world of development that targets the web of today. We don't have time to incorporate tons of nuget frameworks to develop a web app. The ideal world for .NET developers are like Silverlight. Nothing less seriously !!!
You can't imagine the effort I'm putting in converting these apps to HTML 5, CSS, JQuery, Razor, Bootstrap, and more where all I had before was C# + XAML that's all and a very great tool to design UI. All this is lost !!
From my point of view we don't need to see compilers, transpilers, etc these aren't necessary when developing we just need to see one language, one tool, call it ONEDEV if you whish but yeah that's all we need.
Well 2 language in fact, HTML 5 and C#. Yes it's ok to loose XAML but at least all the business logic SERVER and CLIENT side should be for instance C# and a GREAT tool to design UI with HTML 5 the way we do with Blend not having to write HTML to see what we want on the UI. That's crazy developing UI with HTML 5 text and run the app so often to see what it looks.
All this is a huge time consuming thing. What as been said here is what I think so don't take it for granted. I'm just dreaming out loud and expressing what I think about all this.
@Mike-EEE. I have always interpreted the development of TypeScript as a migration-tool for .Net investments towards these new standards. The W3C standardization of the web assembly specification will also ease this transition.
@Louis These are all good points, and truly showcase the need, desire, and most importantly the value of creating an innovative solution to revolutionize and cooperate with these standards -- to work in harmony with existing technologies, rather than remain incompatible, expensive and risky (of flight from use). You have only put two years into TS/JS. Think of those who have over 15 years of .NET experience. If .NET was truly compatible with all these new standards you speak of, then we wouldn't even be having this conversation. Unfortunately that is not the case, and we are speaking to that now. To be sure: .NET is currently incompatible with these exciting standards, but they do not have to be. New opportunities (and innovations) do lead to new business indeed!
Innovation will always disturb and disrupt an organization, but new opportunities will lead to new business.
@Louis that is some pretty fantastic insight, thank you for sharing. It's good to see that you are validating a huge concern here with possibly jumping to NodeJS/JS for your backend, and why there is so much value in this vote. TypeScript might seem like a small step, but you are not just reusing existing knowledge, you are duplicating efforts/concerns between client/server code-reuse and breaking DRY/encapsulation, which ends up being very expensive, as I'm sure you know with your decades of rather significant experience. :) Some organizations might be OK with that, but they will not be as efficient/effective/dominant as those who aren't.
It will be interesting to see if you end up going all-JS and dumping .NET altogether as other organizations/developers are edging/considering to do.
Luckily: from C# to TypeScript is a small step in reusing existing knowledge.
@Louis I had to look up APL. Old skool huh. :) To be sure, technologies do come and go, but .NET is not exactly a one-hit-wonder technology. What will the next language be? This vote maintains that it should be the same as it has been: .NET (C#/VB.NET/F#) innovated for the web (and any platform). Well, that SHOULD happen, and that is the point of this vote. It's the only thing we can do and hope for the best, right?
@Mike-EEE, thanks for your enthusiastic and friendly push-back to .Net. But unfortunately technologies come and go, we are all "asked" to convert. That's the dynamic of the IT-world. From VB6 to VB.Net to TypeScript etc. What will the next language be?
BTW I started programming in the most powerful and dynamic programming language APL. And it still exists :-)