Last year after BUILD I posted Exciting Times for .NET and since then I have had the pleasure of working much closer with the .NET team, which includes the runtime, framework, languages & compilers. Although my focus has been a lot more on internal community in the last year, such as helping run internal conferences for our field employees, I’ve also spent time helping get the .NET Foundation off the ground and learning a lot about open source communities and all our .NET Foundation projects. Oh right, I also got married. :-) It’s been a transition period for me. Going from community “evangelist” to more of a “facilitator” or “connector”. I really like Alex Hillman’s term: Tummler.
Now that we’re approaching the next BUILD, I’m even more excited about the progress we’ve been making, particularly around the .NET platform itself, and the team’s approach to open source. There are multiple tracks of .NET innovations happening so I thought I’d write a high-level “sign-post” style blog post to help people understand the major pieces and how and where to get involved with the projects. In other words, a good place to start learning about .NET 2015. At least that’s my hope!
.NET 2015 – 10,000 foot view
At a very high level, here’s the rundown of the major components that fall under the “.NET 2015” umbrella.
It’s important to note that there are three key investment areas for .NET Core that influence the development of the major components.
- .NET Innovation – bring the platform forward and innovate. We’re modernizing every layer including the languages, compilers, base class libraries, app models, runtimes and tools.
- Open Source – bring our engineering processes out in the open and develop with the help and support of the community, fostering a vibrant .NET ecosystem.
- Cross platform – expand .NET to the Linux and Mac platforms because our customers are operating in increasingly heterogeneous environments.
Major components of .NET 2015
Frameworks and Runtimes
The .NET Framework is a managed execution environment that provides a variety of services to its running applications. It consists of two major components: the common language runtime (CLR), which is the execution engine that handles running applications; and the .NET Framework Class Library, which provides a library of tested, reusable code that developers can call from their own applications.
.NET Framework 4.6 builds upon 4.5.2 and contains new APIs, improvements to event tracing, and many bug fixes. This is the next version of the full .NET Framework we know today. .NET Framework 4.6 will be included in Windows 10 and will also ship on Windows Update for previous OSes (Vista and above). See: .NET Framework 2015 Preview
.NET Core 5 is a general purpose, modular framework that can be used across a wide variety of app models and platforms, is available as open source, can be deployed modularly & locally (side-by-side), and will be supported by Microsoft on Windows, Linux and Mac OSX. It is a refactored set of base class libraries (corefx) and runtime (coreclr) which includes a new JIT compiler (“RyuJIT”), the .NET Garbage Collector, native interop and many other .NET runtime components. Today, .NET Core builds and runs on Windows. We are adding Linux and Mac implementations of platform-specific components over the next few months. See: Introducing .NET Core and CoreCLR is now Open Source.
If you click only one link from this post, make sure it is Introducing .NET Core. Immo goes into great detail explaining the reasons why we need it and how it fits.
Compilers
The .NET Compiler Platform ("Roslyn") provides open-source C# and Visual Basic compilers with rich code analysis APIs. It enables building code analysis tools with the same APIs that are used by Visual Studio. Roslyn produces platform independent Intermediate Language (IL) and is used when building against .NET 2015, including Framework and Core. At release, the entire .NET Framework will be compiled using Roslyn. There are also key language innovations in both VB and C#. See: Roslyn on GitHub. There are also innovations happening with F# language and compiler. See F# on GitHub.
“RyuJIT” is the new default just-in-time (JIT) compiler for .NET on x64. The JIT compiler takes IL and compiles it for the particular machine architecture the first time it is executed at run-time. Used for desktop and server-based scenarios, RyuJIT is an overhaul of the previous 64-bit JIT compiler that significantly reduces startup times. It also includes support for SIMD (single instruction, multiple data) which allows mathematical operations to execute over a set of values in parallel. This can offer a profound speed-up to certain types of apps that rely on vector operations. See: The next-generation JIT compiler for .NET
.NET Native compiles C# and VB to native machine code that performs like C++, so developers continue to benefit from the productivity and familiarity of the .NET Framework with the performance of native code. Typically, apps that target .NET are compiled to intermediate language (IL). At run time, the just-in-time (JIT) compiler translates the IL to native code. In contrast, .NET Native is an ahead-of-time compiler that compiles apps directly to native code and contains a minimal CLR runtime. Popular Windows Store apps start up to 60% faster and use 15-20% less memory when compiled with .NET Native. Universal Windows apps will run on .NET Native (ARM, x86, x64). See: Compiling Apps with .NET Native
App Models
App models extend the common libraries of .NET Framework 4.6 and .NET Core 5. Windows Forms, WPF, ASP.NET Web Forms, MVC 5, etc., app models that you are familiar with today are part of the .NET Framework 4.6, come with many new features, as well as benefit from the new innovations in the languages, Roslyn compiler, and RyuJIT. There’s a lot happening on the .NET 4.6 stack. See: ASP.NET Overview – What about Web Forms?, The Roadmap for WPF and .NET Framework 2015 Preview
Additionally, there are new app models that are designed to run on the optimized .NET Core 5.
ASP.NET 5 is a lean .NET app model for building modern web apps. It was built from the ground up to provide an optimized development framework for apps that are either deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. ASP.NET 5 can run on top of .NET Framework 4.6 or .NET Core 5. Today, ASP.NET 5 uses the Mono runtime to run on Linux and Mac. Once .NET Core supports Linux and Mac, then ASP.NET 5 will move to using .NET Core for those platforms. See: ASP.NET 5 Overview and Introducing ASP.NET 5
Universal Windows apps (a.k.a Universal Windows Platform) is an app-model that allows a single project to run across all Windows 10 devices – desktop, mobile, Xbox, IoT, Hololens. You no longer need separate projects for each device. Universal Windows apps will run on .NET Native which compiles IL to native machine code. See: Building universal Windows apps for all Windows devices and Getting Started with .NET Native
So what’s .NET Core, again?
.NET Core 5 is a general purpose, modular framework that can be used across a wide variety of app models and platforms because it is a refactored set of base class libraries (corefx) and runtime (coreclr). The APIs for the .NET Core base class libraries (BCL) is identical for the different app models. The APIs don’t just look the same – they share the same implementation. The majority of the APIs/assemblies are factored much more modularly and are platform independent.
App-local (or side-by-side) deployment is also a key characteristic of .NET Core. You choose the packages you need to deploy alongside your app. Modular packages are available via NuGet. This means your apps run in isolation and are not affected by machine-wide versions of the full .NET Framework. Your apps can be x-copy deployed without worry.
.NET Core is also supported by Microsoft on Windows, Linux and Mac OSX. .NET Core builds and runs on Windows today but we are adding Linux and Mac implementations of platform-specific components. And it’s all open source. It is hugely important to lay the foundation for .NET cross-platform and build a stronger ecosystem.
From code to running application – .NET Core development
I think it always helps when learning technology to have a mental model of how things work together. Here’s my simplistic view of developing apps with .NET Core, from the code/build/debug cycle to app deployment and execution. Deployment and execution is different depending on what app model you are targeting.
You write code taking very modular references to the parts of the BCL and App Model you need. Roslyn is the compiler that takes your code and produces platform independent Intermediate Language (IL). Besides the compiler pipeline, there is a rich set of APIs you can use to do all sorts of analysis on your code. If you’re using Visual Studio, there are a ton of new IDE features that utilize these APIs to give you a much more productive coding experience.
If you’re building a universal Windows app, the .NET Native tool chain takes it from there. References are built with your app into a native image deployed locally with a minimal runtime. If you’re building an ASP.NET 5 app, references and the CoreCLR are deployed with your app locally to the server. JIT compilation then happens on startup using RyuJIT.
Additionally, ASP.NET 5 allows you to make changes in your code, save the changes, and refresh the browser without explicitly re-building the project. Visual Studio uses Roslyn to enable this dynamic compilation. You still have all of the structure and power of a compiled framework, but the development experience feels more like an interpreted language.
Note: If you are targeting the full .NET Framework 4.6 then you will still enjoy the new innovations in the languages and Roslyn compiler. App deployment doesn’t change from how it’s done today, it still relies on having the full framework installed on the machine, but the JIT compilation happens with the new optimized JIT compiler, RyuJIT.
What is open right now?
Many of the pieces of .NET 2015 are open source and are under the stewardship of the .NET Foundation. We’re actively working out in the open with the community on these projects.
You can see all the repos and activity of all the projects in the .NET Foundation here on GitHub: http://dotnet.github.io/
Here’s a couple good places to get started. Check out the very detailed readme’s and contribution guides.
- ASP.NET 5: https://github.com/aspnet/Home
- .NET Core CLR: https://github.com/dotnet/coreclr
- .NET Core Framework: https://github.com/dotnet/corefx
- Roslyn: https://github.com/dotnet/roslyn
It’s also worth mentioning that the full .NET Framework is “source open”. Meaning, we’re not taking contributions and it’s not completely released under an OSI approved license, but you can explore all the source code here: http://referencesource.microsoft.com/
Engineering in the Open
OSS isn’t new to Microsoft, but it is new to the .NET runtime & libraries. It’s a pretty big deal to take a 15+ year old project that so many people have worked on internally for that long and move not only the code, but all the engineering processes out in the open. It takes time. That’s why the team started with a small set of base class libraries at first, and have been releasing more and more and learning along the way. Those learnings and best practices have rippled throughout the team. We’ve been humbled by the overwhelming support and contributions so far.
You might be thinking to yourself “I don’t have enough time in the day to build my own apps, let alone figure out how to write code for the CLR!” Fair enough, I’m with you! You choose how involved you want to be. You don’t have to write code to be a contributor. File an issue, comment on a proposal, answer a question. Or just hang around and watch the activity.
You might be thinking “I don’t want to lose the simplicity nor the quality or support that I’m used to!” Don’t worry! We’re still dedicated to the same level of quality and service as before. To think of it simply, all we’re doing is taking our engineering out in the open. Everything that we had previously done internally to build quality software is still in place, it’s just now done publicly.
I’m truly excited about this new culture on the team and the future of .NET.
Enjoy!
[UPDATE 2/26/2015] – I should have also mentioned that dotNetConf 2015 is coming up where you can learn a lot more. This is a free virtual event with speakers from both the community and product teams. Tune in for the live stream March 18th & 19th.
A very concise layout for what is being done; I'm glad to see this from Microsoft. No matter what some folks might say about the choice of license that Microsoft made to release .NET Core and the other code, it's a step in the right direction, as open source is not the flawed item that some may think.
Great job in breaking it down!
Wondering how LightSwitch fits into the picture. Any news on that?
Will things in ASP.NET 4.6 that are not included in ASP.NET 5 like webforms and VB.NET grow into a permentant fork of ASP.NET or is 4.6 the end of the line for them?
@Dave – let me see what I can find out.
@Charles – ASP.NET 4 is getting a lot of new features and has been actively and openly developed for a while by the ASP.NET team so I don't see it as the end of the line at all. See http://www.dotnetfoundation.org/aspnet-4
Beth,
I wonder what is the lightswitch. Any news on that?
Thank you.
Looking at the first picture, with Windows Store apps running on .NET Native, and .NET Core 2015. Can I interpret this as .NET native compiled Store apps running on Windows, Linux and Mac OSX?
Hi! Great article. I have just a question: I don't see any a reference to WCF, why?
Great post! Lightswitch anywhere? This is such a great tool!
Just wondering when I can use .NET in JAVA and on Apache Tomcat. :)
I love where this is going, but fuzzy on a few details. If I'm running .NET on Windows, what box is the runtime coming from? .NET Core? If it's running on Linux where is that runtime coming from? Same question for the bits of the BCL that are available to me on each.
The wording here suggests that .NET Core is a modular framework where Windows specific things are "plugins". If that's the case, then I would expect the .NET Core to be an umbrella box on this diagram with .NET Framework 4.6 being under it… that is of course if .NET Framework 4.6 is where those Windows specific things are living?
I'm fully expecting that all the things I have today will be available to me on Windows and a subset of those things will be available to me on other platforms. What those subsets are and what box they are coming from is what's not really clear here. Maybe a better way to frame my confusion is this question: what is the difference between .NET Framework 4.6 and .NET Core 5 and what is the relationship between them?
Well done! Kudos to MS and a great article.
Great article. Is it true that ASP.NET 5 does NOT support VB.NET? And also, web forms is not included in ASP.NET 5 either, correct?
I do like a lot of the improvements made to .NET but my company has a huge code base of webforms in vb.net so with this separation it really feels like the writing is on the wall. Migrate to MVC and C#. Long-term it's hard for me to fathom Microsoft continuing to support two different .NET Frameworks in parallel.
You mentioned that .NET Core 5 will have native interop. Can I assume that windows universal apps will be able to comunicate with others win32 apps or local windows services using a kind of IPC or interop comunication in a full duplex fashion? So far, Store apps are sandboxes by WinRT. Will be there a change about that?
Thanks!
I am getting worried about this… "Additionally, ASP.NET 5 allows you to make changes in your code, save the changes, and refresh the browser without explicitly re-building the project."
We have had this edit and refresh capability going back several versions. In fact, we can edit and continue DURING the response in many situations. I remember when the first version of .NET took away edit and continue, and it was just horrible, horrible, horrible.
Will we be losing any of the edit and continue capabilities we have now in ASP.NET in VS 2013?
Why not open source something that people are actually asking for?
visualstudio.uservoice.com/…/3725445-xna-5
Microsoft promised to bring .Net Native to Desktop apps which is not mentioned in the blog post or in the graphics.
Hi folks — all great questions! I'll try and answer the ones I can, and I'll track down some other team members for the rest.
@Dave — The team is investigating/testing the LS services on top of 4.6. Think of LS as an app model on top of the ASP.NET 4 app model. Technically, you could just change the target FX in the Web.config and test it yourself :)
@Timmy – That diagram was a struggle for me to put together. The first picture isn't meant as an architectural diagram at all. It's just conceptual. The universal Windows apps model and the .NET native tool chain & runtime are specific to Windows. The .NET Core 5 is cross-plat and so is ASP.NET 5's app model.
@cosgiu83 – I didn't put out an exhaustive list of every app model — WCF is still part of .NET Framework 4.6.
@Kelly – Make sure you read blogs.msdn.com/…/introducing-net-core.aspx which goes into much more depth and will answer your question. .NET Core is essentially a fork of the NET Framework where we are taking the base class libraries and optimizing and refactoring them into a much more modular set. So it is a separate framework implementation, but you would still recognize and use the libraries similarly in development. The Core libraries and CoreCLR is cross-plat. .NET Framework 4.6 is Windows only, but provides you a the full range of app development on Windows (just like the .NET framework does today).
@Darrell – Web forms isn't going away at all. In fact, it's got a lot of new features coming. See http://www.asp.net/…/aspnet-5-overview . But yes, that app model isn't supported on ASP.NET 5. I'll have to find someone to comment on when they'll have VB support, I'm not sure what the status is. You can think of Core 5 as a refactored subset of the base class libraries, not as a replacement for the whole .NET framework. We will need the full framework on Windows to support all our development scenarios. It's not going away.
Oh, seems I got it! "Core 5" is what .NET HAD_TO_BE when it was introduced 12 years ago! So all 12 years MS pushed bu115h!t worked on Windows only and now, when they just realized what they copy from Java, they decide to run .NET everywhere! Great guess, guys! .NET is supposed to be Core 5! Who was that stupids who manage .NET platform and never ever thought about the future?? Show me these smarties and I'll show why MS is the NUMBER LAST on mobile market! Ha-ha.
@Beth: what a reason to make so well-aligned diagrams if they mean nothing?? Do you see first time idea that if one block sit above another, it means HARD LINK between 'em?? Better to keep silence than confusing pure techies with lamerish diagrams. If you're unable, ask somebody to draw PROPER diagram where we can clearly understand what depends from what and why we cannot use one technology on another platform. IT IS IMPORTANT – to give clear explanation, because MS already stay on the edge "rolling down". If we don't get what we expect by pictures, be sure – we will quickly find alternative to all MS toys.
It's only a small step. I don't believe MS will ever change. They are only trying to safeguard their interests (software patents and threats to FOSS will not go away any time soon). IMHO MS becoming true supporters of Open Software is just wishful thinking.
They are only trying to impose their system (dotnet) so everyone will become dependent on it.
@Thorn — if you have a suggestion on how to improve the conceptual diagram, I'm all ears. I think I was clear in the narrative that goes with it below, explaining all the major components.
Probably, because MS itself doesn't know where it goes? They jump from one edge to another, bouncing like a poop in ice-hole. Their new "big idea" is mobile (despite the fact they are nobody there) and XNA is not suit there – they think ridiculous HTML5 + JS is the future! He-he. Well, MS, minus 10 years for your progress – let's wait when you realise you lost desktop running for alien mobile market.
@Beth: give me all documentation you have and I'll show what MS supposed to build. Currently me (and millions of developers) have only diagrams like your. Just one conceptual mistake as example:
Beth> The universal Windows apps model and the .NET native tool chain & runtime are specific to Windows.
How they can be "Windows-specific" if they stay above "universal" Core 5?!! .NET 4.6 – that's who "windows-specific" isn't it?
@Thorn – like I said, the app model is Windows specific. This article explains why the .NET native tool chain needs much more modular references to the base class libraries. blogs.msdn.com/…/introducing-net-core.aspx
I encourage you to read all the references I linked to in order to go deeper.
When will there be an official release of .NET2015 for any/all platforms?
@Rachsegdo – .NET Native will be focused on Windows Store applications in .NET 2015 and Visual Studio 2015. We'll be investigating other app scenarios, like Desktop apps, in future versions of Visual Studio. Sorry for any confusion.
Kelly Brownsberger asks right questions. This post is unintelligible.
@Ark – We'll be sharing more information at the upcoming BUILD conference
@Mikhail Orlov – My apologies. Do you have a specific question I can help explain better?
@Mikhail Orlov, Kelly Brownsberger:
The goal of this post was to provide a high level landscape of .NET 2015, which also includes .NET Core. If you're curious about .NET Core and how we think about the components, how it relates to the .NET Framework, and how we're moving the BCL forward, you should take a look at this post that elusively focuses on .NET Core:
blogs.msdn.com/…/introducing-net-core.aspx
You may also find the following Channel 9 video helpful. David does a great job breaking down .NET Core on the whiteboard.
channel9.msdn.com/…/Immo-Landwerth-and-David-Kean-Open-sourcing-the-NET-Framework
If you've specific questions, please let me know. I'm happy to provide more details.
Thanks Beth for clear picture of what's happening with .NET – appreciate this a lot!
@Chris
Re: Will we be losing any of the edit and continue capabilities we have now in ASP.NET in VS 2013?
It's worth pointing out that the Edit and Refresh experience that is being called out above is a distinct experience from Edit and Continue. Edit and Refresh refers to the ability for the runtime to detect code changes and recompile the code so you get the updates the next time the code is execute, where Edit and Continue specifically refers to the ability to edit files while you are stopped in the debugger so you can make changes in the middle of execution.
At this time Edit and Continue does not work for ASP.NET 5, but it is something we are working on and will make available for ASP.NET 5 projects as soon as it's ready.
Yeah, what is happening to XNA? Is it going to be open-sourced to be incorporated into MonoGame?
What's unsaid?
Native 2: We needed one more picture to tell us where we're going. Where we're at now is important, but for decision making, we need to know where we're going. Will native ever get extended to server apps?
Full Framework: Seriously, I smell this being called legacy, but nobody's saying it! It's hard to be up front about these things, but when you delay the news it screws up planning and decision making that's critical for customers. We didn't care that we got trashed in the Silverlight debacle, what hurt was the mea culpa's we had to deliver customers! Nobody likes to look that dumb!
Having said that, this was indeed a valuable resource, so the author(Beth) did a great job, we just need the rest of the story.
Wow, Microsoft. Rule #1: Do not screenshot from Microsoft Word. See Picture 1, where the spell checker for "RyuJIT" is showing. Wow… just wow…
Rule #2: Microsoft Windows does many error messages. As I visited this site, a error message was shown by my browser. This is the FIRST TIME in my life I saw a error message from a website. Wow, Microsoft, you are the BEST in doing not good. Just wow….
Beth, this is a great article. In 2013, I left my .NET career to work with node.js/PHP/Scala/AngularJS. When I heard of Microsoft's involvement with node.js and the plans to make .NET open source, I decided to move my career back into .NET. Microsoft has done the community a solid by moving so many projects into the open.
My only question about your article is related to the reference source. There's a release of reference source on github at github.com/…/referencesource, which lists an MIT license. Is this intentional? I noticed the license on referencesource.microsoft.com is still MS-RSL, which is far more restrictive than MIT.
Thanks!
@mv
Actually, the official logo of RyuJIT includes the squiggle. Just kidding, that's actually quite funny :-)
@Jim Schubert
Thanks, very much appreciated!
The website referencesource.microsoft.com contains most of the .NET Framework. Some of it is licensed under MIT (like the BCL for instance) but some of it is not (such as WinForms and WPF). It would be somewhat confusion to call out there which is which, why we decided to just brand everything under the most restrictive license. To make it clear what's MIT, we uploaded that subset of GitHub under github.com/…/referencesource.
Does that make sense?
Thank you for the information and the work to assemble this, well done! I'm really looking forward to seeing WPF get some love.
And please ignore the juvenile comments that invariably crop up (that's just youth).
@Andrew B. Hall
Thanks for the explanation, but I know that for me and many other developers the Edit and Continue is not only the best productivity tool, but the best learning tool. I suspect the people that work on the upgrades know this stuff so well that it seems unnecessary for them, the evidence being that it seems to always get jettisoned for the Next Big Thing.
IMHO, it is the most important feature, and no product should be upgraded unless Edit-And-Continue comes with it.
@Beth Good to have you back; I always enjoy your blogs and articles, and this one was particularly timely. MSFT seems to have its head in the clouds these days, and we desktop developers really suffer from a lack of communications and direction. So thanks…
Concerning LightSwitch; I found this post of yours right above the LightSwitch "Team" blog "The Road Ahead", which hasn't been responded to for nearly three months, and there is no reply to anyone's questions. Is there actually anyone working on LS? If so, why no response? It is quite rude. If not, please Open Source it. It is too valuable to let it linger and die.
I liked so much this article, ilustrate the most important changes in .Net technologies.
Thanks for share.
Yep, where does lightswitch fit in?
p.s. congratz on getting married
Xy Ziemba [MSFT] : "@Rachsegdo – .NET Native will be focused on Windows Store applications in .NET 2015 and Visual Studio 2015. We'll be investigating other app scenarios, like Desktop apps, in future versions of Visual Studio. Sorry for any confusion."
It is sad that this is not communicated more clearly but just mentioned in a quick comment. I believe the request to bring .NET native to the desktop/WPF has been requested in every post about .NET native and now it is just dismissed in a random comment.
Have there been a blog post explaining this previously? Please provide a link if there has.
from where i can download .NET Core and start developing cross platform app, i dont want to comiple the source code of core and use it as library.
Hi Beth, my customer wishes to use LightSwitch for a large number of departmental apps providing functionality to tens of thousands of users. If they really must they will use the Silverlight client but far better would be a WPF client although, should this come to pass building extensions for a WPF client must be made easier than it is for the Silverlight client!
Where can we expect LightSwitch to go in the future?
Why not open source WPF and Winform?
Again a great atrticle from Beth. She transforms very complex situations to small illustrations, christal clear and understandable for millions of developers. Great and unique.
However, this time she had one problem. In their huge conversions Miscrosoft still has doubts.
And always being straith and honestly, she has to leave these doubts as doubts.
.Net 4.6 is for the short time, so not really relevant for the most of us.
So I'm afraid we still have to wait for any ideas of a link between Core5 and Lightswitch, VB, etc.
Hi
Firstly thanks a lot for making dotnet open source and cross platform(true cross platform across OSs), but This really getting confusing like developer like me dont want contribute to actual framework but want to develop cross platform apps using .NetCore, is there any way i simply download the framework,libraries(like the tradionaly DonetFX) and start devloping for all three OSs.
Hi
Firstly thanks a lot for making dotnet open source and cross platform(true cross platform across OSs), but This really getting confusing for developer like me who dont want contribute to actual framework but want to develop cross platform apps using .NetCore, is there any way i simply download the framework,libraries(like the tradionaly DonetFX) and start devloping for all three OSs.
I went to the dotNetConf2015 and did a search for "LightSwitch". Nothing. How absolutely stupid or rude can Microsoft get about this? how about a simple yes or no: any plans for LightSwitch? Why is it so hard to say anything at all about this?
What's the relationship between 4.6 and CoreCLR. Is CoreCLR a subset? Why do we need both? Is there a plan to deliver a version that has the full 4.6 features and supports .NET Native? Right now CoreCLR has dropped so much that migration of any significant .NET app is unrealistic. System.Transactions is especially painful.
Hi folks. sorry for the slow response, I've was OOF earlier this week so catching up.
For those of you asking about LightSwitch here, I have confirmed with the team that they will engage with you on the next set of features after BUILD (like they promised in the team blog).
@Vivek – Currently there are no official binaries (we're still building) but keep an eye on github.com/…/corefxlab and the discussion here forums.dotnetfoundation.org/…/5
@Mark – .NET Core is essentially a fork of the NET Framework base class libraries (BCL) that we're optimizing and refactoring into a much more modular but unified set. We're doing this incrementally. There are many app models in the .NET Framework but to start, ASP.NET and UAP app models are our focus for Core 5.
Congrats on getting married Beth :)
@Pete – Thanks!! He keeps me sane. :)
And congrats from europe Beth. Have a great and very happy marriage.
@Pieter – Thank you!
So much for the "One ASP.NET" hype of unifying ASP.NET i.e. Web Forms and MVC etc.
This is yet another fork! There is no One Anything from what I see.
So does that mean .NET Framework 4.6 will progress to let me guess 4.7, then 4.8, then 4.9 … and then end of life?
Another dead end waiting.
Perhaps a good look at PHP might be wise.
I wonder what is .net core and u satisfied my curiosity. Thx for your posting and a long and happy marriage to you madame.
Missing from the story is cross-platform UI. Will Microsoft rely on Xamarin, especially Forms, or offer something like WPF/Xaml? I don't expect an official answer but wonder what others are speculating.
LightSwitch is not on the next build? Why?
social.msdn.microsoft.com/…/can-we-have-another-town-hall-and-detailed-product-road-map-please
We all waiting for an answer!
Is LightSwitch now off. (See foxpro, silverlight)
And next year we get again introduced a new fantastic product?
And how can someone create an ASP.NET Mobile and Desktop application? There is not even examples!
Hi J.Nord. After MS killed Foxpro, we needed years to reach the level that Foxpro already had. But nowadays MS does not have that authority anymore.
In stead of nice ideas, MS now needs real solutions for developers to restore marktshares in a dynamic world.
Problably they need more attention for PHP and Java. And in my opinion Lightswitch becomes a winner, extremely popular, if MS removes the LS requirements SQLbase and IIS. The fastest and most popular RAD-framework for databases and HTML … would be great … for MS … for the developerworld …
Is there an internal MS policy that says "Never talk about XNA. Ever." or why are all the questions regarding XNA completely ignored (not just here, but seemingly everywhere, including the top-voted uservoice item)?
Good article.
This is a really great article… well-written, but it is sad to see that MSFT continues to fragment its technologies and ignore the pleas of its developers. Silverlight was supposed to enable cross platform development, LightSwitch is a widely-loved LOB incarnation of that, and XNA is a very popular technology in its own right.
All of these have been discarded and/or ignored by MSFT.
The obvious question here is why not just keep extending .NET? C#/Xaml has been such a successful medium with .NET that is seems like the obvious direction is to keep THAT going. WinRT/Universal Apps has been a terrible translation of what C#/Xaml used to be in Silverlight5 and is TODAY with WPF. It's almost as if MSFT put an army of interns on that implementation because it is T-E-R-R-I-B-L-E (which is also reflected in its adoption).
Even Xamarin.Forms does a better job of utilizing Xaml concepts, which is pretty telling (and sad).
In any case, I am looking forward to //build. I really hope all of this gets fixed and tied up in a pretty package instead of this fragmented stew shown in the diagrams (I know that's not your fault, Beth. You're just a — great! — messenger). It would be great to develop like you could in Silverlight 5 again (one can dream). Xamarin.Forms is the closest thing to that now and here's to hoping that we hear of a great announcement around this technology at //build!
So in effect .Net Core 5 is going to take the fight directly to Java in terms of cross platform compilation and execution. Is that accurate?
So, if universal windows apps works on .NET Core and Core is multi-platform, does it means that universal windows apps will become available even in linux and mac?
KUDO's to Microsoft; I am so thrilled to have the capability to get back into .NET.
@Cc, @MichaelD, I couldn't agree more. Not since IBM has any company head-faked its developers so many times. I put a lot of time into all of the above: XNA, Silverlight, LightSwitch with lots of "Exciting" announcements by ScottGu et al.
I hope //Build has some good news, but frankly I expect it to be centered around building games, putting things in a cloud, and Holo lens. I would like to be happily surprised, but Microsoft has certainly set my expectations very low.
So, the next time some from Microsoft stands up with some "Exciting" news, just remember XNA, Silverlight, LightSwitch, and go look for alternatives elsewhere.
What a mess. Do over. This time think about it.
Hello? What about LightSwitch? Bueller…. Bueller…. Bueller….
Dear Beth Massi,
We LightSwitch developers truly miss you as both our wonderful Mentor for LightSwitch and as the beautiful person you were to us all. Congratulations on your marriage and knowing from my own many years of being with my lovely wife and family that you will have a beautiful life together and family (nothing can be nicer than to share your life with someone you love and that loves you).
Without your presence in the LightSwitch community and not hearing any LightSwitch encouragement from Microsoft for the past 11 months, LightSwitch developers are really confused and at a loss and one-by-one our great LightSwitch "Extension" developers are fading away. We honestly never expected this huge "let down" from Microsoft, especially as enthused as we all were with LightSwitch. Well, anyway, we have your nice memory and thankful for all you did and hard work trying to make LightSwitch a great product for us developers. With another year or so of hard work from the LightSwitch team, this could have been a super product.
Thank you again for everything,
Edward
Well done!
If a universal app references a WinRT component, which references another WinRT component, do you have two "thunks" (in the sense of going from managed to unmanaged or vice-versa). I'm breaking some code into modules, but if breaking the code into two WinRT projects will hurt performance, maybe I should keep them as one. Is there any information on how WinRT works "under the hood" that will help people make these sorts of decisions?
@Jeff that's a great question about WinRT components, and managed/native interop overhead.
There’s actually a simple and exciting answer. In UWP apps for Release builds, *all* .NET code is compiled to native via the new .NET Native compiler. (It takes every piece of MSIL in your project including MSIL from third-party libraries, and turns it into native code using the same back-end optimizing compiler as C++. It does this even when you have a C++ or JS app that references one or more WinRT components that were authored in VB/C#.)
This removes the interop penalty you asked about: the resulting .NET Native code no longer uses the CLR, nor its JIT, nor its marshalling code, so that removes the interop overhead.
There are other benefits: thanks to native compilation, your C#/VB UWP apps will start about 50% faster. And consume a bit less battery since they don't have to be JITted.
Note that .NET Native compilation only happens for release builds. In debug builds, everything's left as MSIL so that debugging and EnC continue to work.
You asked for information on how it works under the hood. Here is documentation specifically about .NET Native:
[MSDN] Compiling Apps with .NET Native – msdn.microsoft.com/…/dn584397(v=vs.110).aspx
[MSDN] Runtime Directives (rd.xml) Configuration File Reference – msdn.microsoft.com/…/dn600639%28v=vs.110%29.aspx
[blog] The .NET Native Tool-Chain – blogs.msdn.com/…/the-net-native-tool-chain.aspx
[blog] .NET Native Deep Dive: Dynamic Features in Static Code – blogs.msdn.com/…/net-native-deep-dive-dynamic-features-in-static-code.aspx
[blog] .NET Native Deep Dive: Help! I Hit a MissingMetadataException! – blogs.msdn.com/…/net-native-deep-dive-help-i-hit-a-missingmetadataexception.aspx
[blog] .NET Native Deep Dive: Help! I Didn't Hit a MissingMetadataException! – blogs.msdn.com/…/net-native-deep-dive-help-i-didn-t-hit-a-missingmetadataexception.aspx
[blog] .NET Native Deep Dive: Making Your Library Great – blogs.msdn.com/…/net-native-deep-dive-making-your-library-great.aspx
[blog] .NET Native Deep Dive: Optimizing with Runtime Directives – blogs.msdn.com/…/net-native-deep-dive-optimizing-with-runtime-directives.aspx
[blog] .NET Native Deep Dive: Debugging into Interop Code – blogs.msdn.com/…/net-native-deep-dive-debugging-into-interop-code.aspx
On the more general subject of how .NET works in UWP apps (in all respects, not just .NET Native), I'm part way through a blog series on the subject:
blogs.msdn.com/…/win10
Article appreciated that enables accurate understanding of this boom .NET 2015 (Core .NET and .NET 4.6). In addition, the share of Lucian to details and references are exciting. Native .NET amazed to know about Windows 10. Knowing that exceed performance on IL and nothing surprising in C ++.
Thanks for all.
It is great to see the microsoft worrying about the mobile platform on other operating systems .