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!
Eric Bl commented
completely approve the necessity of such an ubiquitous .NET platform.
We want a .NET Core which really becomes the common core of all .NET variants!
Main goal is consistency: ensure that the same code will always have the same behavior. The current situation with separate implementations might lead to different behavior of the same shared code…
MS bought Xamarin in February 2016: what about a real merge on Xamarin and .NET Core? Or better said, where are we in the merge of Mono and .NET Core? Wasn’t it the goal of buying Xamarin? Xamarin is based on Mono, all efforts on mono should be put in .NET Core to gain a better visibility and understanding among the developer.
Currently (VS2015), one developer targeting a cross platform app should go on Xamarin for iOS and Android, and deal with .NET Core/UWP for Windows 10 (Desktop/Mobile/Xbox). These branches should become one!
An even bigger merge would be to have the full .NET Framework becoming another layer on top of .NET Core.
Thus, we could develop our main class library / code logic targeting .NET Core 2.0/3,0 and then, having different project referencing the very same dll: on one side Windows full app (e.g. WPF/ .NET 4.x, cmd line tool, on other side mobile/cross platform dev (iOS/Android/ Windows Mobile if it still goes somewhere…)
The current situation (VS2015) with “shared project” and maybe precompiler stuff is not that clear to build this kind of multi platform apps (even if quite possible with interfaces and dependency injection).
(cross comment from the .NET Core Roadmap)
.Net Core is a great thing. But if there is no way for easy code sharing with browser clients, iOS and Droid Apps, it will have a hard stand.
Why Microsoft not put Silverlight Runtime (or another .Net Rumtime) into the Edge browser at the beginning? if they did, the world may different, we could run UWP applications directly in the browser.
+1 @Roger good point!
Yes, we need single codebase that can run everywhere (or as many as it can).
Microsoft was famous years ago with Visual Basic that allowed any person to create applications very fast. Later winforms, wpf, silverlight etc.. We need same simple and fast approach to create Web UI applications in C# using designer and mark-up for advanced usage.
My wishlist for creating web applications:
1) C# Client and server
2) Excellent UI designer ( layout, docking, click events, drag&drop, 3rd party controls, etc )
Roger J. Wilco commented
Just implement SilverLight in TypeScript and it would go a long way. Everything you have is there! HTML canvas, websockets, hardware accelerated graphics. What is the problem? Just do it!
Marc Roussel commented
Can't wait :)
1) C# Client and server
2) UI DESIGNER not just mark-up writing.
3) Superb BINDING system like Silverlight
4) A conversion tool for existing Silverlight APP is absolutely necessary (if possible)
We need to do beautiful interface these days and I find it very hard labor to do interface in Razor
I'm actually redoing a HUGE Silverlight app and it's painful believe me.
+1 WPF XAML, integrate Xamarin.Forms and UWP and run on WebAssembly! Will be a dream to create web applications UX/UI in .NET again.
For websites we can use html/bootstrap etc but for large LOB webapps we need .NET back to UI/client side!
Windows Phone failed as Satya Nadella admits (http://www.deccanchronicle.com/technology/in-other-news/180616/microsoft-ceo-satya-nadella-admits-windows-phone-a-failure.html ), so *may* ***'s time for MS to do their plan B, create their own Android brand, something like Microsoft Android, the MS android is based on Android open source OS, and has a windows API layer that can run all UWP applications and support download apps from android and windows app stores.
I know MS is design their Surface Phone, but if they insist target for business users with high price, obviously Surface Phone cannot save windows 10 mobile.
I'm in China, mainstream Android Devices in price range of 1000-3000 RMB (about 160$ - 500$), and the 160$ phones has very high hardware equipped and can run any business apps, who will buy a 600-900$ surface phone with less apps ready to run?
The world is change quickly, many people do not use PCs anymore and take a smart phone for daily works instead. If MS lost mobile OS, it will become a new SUN after 10 years.
Roger J. Wilco commented
+1 @ Anoymous. Xamarin (or rather, Xamarin.Forms) took their best stab at a very complicated problem, but the developer experience is less than ideal. For every new control you create you need to create 3 different renderers for it, which is very labor intensive. Their Xaml system is better than UWP in a lot of ways (markup extensions), but it is closed/internal and not very extensible.
UWP has a strong modern client application model, but their Xaml system is terrible, really truly terrible. As in they deliberately worked to make it that bad. The ideal would be to take UWP's client model, and give it a good Xaml system (based on WPF's, ideally) and then make it cross platform via the new Xamarin magic.
Once you get it working on WebAssembly, .NET will be unstoppable!
Xamarin's cross platform solution is good, but is far from perfect. There's still a lot of work need to do, I hope MS can integrate Xamarin forms into UWP in the roadmap of .Net Core 2.0, a really UWP that target different OSes much more smoothly with just one project only, and select build to Windows/iOS/Android/Linux as easy as we target different CLR (.net 4.0/.net 4.5) currently, that needs MS to build an universal .Net runtime/API for all the supported OSes.
So, I believe acquisition Xamarin is not the end, but a new start point.
@Gavin, yeah the original ask can be seen as a little ambitious, but we're actually very close to the heart and soul of what this is after. iOS, Droid, and Windows 10 (really the only Windows to consider) are covered now after the Xamarin acquisition. The only platform that needs the MSFT luv is WebAssembly (which pretty much every comment except yours has been asking for. ;)).
Making sure that it can account for future platforms would be nice, too. Since there are now 3 with Miguel de Icaza saying that WebAssembly should be "simple" to add, this appears to be accounted for:
Gavin Williams commented
This is way too ambitious, and unnecessary. For instance, Legacy Windows should absolutely not be supported. I don't want Microsoft wasting time and money supporting and integrated current and new technologies into Windows XP/7 etc. Microsoft doesn't have infinite development potential. There's still so much work to do on the platforms they support now. This list is just a ridiculous burden to put on them with very minimal returns.
As many already pointed, having client side web .net code (as silverlight used to do) is much more productive for LOBs project, helping reduce costs and time to prototype and develop. We want to develop UI with a designer like winforms/wpf/silverlight.
I hope MS can implement next client side "silverlight" technology as webassembly that doesnt require plugins and run on all browsers cross-plat.
i can't get visual c++ to work
Looks like next windows update you will be able to open a UWP app when visiting a website, not many information about how it will work or how will download the app is not installed. It would be great if when visiting the website the app is download if necessary and also if it is hosted in the browser not opened as a different window.
Correct, shimmy. All of the "Big Four" are accounted for, with the exception of the Web.
I would also like to share my appreciation for your comment along with Lukas and Alberto's comment. And by appreciation I mean 100% agreement and shared vision. :)
I also have to say I am a bit disappointed in //build and Evolve in that no cross-platform UWP was announced. Xamarin.Forms is a good stab, but has a lot of problems. I guess for the time being the best answer is Perspex, which is very much under development (and does not support web):
This is now partially achieved with Microsoft acquisition and open-sourcing of Xamarin. Anyway, Xamarin doesn't provide a solution for web browser yet.