.Net Framework与C#

  • .NET Framework 简介
  • .NET Framework应用程序工作原理
  • C#概念及其与.NET Framework关系
  • .NET Framework简介

Microsoft .NET Framework是用于Windows的新托管代码编程模型。它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。

  1. .NET 版本信息:

版本


CLR版本


完整版本号


发行日期


Visual Studio


Windows 默认安装


1.0


1.0


1.0.3705.0


2002/2/13


Visual Studio .NET 2002


Windows XP Media Center Edition


Windows XP Tablet PC Edition


1.1


1.1


1.1.4322.573


2003/4/24


Visual Studio .NET 2003


Windows Server 2003


2.0


2.0


2.0.50727.42


2005/11/7


Visual Studio 2005


3.0


2.0


3.0.4506.30


2006/11/6


Windows Vista


Windows Server 2008


3.5


2.0


3.5.21022.8


2007/11/19


Visual Studio 2008


Windows 7


Windows Server 2008 R2


4.0


4.0


4.0.30319.1


2010/4/12


Visual Studio 2010


4.5


4.0


4.5.40805


2012/2/20


Visual Studio 2012 RC


Windows 8 RP


Windows Server 8 RC

  • .NET Framework工作原理
  1. CIL和JIT:

在编译使用.NET Framework库的代码时,不是立即创建专用于操作系统的本机代码,而是把代码编译为通用的中间语言(CIL)代码,这些代码并非专门用于任何一种操作系统,也并非专门用于C#。其他的.NET语言也可以在第一阶段编译为这种语言。

显然,要执行应用程序,必须完成更多的工作,这是Just-In-Time(JIT)编译器的任务,它把CIL编译为专用于OS和目标及其结构的本机代码。这样OS才能执行应用程序。

  2.  程序集:

在编译应用程序时,所创建的CIL代码存储在一个程序集中。程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的库(其扩展名是.dll)。

除了包含CIL外,程序集还包含元信息(即程序集中包含的数据的信息,也称为元数据)和可选资源(CIL使用的其他数据,例如,声音文件或图片)。元信息允许程序集是完全自描述的。不需要其他信息就可以使用程序集。这样,部署应用程序就非常简单了,只需要把文件复制到远程计算机上的目录下即可。通常,我们把那些可重用的代码放在所有应用程序都可以访问的地方。在.NET Framework中,这个地方是全局程序集缓存(Global Assembly Cache,GAC),我们只需要把包含代码的程序集放在该缓存对应的位置即可。

  3.  托管代码:

在将代码编译为CIL,再用JIT编译器将它编译为本机代码后,CLR的任务还没有全部完成,还需要管理正在执行的用.NET Framework编写的代码(这个执行代码的阶段通常称为运行时,RunTime)。即CLR管理着应用程序,其方式是管理内存、处理安全性以及允许进行跨语言调试等。相反,不受CLR控制运行的应用程序属于非托管类型,某些语言如C++可以用于编写这类应用程序,例如,访问操作系统的低级功能。但是在C#中,只能编写在托管环境下运行的代码。我们将使用CLR托管功能,让.NET自己与操作系统进行交互。

  4.  垃圾回收:

托管代码最重要的一个功能是垃圾回收。这种.NET方法可以确保应用程序不再使用某些内存时,就会完全释放这些资源。.NET垃圾回收会定期检查计算机内存,从中删除不再需要的内容。它不设置时间帧,可能一秒钟内会进行上千次的检查,也可能几秒钟才检查一次,或者随时进行检查,但一定会进行检查。

在编程时,如果需要许多内存才能运行的代码应自己执行这样的检查,而不是坐等垃圾回收。

  • C#概念及其与.NET Framework关系
  1. C#语言:

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

  2.  C#与.NET关系:

C#只是.NET开发的一种语言。

时间: 2024-12-22 02:23:36

.Net Framework与C#的相关文章

利用 Django REST framework 编写 RESTful API

利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framework 真乃一大神器,可以轻易的甚至自动化的搞定很多事情,比如: 自动生成符合 RESTful 规范的 API 支持 OPTION.HEAD.POST.GET.PATCH.PUT.DELETE 根据 Content-Type 来动态的返回数据类型(如 text.json) 生成 browserable

iOS库--.a与.framework

一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存. 三.iOS里静态库形式? .a和.framework 四.iOS里动态库形式? .dylib和.framework 五.framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建立的.fram

Multithreading Batch Processing Framework

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # Author: f0rsaken 4 5 import argparse 6 import importlib 7 import sys 8 import threadpool 9 import time 10 11 def main(): 12 parser = argparse.ArgumentParser(description="Multithreading Batch Proce

安装mysql时,提示This application requires .NET framework 4.0问题

Question:双击MySQL的安装文件, 弹框提示, Answer:安装微软的 .NET Framework 4或更新的版本,下载地址:https://www.microsoft.com/zh-cn/Search/result.aspx?q=.net+framework&x=0&y=0 安装完成后安装MySQL即可.

使用自定义的framework

1.创建framework工程,创建需要的类将接口暴露在public中 2.运行后可在window/projects 的Derived Data中找到framwork所在路劲(分别在真机和模拟器下运行,会在product文件中生成不同的文件) 3.使用lipo命令合并库 lipo -create 库1的路径 库2的路劲 -ouput 库名 (图为库) 将生成的库(如果没有设置的话,库生成在根目录上),将其复制到模拟器或者真机的framework中覆盖原有的库. 4.在新工程中导入framewor

Entity Framework的查询

Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更喜欢Func形式). 1.简单查询: SQL: SELECT * FROM [Clients] WHERE Type=1 AND Deleted=0 ORDER BY ID EF: //Func形式 var clients = ctx.Clients.Where(c => c.Type == 1 && c.D

Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Frist实现数据访问管理. 本例,我们模拟一个N层场景,用单独的客户端(控制台应用)来调用单独的基于REST服务的Web网站(WEB API应用) . 注意:每层使用单独的Visual Studio 解决方案, 这样更方便配置.调试和模拟一个N层应用. 假设有一个如Figure 9-3所示的旅行社和预订

Entity Framework 学习

Entity Framework 学习初级篇1--EF基本概况... 2 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍... 7 Entity Framework 学习初级篇3-- LINQ TOEntities. 10 Entity Framework 学习初级篇4--EntitySQL. 17 Entity Framework 学习初级篇5--ObjectQ

原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0

visual studio编译出现错误:错误 2 任务失败,原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0.该任务正在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 的 SDKInstallRootv2.0 值中指定的位置下的“bin”子目录中查找“sgen.exe”.您可以通过执行下列操作之一,来解决这一问题: 1.) 安装 .NET Framework SDK v2.0.2.) 将上

Play Framework + ReactiveMongo

Play Framework + ReactiveMongo Play!是一个full-stack(全栈的)Java/Scala Web应用框架,包括一个简单的无状态MVC模型,具有Hibernate的对象持续,一个基于Groovy的模板引擎,以及建立一个现代Web应用所需的所有东西. Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记