.NET应用程序和工具

一.初步认识.NET Core 和 C#7 

  • .NET Core的世界
  1. 可以通过 https://github.com/dotnet/corefx 访问.NET Core的源代码
  2. .NET Core 命令行可以在 https://github.com/dotnet/cli 上使用
  3. https://github.com/aspnet 上有许多ASP.NET Core的存储库,其中包括ASP.NET Core MVC、Razor、SignalR、EntityFramework Core等
  4. .NET Core部分特性的总结:

       .NET Core是开源的

       .NET Core使用现代模式

       .NET Core支持在多个平台上开发

       ASP.NET Core可以在Windows和Linux上运行

  • C#的重要性
  1. C#一开始不仅作为一种面向对象的通用编程语言,而且是一种基于组件的编程语言,支持属性、事件、特性(注解)和构造程序集(包括元数据的二进制的文件)。
  2. 随着时间的推移,C#增强了泛型、语言集成查询(LINQ)、lambda表达式、动态特性和更简单的异步编程
  3. C#不仅是面向对象或基于组件的语言,它还包括函数式编程的理念,开发各种应用程序的通用语言和实际应用这些理念
  4. C#6中,编译器的源代码完全可以重写了
  5. C#7再次添加了许多具有函数编程背景的新特性,如本地函数、元祖和模式匹配
  • C#7的新特性
  1. C#6扩展包括static using、基于表达式体的方法和特性、自动实现的属性初始化器、只读自动属性、nameof操作符、空条件运算符、字符串插入、字典初始化器、异常过滤器以及catch中等待
  2. C#7的新特性:数字分隔符、二进制字面值、表达式体的成员、out变量、不拖尾的命名参数、只读结构、in参数、Private Protected、目标类型的default、本地函数、元祖、推断的元祖名、拆解、模式匹配、Throw表达式、异步Main()方法、引用语义
  • GitHub
  1. git命令的完整列表可以在https://git-scm.com/docs上找到

二.NET历史

  • C#1.0 ——一种新语言
  1. C#0是一种全新的编程语言,用于.NET Framework
  2. NET编译语言的编译器生成中间语言(IL)代码。IL代码看起来像面向对象的机器码,使用ildasm.exe可以打开包含.NET代码的DLL或EXE文件来检查IL代码(IL代码也称托管代码)
  3. CLR包含一个即时(JIT)编译器,当程序运行时,JIT编译器会在IL代码中生成本地代码
  4. CLR的其它部分是垃圾收集器(GC)、调试器扩展、线程实用工具
  5. 垃圾收集器负责清理不再引用的托管内存,这个安全机制实用代码访问安全性来验证允许代码做什么
  6. 调试器扩展允许在不同的编程语言之间启动调试会话
  7. 线程实用工具负责在底层平台上创建线程
  • NET3.0 ——Windows Presentation Foundation
  1. Windows Forms包括本地的Windows控件基于像素
  2. WPF基于DirectX,独立绘制每个控件
  3. WPF中的矢量图形允许无缝地调整任何窗体大小
  4. WPF中的模板允许完全自定义外观
  5. System.Windows命名空间下的所有内容都属于WPF,除System.Windows.Forms
  6. WPF的用户界面可以使用XML语法XAML设计
  7. .NET3.0推出之前,使用的ASP.NET Web Services和.NET Remoting用于程序之间的通信
  8. Message Queuing是用于通信的另一个选择
  9. 第三大部分Windows WF 和命名空间System.Workflow
  • C#4.0和.NET4.0 ——dynamic和TPL
  1. C#4.0的主题就是动态集成脚本语言,使其更容易使用COM集成
  2. 任务并行库(Task Parallel Library,TPL)使用Task类和Parallel类抽象出线程,更容易创建并行运行的代码
  • C#5和异步编程
  1. C#5只有两个新的关键字:async和await,大大简化了异步方法的编程
  2. System.AddIn名称空间,它提供了插件模型。过于复杂、缓慢。于是.NET4.5创建一个新的合成框架:Managed Extensibility Framework 和命名空间System.Composition
  3. ASP.NET Web API基于Representational State Transfer(REST)软件架构风格
  • C#6和.NET Core 1.0
  1. Silverlight是一个Web浏览器插集,支持动态内容
  • C#7和.NET Core 2.0

     1.C#7最重要的部分来自函数式编程:模式匹配和元祖

 三.NET术语

一.NET技术

  1. Xamarin提供了Xamarin.IOS和Xamarin.Android库,它们可以为IPhone和Android开发C#应用程序
  2. Xamarin目前基于Mono框架,Mono框架是由Xamarin开发的.NET变体
  3. .NET Core运行库时CoreCLR库,包含集合类的框架、文件系统访问、控制台和XML等都在CoreFX库中

二.NuGet包

  1. NuGet包是一个zip文件,其中包含程序集(或多个程序集)、配置信息和PowerShell脚本

三.名称空间

1. System.Collections:这是集合的根名称空间。之名称空间也包含集合,如System.Collections.Concurrent和System.Collections.Generic

2. System.Data:这是访问数据库的名称空间。System.Data.SqlClient包含SQL Server的类

3. System.Diagnostics:这是诊断信息的根名称空间,如事件记录和跟踪(在System.Diagnostics.Tracting名称空间中)

4. System.Globalization:包含的类用于全球化和本地化应用程序

5. System.IO:这是文件IO的名称空间,其中的类访问文件和目录,包括读取器、写入器和流

  1. System.Net:这是核心网络的名称空间,比如访问DNS服务器,用System.Net.Sockets创建套接字
  2. System.Threading:这是线程和任务的根名称空间。任务在System.Threading.Tasks中定义
  3. 一些新的.NET类使用名称以Microsoft开头而不是使用System开头的名称空间。
  4. Microsoft.EntityFrameworkCore用于新的依赖关系注入框架中的Microsoft.Extensions.DependencyInjection

四.公共语言运行库

1. UWP(Windows通用应用平台)利用Native.NET通过AOT Compiler把IL编译成本地代码与Xamarin.IOS相似

2. CLR(公共语言运行库)的作用

在CLR执行应用程序之前,编写好的源代码(使用C#或其它语言编写的代码)都需要编译。

在.NET中,编译分为两个阶段:

  1. 将源代码编译为Microsoft中间语言(IL)
  2. CLR把IL(托管代码)编译为平台专用的本地代码

IL代码在.NET程序集可用。在运行时,JIT编译器编译IL代码,创建特定于平台的本地代码

新的CLR和CoreCLR包括一个新的JIT编译器RyuJIT

CLR还包括一个带有类型加载器的类型文件,类型加载器负责从程序集中加载类型。类型系统中的安全基础设施验证是否允许使用某些类型系统结构,如继承

CLR的另一个功能就是垃圾收集器。垃圾收集器从托管堆中清除不再引用的内存

CLR还负责线程的处理。在C#中创建托管的线程不一定来自底层操作系统。线程的虚拟化和管理由CLR负责

  • Windows运行库
  1. 从Windows8开始,Windows操作提供了另一种框架:Windows运行库(Windows Runtime)。这个运行库由WUP使用。与.NET Framework不同,这个框架是使用本地代码创建的。当它用于.NET应用程序时,所包含的类型和.NET类似。在语言投射的帮助下,Windows运行库可以用于JavaScript、C++和.NET语言,它看起来编程环境的本地代码。不仅方法因区分大小写而行为不同,方法类型也可以根据所处的位置有不同的名称
  2. Windows运行库提供了一个对象层次结构,它以在Windows开头的名称空间组织。用于UWP上的应用程序。
  1. Windows.ApplicationModel:这个名称空间及其子名称空间(如Windows.ApplicationModel.Contracts)定义了类,用于管理应用程序的生命周期、与其他程序通信
  2. Windows.Data:Windows.Data定义了子名称空间来处理文本、JSON、XML、PDF数据
  3. Windows.Devices:地理位置、智能卡、服务设备点、打印机、扫描仪等设备可以用Windows.Devices子名称空间访问

四.用.NET Core CLI编译

SDK命令

选项和模板 

五.使用VS2017

对应的SDK命令

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值