This link has been bookmarked by 30 people . It was first bookmarked on 11 Jan 2017, by someone privately.
-
17 Oct 17Jorge Gamba
Vaya lío el mundo loco del frontend. No me extraña que acabemos con Javascript fatigue. https://t.co/qLreEr6VkK
What .NET Developers ought to know to start in 2017 by @shanselman https://t.co/zrREhUpshh -
24 Apr 17
-
10 Apr 17
-
17 Feb 17
-
12 Feb 17
-
There's TLAs (three letter acronyms) in every language and computer ecosystems. Don't get overwhelmed, start with Need To Know and move slowly forward. Also, remember YOU decide when you want to draw the line. You don't need to know everything.
-
You may learn from the Metal Up or from the Glass Back.
-
First, you can start learning .NET and C# online at https://dot.net. You can learn F# online here http://www.tryfsharp.org.
-
What's .NET? .NET has some number of key components.
-
- Here are the three main runtimes:
- .NET Framework - The .NET framework helps you create mobile, desktop, and web applications that run on Windows PCs, devices and servers.
-
.NET Core - .NET Core gives you a fast and modular platform for creating server applications that run on Windows, Linux and Mac.
-
Mono for Xamarin - Xamarin brings .NET to iOS and Android, reusing skills and code while getting access to the native APIs and performance. Mono is an open source .NET that was created before Xamarin and Microsoft joined together. Mono will support the .NET Standard as another great .NET runtime that is open source and flexible. You'll also find Mono in the Unity game development environment.
-
- Here are the main languages:
- C# is simple, powerful, type-safe, and object-oriented while retaining the expressiveness and elegance of C-style languages. Anyone familiar with C and similar languages will find few problems in adapting to C#. Check out the C# Guide to learn more about C# or try it in your browser at https://dot.net
-
F# is a cross-platform, functional-first programming language that also supports traditional object-oriented and imperative programming. Check out the F# Guide to learn more about F# or try it in your browser at http://www.tryfsharp.org
-
Visual Basic is an easy language to learn that you can use to build a variety of applications that run on .NET. I started with VB many years ago.
-
- Where do I start?
- https://dot.net is where to download .NET Core and Visual Studio Code
- https://docs.microsoft.com is where the documentation is
- https://github.com/dotnet is where the open source code starts
-
- After runtimes and languages, there's platforms and frameworks.
- Frameworks define the APIs you can use. There's the .NET 4.6 Framework, the .NET Standard, etc. Sometimes you'll refer to them by name, or in code and configuration files as a TFM (see below)
- Platform (in the context of .NET) - Windows, Linux, Mac, Android, iOS, etc. This also includes Bitness, so x86 Windows is not x64 Windows. Each Linux distro is its own platform today as well.
-
TFMs (Target Framework Moniker) - A moniker (string) that lets you refer to target framework + version combinations. For example, net462 (.NET 4.6.2), net35 (.NET 3.5), uap (Universal Windows Platform). For more information, see this blog post. Choosing a TFM decides which APIs are available to you, and which frameworks your code can run on.
-
NuGet - NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.
-
What's an Assembly? - An assembly is typically a DLL or EXE containing compiled code. Assemblies are the building blocks of .NET Full Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions. In .NET Core, the building blocks are NuGet packages that contain assemblies PLUS additional metadata
-
.NET Standard or "netstandard" - The .NET Standard simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes.
-
.NET Framework vs. .NET Core: The .NET Framework is for Windows apps and Windows systems, while the .NET Core is a smaller cross platform framework for server apps, console apps, web applications, and as a core runtime to build other systems from.
-
CLR – The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes.
-
CoreCLR - .NET runtime, used by .NET Core.
-
Mono - .NET runtime, used by Xamarin and others.
-
CoreFX - .NET class libraries, used by .NET Core and to a degree by Mono via source sharing.
-
Roslyn - C# and Visual Basic compilers, used by most .NET platforms and tools. Exposes APIs for reading, writing and analyzing source code.
-
GC - .NET uses garbage collection to provide automatic memory management for programs. The GC operates on a lazy approach to memory management, preferring application throughput to the immediate collection of memory. To learn more about the .NET GC, check out Fundamentals of garbage collection (GC).
-
"Managed Code" - Managed code is just that: code whose execution is managed by a runtime like the CLR.
-
IL – Intermediate Language is the product of compilation of code written in high-level .NET languages. C# is Apples, IL is Apple Sauce, and the JIT and CLR makes Apple Juice. ;)
-
JIT – Just in Time Compiler. Takes IL and compiles it in preparation for running as native code.
-
Where is .NET on disk? .NET Framework is at C:\Windows\Microsoft.NET and .NET Core is at C:\Program Files\dotnet. On Mac it usually ends up in /usr/local/share. Also .NET Core can also be bundled with an application and live under that application's directory as a self-contained application.
-
Shared Framework vs. Self Contained Apps - .NET Core can use a shared framework (shared by multiple apps on the same machine) or your app can be self-contained with its own copy. Sometimes you'll hear "xcopy-deployable / bin-deployable" which implies that the application is totally self-contained.
-
async and await– The async and await keywords generate IL that will free up a thread for long running (awaited) function calls (e.g. database queries or web service calls). This frees up system resources, so you aren't hogging memory, threads, etc. while you're waiting.
-
Portable Class Libraries - These are "lowest common denominator" libraries that allow code sharing across platforms. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms.
-
- .NET Core is composed of the following parts:
- A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
- A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
- A set of SDK tools and language compilers that enable the base developer experience, available in the .NET Core SDK.
- The 'dotnet' app host, which is used to launch .NET Core apps. It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. The same host is also used to launch SDK tools in much the same way.
-
GAC – The Global Assembly Cache is where the .NET full Framework on Windows stores shared libraries. You can list it out with "gacutil /l"
-
Assembly Loading and Binding - In complex apps you can get into interesting scenarios around how Assemblies are loaded from disk
-
Profiling (memory usage, GC, etc.) - There's a lot of great tools you can use to measure – or profile – your C# and .NET Code. A lot of these tools are built into Visual Studio.
-
LINQ - Language Integrated Query is a higher order way to query objects and databases in a declarative way
-
Common Type System and Common Language Specification define how objects are used and passed around in a way that makes them work everywhere .NET works, interoperable. The CLS is a subset that the CTS builds on.
-
.NET Native - One day you'll be able to compile to native code rather than compiling to Intermediate Language.
-
.NET Roadmap - Here's what Microsoft is planning for .NET for 2017
-
"Modern" C# 7 – C# itself has new features every year or so. The latest version is C# 7 and has lots of cool features worth looking at.
-
Reactive Extensions - "The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators." You can create sophisticated event-based programs that work cleanly and asynchronously by applying LINQ-style operators to data streams.
-
A great list, but I'd certainly upgrad LINQ to a higher category. Having just that little bit of quasi-functional power makes C# so much easier to work with.
-
No mention of the Reactive Extensions? Sad panda. Microsoft invented the technology almost ten years ago, adoption within the MSFT ecosystem is minuscule compared to the explosive growth outside of dotnet.
-
+1 on Reactive Extensions. It is a transformative technology and not enough people leverage it in the .NET ecosystem.
-
While I applaud the promotion of F#, going about it by recommending tryfsharp is not going to get such good results.
Indeed, the most frequently asked question on the F# forums is some variation of "Why doesn't tryfsharp work in my browser?" To which the answer is "Because the tryfsharp site uses Silverlight for its interactivity, meaning that it only works in browsers still supporting the old plug-in model, and with Silverlight installed." -
https://dotnetfiddle.net/ works for VB, F# and C#
-
Is it worth clarifying the role of UWP apps in relation to .NET Full Framework and .NET Standard? When you say "The .NET Framework is for Windows apps and Windows systems" it omits the fact that UWP Windows Apps actually leverage .NET Core instead of Full Framework - surprising, since UWP apps were the first production-released consumers of .NET Core. Early graphics that you and Hunter showed included UWP apps in the ".NET Core" block (is there a good reason? Would love to learn if so.)
In that same regard - "one day you'll be able to compile to native code rather than compiling to Intermediate Language." UWP apps leverage that today, whether the AOT compilation happens in-store or built on-machine. -
No mention of WCF but you have WPF in there? Lolz. One of these is doa in the real world and it isn't WCF.
-
I would add OWIN and the MVC pipeline/module/whatever the correct term for the middleware that OWIN enables in ASP.NET in the "Nice to know" section. It's important knowledge for web devs, but not everyone is a web dev.
-
There is an implicit contrast in your comments between C# and VB which doesn't really do modern VB justice. VB is equally powerful to C# and in reality both languages are easy to learn and both unlock the full potential of .NET.
I think it is (or should be) a question of syntactic preference and not of capability. VB is a beautiful language and you are doing it and us no favors by choosing to break feature parity with C#. For instance, pattern matching was promised to be released in both languages (and it was in fact mentioned in early VB Roslyn previews) but so far, it's only in C# and time is running out. Xamarin/VB was also promised and would be immediately useful, as would .NET core support. -
Again - syntactic preference, not capability, should be the standard. Please don't de-emphasize this fantastic and successful language. It is worth the extra effort to keep both C# and VB as strong first-class citizens in the .NET ecosystem.
-
The term LINQ is really used now to cover the fluent pipelining of IEnumerables and as such is a really useful set of tools to know. Your description doesnt do it justice.
The whole 'put sql directly in your code' syntax trick seems less used -
. I would definitely add Entity Framework (Core) somewhere in that list. Sure there are other OR-Mappers around, but every dev should have basic knowledge of EF to be able to connect to a database like SQL Server.
-
IMO the picture is misleading in regards of ASP.NET Core, which is fully capable of running on top of .NET FRAMEWORK as well as .NET CORE. A more precise illustration was to move ASP.NET on top of both runtimes or make it a distinct box which overlaps both.
-
I also wonder why WCF went out of fashion (especially because it doesn't seem to have a "modern" equivalent). It makes me wonder if this current list is aligned with the reality. Please consider that most of the developers/companies are not in "early adopter" category and the ASP.NET Core doesn't seem to be mature enough for enterprise level applications.
-
Great article; however, I think you may have forgot one important language that will become more important as Xamarin Forms becomes more popular. XAML for Xamarin Forms.
-
Ionut Ungureanu - WCF is still used in many large 'enterprise' applications, but less so in other contexts. SOAP is less and less used and replaced with lightweight protocols and technologies (REST-like web services on top of HTTP as an example)
-
And the only place I see javascript was in the comments and then only in relationship to other languages. So should I assume, I don't need javascript to write a web app in .NET?
-
I might be controversial here, but F#? Is it really a "must know"? I don't know anyone who uses it, I've had a look now and again - but can't really see myself using it.
-
I would argue that LINQ should be promoted to the "Should Know" category. I consider LINQ a core piece of the .NET world and something that every .NET developer should understand clearly.
-
3 .net frameworks. But what happend to .net micro framework? The dev blog is dead for a year. Also gone?
F# must know? why MS gonna kill C# ? -
It would be great if TPL DataFlow got a mention; it's one of the most fantastic libraries that no one has heard of. That and Microsoft Bond.
-
-
24 Jan 17
-
20 Jan 17
-
12 Jan 17
-
11 Jan 17
-
dmedme
Scott Hanselman on Programming, The Web, Open Source, .NET, The Cloud and More
-
Javier Neira
Vaya lío el mundo loco del frontend. No me extraña que acabemos con Javascript fatigue. https://t.co/qLreEr6VkK
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.