Create a Ubiquitous .NET Client Application Development Model
This suggestion is migrated to Developer Community. Please use below link to view the current status.
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!
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.
UWP needs to be added to Xamarin so we can deploy an UWP app with the exact same UI definition to other platforms. Xamarin.Forms is not suited at all for consumer apps. We need a real UWP XAML runtime on Xamarin. Also a WebAssebly version of the UWP runtime should then be made, so we can deploy UWP apps directly to the web as well! This would be pure awesome.
Cross platform for mobile is covered with Xamarin, it just needs to improve and fix bugs and integrate in UWP.
What is needed is running this UWP/XamarinForms in browser without plugins to create LOB web applications that can run everywhere ( from mobile to browser). The HTML/JS model doesnt work for .NET developers, you need to hire different skills in your development group and it makes grow difficult and unproductive.
It is like if you need to hire a sysadmin that is an expert in linux and windows, there are some but they are difficult to find and expensive, usually there are windows professional and linux professional and they just want to stay in their comfort zone and grow in windows or linux.
Same is applied to .NET and HTML/JS, you will find expert in HTML/JS but they will prefer to use NodeJS on backend than learning that MS .NET thing. You will find .NET backend experts but they are not good/productive/passionate about HTML/JS.
At the end you dont have the flexibility to hire just a full stack .NET developer when you grow that can work full stack and move from UI to backend depending on company needs while growing.
As now applications need to be written for all mobiles and WEB, I see this unified application model broken until there is a good solution to develop as web applications that run on browser.
Even if MS just decided to support it for Edge browser it would be great because remember it is mainly for LOB applications, for just a website company content/newspaper/etc HTML/JS is fine. The problem is when you want to create modern apps that run everywhere.
Microsoft is getting more and more open so why not give the flexibility and embed this on Edge to give the choice. You will be endorsing standars HTML/JS as you are doing now but also being flexible and give a choice for developers to use your flagship NET/UWP modern apps platform that you want everyone to use for building windows/mobile apps.
How about creating open source project to create solution to run UWP 10 apps on Android and iOS. Right now I don't know how, something like Xamarin Forms but using UWP UI Layer,
so your UWP app without changes can compile for Android and iOS.
If somebody is already doing it or want to do it, I like to contribute. If not? May be I do some investigation, what it takes, do it. Any suggestions?
Pretty awesome... wonder if this can now be used to integrate WebAssembly somehow?
Another thread asking the same point 5 to run XAML/WPF on browser maybe using WebAssembly: http://forums.dotnetfoundation.org/t/does-compiling-net-code-including-ui-technology-to-webassembly-sound-reasonable/1414
Hope is not so long! silverlight dead 5 years ago, cant wait other 5 years to run "native" applications in the browser again.
I watched Webassembly demo running a game in browser and looks awesome. Hope MS is working in that direction to run UWP/XamarinForms apps in browser.
I think the first step is integrate Xamarin's XamarinForm into .Net Core, make the UWP appliation model really cross-platform ( the so called UAP(universal applicatoin platform)), this may take 1-2 year, then MS need another 2-3 years to make XAML/C# for web (hopefully works on WebAssembly). So, this is a long journey, be patient wating, guys. :-)
.NET developers want to create web applications in .net and design UI using designer drag-and-drop components, dock/stackpanel, grids, click/double-click events like it has being done always for years in visual basic/winforms/wpf/silverlight/blend, etc. Hope one day we get there again for the web with webassembly, wasm, xamarin, xaml, etc
Hope now that MS acquired Xamarin they can apply that techonology for web also, and allow use XAML for web and web deployment.
Nobody is interested in doing Windows Store applications for LOB applications.
Marc Roussel commented
A converter from Silverlight to MVC X is necessary! Whatever the cost because otherwise the cost will go to all those corporations which have lots of Silverlight applications currently running and far too HUGE to convert manually.
Eric Schneider commented
Well, if we just had a true cross platform drawing api, the community could build much of it. I have a whole user interface controls stack built in .net, but can't port it because I can't draw anything.