I suggest you ...

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:
http://i0.wp.com/blog.developers.win/wp-content/uploads/2015/09/Vision.png

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)
4) Droid
5) iOS
6) Macintosh
7) HTML5
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)
2) HTML5-Compliant - For web-hosted scenarios, via .NET-to-JavaScript transpilation
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:
http://blog.developers.win/series/bridge-to-dotnet-ubiquity/

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!

9,131 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Developers Win! shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    414 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      Submitting...
      • Muhammad Touseef commented  ·   ·  Flag as inappropriate

        xaml and c# must be the only 2 languages to create every kind of software on this planet. No complex models or frameworks like angular, react for web, no javascript required for the web. xaml and c# are doing a great job for UWP and also for xamarin.forms ( not enough performance though). All c# developers love xaml and hate JS. that is why one single framework model with c# and xaml only to create all types of apps/websites/progressive web apps. and any type of software in future should be create by c# and xaml only without any third language involved whatsoever/

      • Yoram Bucks commented  ·   ·  Flag as inappropriate

        @Marc Roussel, no it is not what Razor Engine does, it is an object that include controls, properties and code behind (like WPF or any other UI technology) but at run-time instead of creating an instance on the user device it creates the instance on the server.

      • birbilis commented  ·   ·  Flag as inappropriate

        I think some other platforms too transport platform agnostic UI "commands" and render those at the client-side with a custom platform-specific renderer. Probably Avalonia does so, don't remember where I had seen it some time ago

      • Marc Roussel commented  ·   ·  Flag as inappropriate

        I see. Is it not what Razor Engine does at the back-end to render the view and the model which is sent to the client ?

      • Yoram Bucks commented  ·   ·  Flag as inappropriate

        @Marc, you are right and it is a shame that the industry did not adopt Silverlight as a standard.
        From my reach experience I can assure you that nothing is event close to Silverlight or WPF.

        I believe that the programmer job is to teach the computer what it should do in the most simple and clean way.

        Silverlight (or WPF), Binding, XAML, BLEND and C# are the best set of tools that I know to develop a front-end,
        But application is not front-end alone it has also backend - my goal was to find the best way to teach the computer what the whole application should do.

        So, Silverlight (or WPF), Binding, XAML, BLEND and C# are good start, but instead of controls that run on the front-end and render graphics, I developed controls that run on the backend and render textual information that can be translated automatically to any platform.

      • Marc Roussel commented  ·   ·  Flag as inappropriate

        @Yoram Bucks I'm actually using MVC 5 with Razor view and I'm already developing with ASP.NET Core 2.0 and let me tell you that binding is rock solid with the technologies and extremely easy.

        For everybody still reading. As a reminder, here's the real deal

        1) BLEND or any kind of tool which can let us develop UI easily by placing controls on the design surface and bind it directly to our model RIGHT in the UI tool then as we all know in Silverlight we double click, or whichever event you need, you just go on the code behind and do your job.
        2) ONE and ONLY one language C# should be used and not even a need to update a Proxy for client as this should be automatically done when we use the instances on the client side.

        The goal is to be productive quickly and easily. XAML replaces HTML and C# replaces JavaScript
        and please don't give us something which needs 10 to 20 different libraries out there which we Nuget all the time to achieve simple things like datepicker or globalization or whatever you can think of.

        Why this is so hard to grasp ? I see many people trying to invent something which isn't the need

        The need is to make the ONE tool and behind all this do whatever it takes to make it works on the web.

        We are waiting for this ONE tool which we had with Silverlight. Right now I have to redo a huge project for a client which was in Silverlight and the best I have right is ASP.NET MVC 5/6 which requires 6 different syntax and a lot of work and attention not counting research on every single library to know why things aren't working the way it should just because a dependencies is missing or there's a bug present in the library. I don't need to explain how much all this is excruciating.

        We don't even have a designer for Razor and the technology is there since a relatively long time. I'm speachless about that.

      • Yoram Bucks commented  ·   ·  Flag as inappropriate

        @mike with dotNetify you build your UI as HTML they give nice 2-Way data binding I find some similarity to Angular and to the binding idea of WPF.

        My tool is completely different you build your UI with generic controls on the server, you can put data directly to the control.

        Just imagine that you are working on a standard .net project on the backend and can use directly controls like TextBox, TextBlock Grid, Button, Camera, GPS – that simple.

      • Yoram Bucks commented  ·   ·  Flag as inappropriate

        @mike what I meant it that my solution uses standard HTTP protocol over ASP.NET and IIS in order to get and send information to the client with the latest framework therefore I am limited to those abilities. If IIS can support Millions concurrent users so do I,

        I have an actual application with Hundreds concurrent users. It installed on a single IIS server on a virtual machine and work fine.

        I don't familiar with the server load/scale problem that you asked about.

      • Mike-EEE commented  ·   ·  Flag as inappropriate

        Hey good to hear @Oliver. Many others have said the same. We should start pestering Telerik at some point. :)

        @Anonymous, I am sure we are going to see more projects like that. However the problem remains that you now have at least 2 different code bases (or view bases) that you have to develop and maintain. The goal here is to have ONE code (or view) base that used and from there (via theming, etc) have it adapt to the hosting environment/platform.

      • Oliver Shaw commented  ·   ·  Flag as inappropriate

        Just had a full play with Noesis that now supports 99% WPF!

        It bloody good... it's super fast and easy to work with.

        They got binding and support for .NET core.

        I'd say the only missing components are Telerik controls or other.

        If Noesis had these we'd start building in it tomorrow.

        We're going to look how possible it is to convert UWP controls to work with Noesis.

        I also really like Avalonia and it'll interesting to see who wins support from Telerik first!

      • Mike-EEE commented  ·   ·  Flag as inappropriate

        Well you say no problem, but how many concurrent users have you actually had to prove this? Several hundred might work, but thousands? Hundreds of thousands? Millions? Also, when you reference ASP.NET are you talking the old or the new re-written ASP.NET Core? The performance comparison between the two are staggering.

        If you have found some way to legitimately cater the server load/scale problem then more power to you, otherwise, I reserve judgement until I see this ****** in the wild working as described under cloud scale/load. :)

      • Yoram Bucks commented  ·   ·  Flag as inappropriate

        No problem to address these two aspects and it is proven with solutions I delivered.

        1) Is the same scaling as ASP.NET – see no problem with big solution – and also can be installed on IIS server farm.

        2) The same code run for Windows, iOS, Android and HTML. I am sure Avalonia and Noesis worked hard to achieve it because they need to compile the code to different platforms, for me it is easy – the code run on the same server for all platforms.

      • Mike-EEE commented  ·   ·  Flag as inappropriate

        Ah yes, there have been some attempts at what you are describing. There are two problems with this, however:
        1) Scale. Since you are placing the work in the server, this places the processing within the server and struggles with scaling out the solution.
        2) Sharing code. Are you able to say that the same code that works in your scenario is the exact same code that works on iOS, Droid, and Windows platforms? This is what Avalonia and Noesis offer, as they allow you to use the same code and each of the platforms are merely relegated as rendering hosts.

        If you are able to address these two aspects, then I wish you the best of luck!

        BTW, for those watching at home, this issue has now reached 8,000 votes.

      • Yoram Bucks commented  ·   ·  Flag as inappropriate

        @Mike I took a different approach, I developed a library of client controls that run on the server.

        Programmers work with the whole .NET framework and are able to combine client and server components – for example in the onClick handler you can use sqlConnection and a TextBlock – The code run on the server.

        My controls do not render graphics instead they send information to the client. It is similar to WebControls of ASP.NET but with different way of rendering and sending information.

        In order to run the app - in the client machine I have a generic native app or JS that can translate the information into native UI or HTML and send back to the server information about the client's events.

        For you question whether my is better the answer is depended. For games and real-time I will not use my solution yet. But for enterprise solutions and web sites it is not just better it is a game changer.

      Feedback and Knowledge Base