.NET开发人员应该从2017年开始了解什么

Many many years ago I wrote a blog post about what .NET Developers ought to know. Unfortunately what was just a list of questions was abused by recruiters and others who used it as a harsh litmus test.

许多年前,我写了一篇有关.NET开发人员应了解的知识的博客文章。 不幸的是,招聘人员和其他人只是用一系列问题作为苛刻的石蕊试纸。

There's a lot going on in the .NET space so I thought it would be nice to update with a gentler list that could be used as a study guide and glossary. Jon Galloway and I sat down and put together this list of terms and resources.

.NET空间中发生了很多事情,因此我认为最好使用较温和的列表进行更新,该列表可用作学习指南和词汇表。 我和乔恩·加洛韦(Jon Galloway)坐下来,整理了这份条款和资源清单。

Your first reaction might be "wow that's a lot of stuff, .NET sucks!" Most platforms have similar glossaries or barriers to entry. 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. Just know that every layer and label has something underneath it and the whatever program you're dealing with may be in a level you have yet to dig into.

您的第一个React可能是“哇,.NET太多了!” 大多数平台都有类似的词汇表或进入障碍。 在每种语言和计算机生态系统中都有TLA(三个字母的缩写)。 不要不知所措,从需要了解开始,然后慢慢前进。 另外,请记住您要决定何时画线。 您不需要了解所有内容。 只需知道每个图层和标签下面都有一些内容,您正在处理的任何程序都可能处于您尚未深入的层次。

Draw a line under the stuff you need to know. Know that, and know you can look the other stuff up.  Some of us want the details – the internals. Others don't. You may learn from the Metal Up or from the Glass Back. Know your style, and revel in it.

在您需要了解的东西下面画一条线。 知道这一点,并且知道您可以查找其他内容。 我们中有些人想要细节–内部。 其他人没有。 您可以从Metal Up或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. Both sites let you write code without downloading anything. You just work in your browser.

首先,您可以从https://dot.net开始在线学习.NET和C#。 您可以在http://www.tryfsharp.org上在线学习F#。 这两个站点都使您无需下载任何内容即可编写代码。 您只需在浏览器中工作即可。

When you're ready, get .NET Core and Visual Studio Code at https://dot.net and start reading! 

准备就绪后,请访问https://dot.net获取.NET Core和Visual Studio Code并开始阅读!

需要知道 (Need To Know)

  • What's .NET? .NET has some number of key components. We'll start with runtimes and languages.

    什么是.NET? .NET具有一些关键组件。 我们将从运行时和语言开始。

  • 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 Framework-.NET Framework可帮助您创建在Windows PC,设备和服务器上运行的移动,桌面和Web应用程序。

    • .NET Core - .NET Core gives you a fast and modular platform for creating server applications that run on Windows, Linux and Mac.

      .NET Core-.NET Core为您提供了一个快速的模块化平台,用于创建在Windows,Linux和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.

      Xamarin的Mono -Xamarin将.NET引入iOS和Android ,可重用技能和代码,同时可访问本API和性能。 Mono是Xamarin和Microsoft合并之前创建的开源.NET。 Mono将支持.NET Standard作为另一个出色的.NET运行时,它是开源且灵活的。 您还将在Unity游戏开发环境中找到Mono。

    Here are the three main runtimes:

    这是三个主要的运行时

  • 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

      C#简单,功能强大,类型安全且面向对象,同时保留了C风格语言的表现力和优雅。 任何熟悉C和类似语言的人都不会发现适应C#的问题。 查看《 C#指南》以了解有关C#的更多信息,或在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 

      F#是一种跨平台,功能优先的编程语言,还支持传统的面向对象和命令式编程。 查阅《 F#指南》以了解有关F#的更多信息,或者在浏览器中尝试使用它,网址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.

      Visual Basic是一种易于学习的语言,可用于构建在.NET上运行的各种应用程序。 多年前,我开始使用VB。

    Here are the main languages:

    以下是主要语言

  • Where do I start?

    我从哪说起呢?

  • 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)

      框架定义了您可以使用的API。 有.NET 4.6框架,.NET标准等。有时您会通过名称或在代码和配置文件中将它们称为TFM进行引用(请参见下文)。

    • 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.

      平台(在.NET上下文中)-Windows,Linux,Mac,Android,iOS等。这也包括Bitness,因此x86 Windows不是x64 Windows。 如今,每个Linux发行版都是自己的平台。

    After runtimes and languages, there's platforms and frameworks.

    除了运行时和语言之外,还有平台框架

  • 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.

    TFM(目标框架Moniker) -一个别名(字符串),可用于引用目标框架+版本组合。 例如,net462(.NET 4.6.2),net35(.NET 3.5),uap(通用Windows平台)。 有关更多信息,请参见此博客文章。 选择TFM可以确定您可以使用哪些API,以及可以在其上运行代码的框架。

  • 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.

    NuGet -NuGet是Microsoft开发平台(包括.NET)的程序包管理器。 NuGet客户端工具提供了生成和使用软件包的功能。 NuGet Gallery是所有软件包作者和使用者都使用的中央软件包存储库。

  • 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

    什么是大会? -程序集通常是包含已编译代码的DLL或EXE。 程序集是.NET Full Framework应用程序的基础。 它们构成了部署,版本控制,重用,激活范围和安全权限的基本单元。 在.NET Core中,构件是NuGet程序包,其中包含程序集以及其他元数据

  • .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 Standard或“ netstandard” -. NET Standard简化了二进制兼容框架之间的引用,从而允许单个目标框架引用其他框架的组合。 .NET标准库是.NET API的正式规范,旨在在所有.NET运行时上提供。

  • .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.

    .NET Framework与.NET Core :.NET Framework适用于Windows应用程序和Windows系统,而.NET Core是较小的跨平台框架,用于服务器应用程序,控制台应用程序,Web应用程序,并作为构建其他应用程序的核心运行时。系统从。

应该知道 (Should Know )

      • 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.

        CLR –公共语言运行时(CLR),Microsoft .NET框架的虚拟机组件,用于管理.NET程序的执行。 称为即时编译的过程会将编译后的代码转换为机器指令,然后由计算机的CPU执行。

      • CoreCLR - .NET runtime, used by .NET Core.

        CoreCLR-.NET运行时,.NET Core使用。

      • Mono - .NET runtime, used by Xamarin and others.

        - .NET运行时,由Xamarin和其他人使用。

      • CoreFX - .NET class libraries, used by .NET Core and to a degree by Mono via source sharing.

        CoreFX-.NET类库,由.NET Core使用,并在一定程度上由Mono通过源代码共享使用。

      • Roslyn - C# and Visual Basic compilers, used by most .NET platforms and tools. Exposes APIs for reading, writing and analyzing source code.

        Roslyn -C#和Visual Basic编译器,大多数.NET平台和工具都使用。 公开用于读取,编写和分析源代码的API。

      • 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).

        GC-.NET使用垃圾回收为程序提供自动内存管理。 GC采用的是一种惰性的内存管理方法,与直接收集内存相比,它更喜欢应用程序吞吐量。 要了解有关.NET GC的更多信息,请查阅垃圾回收基础知识(GC)

      • "Managed Code" - Managed code is just that: code whose execution is managed by a runtime like the CLR.

        “托管代码”-托管代码就是这样:其执行由诸如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. ;)

        IL –中间语言是用高级.NET语言编写的代码的汇编产品。 C#是苹果,IL是苹果酱,而JIT和CLR是苹果汁。 ;)

      • JIT – Just in Time Compiler. Takes IL and compiles it in preparation for running as native code.

        JIT –及时编译器。 采用IL并对其进行编译,以准备作为本机代码运行。
      • 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.

        .NET在磁盘上的哪里? .NET Framework位于C:\ Windows \ Microsoft.NET,而.NET Core位于C:\ Program Files \ dotnet。 在Mac上,通常以/ usr / local / share结尾。 此外.NET核心还可以与该应用程序的目录下的一个应用程序,并现场进行捆绑独立的应用程序

      • 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.

        共享框架与独立应用程序-.NET Core可以使用共享框架(由同一台计算机上的多个应用程序共享),或者您的应用程序可以独立包含自己的副本。 有时您会听到“ xcopy可部署/ bin可部署”的消息,这意味着该应用程序是完全独立的。
      • 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. async和await – async和await关键字生成IL,它将释放线程以供长时间运行(等待)的函数调用(例如,数据库查询或Web服务调用)使用。 这样可以释放系统资源,因此您在等待时不会浪费内存,线程等。
      • 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.

        可移植类库-这些是“最低公分母”库,允许跨平台共享代码。 尽管支持PCL,但程序包作者应改为支持netstandard。 .NET平台标准是PCL的发展,代表了跨平台的二进制可移植性。

      • .NET Core is composed of the following parts:

        .NET Core由以下部分组成:

        • A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.

          .NET运行时,提供类型系统,程序集加载,垃圾回收器,本机互操作和其他基本服务。

        • 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.

          .NET Core SDK中提供了一组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.

          “ dotnet”应用程序主机,用于启动.NET Core应用程序。 它选择运行时并托管运行时,提供程序集加载策略并启动应用程序。 相同的主机也以几乎相同的方式用于启动SDK工具。

        .NET Core is composed of the following parts:

        .NET Core由以下部分组成:

      很高兴知道 (Nice To Know )

          • GAC – The Global Assembly Cache is where the .NET full Framework on Windows stores shared libraries. You can list it out with "gacutil /l"  

            GAC –全局程序集缓存是Windows上的.NET完整框架存储共享库的地方。 您可以使用“ 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.

            性能分析(内存使用情况,GC等) -您可以使用很多很棒的工具来测量(或分析)C#和.NET代码。 这些工具中有很多内置于Visual Studio中

          • LINQ - Language Integrated Query is a higher order way to query objects and databases in a declarative way

            LINQ-语言集成查询是一种以声明方式查询对象和数据库的高级方法

          • 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可以互操作的任何地方工作。 CLS是CTS构建的子集。

          • .NET Native - One day you'll be able to compile to native code rather than compiling to Intermediate Language.

            .NET Native-有一天,您将能够编译为本地代码,而不是编译为中间语言。

          • .NET Roadmap - Here's what Microsoft is planning for .NET for 2017 .NET路线图-微软计划在2017年推出.NET
          • "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.

            “现代” C#7 – C#本身每年都有新功能。 最新版本是C#7,具有许多很酷的功能值得一看。

          • 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.

            Reactive Extensions- “ Reactive Extensions(Rx)是一个库,用于使用可观察的序列和LINQ样式的查询运算符来组成基于异步和基于事件的程序。” 您可以通过将LINQ样式的运算符应用于数据流来创建可清晰,异步地运行的复杂的基于事件的程序。

          NOTE: Some text was taken from Wikipedia's respective articles on each topic, edited for brevity. Creative Commons Attribution-ShareAlike 3.0. Some text was taken directly from the excellent .NET docs. This post is a link blog and aggregate. Some of it is original thought, but much is not.

          注意:某些文本摘自Wikipedia关于每个主题的文章,为简洁起见对其进行了编辑。 知识共享署名-相同方式共享3.0。 一些文本直接来自出色的.NET文档。 这篇文章是链接博客和汇总。 其中一些是最初的想法,但很多不是。

          Sponsor: Big thanks to Raygun! Join 40,000+ developers who monitor their apps with Raygun. Understand the root cause of errors, crashes and performance issues in your software applications. Installs in minutes, try it today!

          赞助商:非常感谢Raygun ! 加入40,000多名使用Raygun监视其应用程序的开发人员。 了解软件应用程序中错误,崩溃和性能问题的根本原因。 数分钟即可安装,立即尝试

          翻译自: https://www.hanselman.com/blog/what-net-developers-ought-to-know-to-start-in-2017

          • 0
            点赞
          • 0
            收藏
            觉得还不错? 一键收藏
          • 0
            评论

          “相关推荐”对你有帮助么?

          • 非常没帮助
          • 没帮助
          • 一般
          • 有帮助
          • 非常有帮助
          提交
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值