本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、课程设计和辅导 4、单片机开发 5、串口通讯调试
 当前位置:文章中心 >> vs2022_vs2019_vs2017_vs2014_vs2012
立即购买视频教程 Microsoft .NET 框架 FAQ
夜鹰教程网 来源:www.yyjcw.com 日期:2016-11-19 15:22:04
概念性问题什么是 .NET 框架? 

这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



概念性问题
什么是 .NET 框架?

Microsoft .NET 框架是生成、部署和运行 Web 服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决 Internet 规模应用程序的部署和操作难题的灵活性。.NET 框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为 ASP.NET 的 Active Server Pages 组件化版本。

运行库技术问题
术语
什么是公共语言运行库 (CLR)?

公共语言运行库是用于 .NET 框架应用程序的执行引擎。
它提供若干服务,包括:
代码管理(加载和执行)
应用程序内存隔离
类型安全验证
IL 到本机代码的转换
对元数据(增强型类型信息)的访问
托管对象内存的管理
代码访问安全性的强制
异常处理,包括语言间异常
托管代码、COM 对象和预先存在的 DLL(非托管代码和数据)间的相互操作
对象布局的自动化
对开发人员服务的支持(分析、调试等等)

什么是通用类型系统 (CTS)?

通用类型系统是一个内置在公共语言运行库中的丰富的类型系统,它支持大多数编程语言中存在的类型和操作。通用类型系统支持广泛的编程语言的完整实现。

什么是公共语言规范 (CLS)?

公共语言规范是一组构造和约束,它充当库编写器和编译器编写器的向导。它使库完全可通过任何支持 CLS 的语言使用,并使那些语言可以相互集成。公共语言规范是通用类型系统的一个子集。对于正在编写将由其他开发人员使用的代码的应用程序开发人员,公共语言规范也非常重要。当开发人员按照 CLS 规则设计可公开访问的 API 时,这些 API 很容易通过面向公共语言运行库的所有其他编程语言使用。

什么是 Microsoft 中间语言 (MSIL)?

MSIL 是与 CPU 无关的指令集,其中编译进了 .NET 框架程序。它包含在对象上加载、存储、初始化和调用方法的指令。
在与元数据及公共类型系统组合后,MSIL 允许真正的语言间集成。
在执行之前,MSIL 将转换成机器码,并且不被解释。

什么是托管代码和托管数据?

托管代码是为面向公共语言运行库的服务编写的代码(请参阅“什么是公共语言运行库?”)。为了面向这些服务,该代码必须向运行库提供最低级别的信息(元数据)。默认情况下,所有 C#、Visual Basic .NET 和 JScript .NET 代码都受托管。默认情况下,Visual Studio .NET C++ 代码不受托管,但编译器可以通过指定命令行开关 (/CLR) 来产生托管代码。
与托管代码密切相关的是托管数据(由公共语言运行库的垃圾回收器分配和释放的数据)。默认情况下,C#、Visual Basic 和 JScript .NET 数据受托管。然而,通过使用特殊的关键字可以将 C# 数据标记为非托管。默认情况下,Visual Studio .NET C++ 数据不受托管(即使在使用 /CLR 开关时),但在使用 C++ 托管扩展时,可以通过使用 __gc 关键字将类标记为托管。正如名称所暗示的,这意味着用于类实例的内存受垃圾回收器的托管。另外,类成为 .NET 框架社区的一名完全参与的成员,这既带来了好处,也带来了限制。其中一个好处是与用其他语言编写的类的正确互操作性(例如,托管 C++ 类可以从 Visual Basic 类继承)。其中一个限制是托管类只能从基类继承。

程序集
什么是程序集?

程序集是 .NET 框架应用程序的主要构造块。它是一个功能集合,并以单个实现单元(一个或多个文件)的形式生成、版本化和部署。所有托管类型和资源或者只在其实现单元中标记为可访问,或者在该单元外由代码标记为可访问。
程序集通过其清单(每个程序集不可缺少的部分)进行自我描述。清单可以:
建立程序集标识(以文本名称的形式)、版本、区域性和数字
签名(如果程序集将在应用程序间共享)。
定义组成程序集实现的文件(按名称和文件散列)。
指定组成程序集的类型和资源,包括从程序集导出的类型和资源。
逐条列出其他程序集上的编译时依赖项。
指定程序集正确运行所需的权限集。

 

该信息在运行时用于解析引用、强制版本绑定策略和验证加载程序集的完整性。运行库可以确定和定位任何运行对象的程序集,因为每个类型均加载在程序集的上下文中。程序集也是应用代码访问安全权限的单元。在确定给程序集包含的代码授予什么权限时,分别考虑每个程序集的标识证据。
程序集自我描述的特性也有助于使无影响安装和 XCOPY 部署可行。

什么是专用程序集和共享程序集?

专用程序集仅由单个应用程序使用,并存储在该应用程序的安装目录中(或其中的子目录中)。共享程序集是一个可以由多个应用程序引用的程序集。为了共享程序集,必须给予该程序集一个加密的强名称(有时又称强名称),为此目的显式生成程序集。相比之下,专用程序集名称只需在使用它的应用程序中是唯一的。
通过区分专用程序集和共享程序集,我们以显式决策的形式引入共享概念。只需将专用程序集部署到应用程序目录,即可保证该应用程序只与用来生成和部署它的位一起运行。对专用程序集的引用只被本地解析到专用应用程序目录。
可以举出多个生成和使用共享程序集的理由,如表示版本策略的能力。共享程序集有一个加密的强名称,这意味着只有此程序集的作者具有产生程序集新版本的密钥。因此,如果您生成一个策略语句,表明自己希望接受程序集的新版本,则应确信版本更新将受作者的控制和验证。否则,您不必接受它们。
对于本地安装的应用程序,共享程序集通常被显式安装到全局程序集缓存中(由 .NET 框架维护的程序集的本地缓存)。.NET 框架版本管理功能的关键是:下载的代码不影响本地安装的应用程序的执行。下载的代码放置在特殊的下载缓存中,并且在计算机上不是全局可用的,即使以共享程序集的形式生成了某些下载组件。
.NET 框架随附的类均以共享程序集的形式生成。

如果要生成共享程序集,需要签名和管理密钥对的系统开销吗?

生成共享程序集的确涉及使用加密密钥。在生成程序集时,只有公钥是确实需要的。面向 .NET 框架的编译器在生成程序集时提供命令行选项(或使用自定义属性)来提供公钥。常见的做法是在源数据库中保留通用公钥的一个副本,并将生成脚本指向该密钥。在交付程序集前,必须用相应的私钥完全签名程序集。用称为 SN.exe(强名称)的 SDK 工具来完成此工作。
与 Authenticode 不同,强名称签名不涉及证书。不涉及第三方单位,没有要支付的费用,也没有证书链。另外,验证强名称比验证 Authenticode 的系统开销低得多。然而,强名称不就是否信任特定的发布者做出任何声明。强名称使您可以确保给定程序集的内容没有被篡改,并且在运行时以您的名义加载的程序集来自您开发时所针对的同一发布者。但它不就是否可以信任此发布者的标识做出任何声明。

命名空间名称和程序集名称之间的差异是什么?

命名空间是类型的逻辑命名方案,此方案中简单的类型名称(如 MyType)用以点分隔的分层名称开头。这样的命名方案完全受开发人员控制。例如,类型 MyCompany.FileAccess.A 和 MyCompany.FileAccess.B 可能在逻辑上应具有与文件访问相关的功能。.NET 框架使用分层命名方案将类型分为相关功能(例如 ASP.NET 应用程序框架)或远程处理功能的逻辑类别。设计工具可以利用命名空间使开发人员在代码中浏览和引用类型更容易。命名空间的概念与程序集的概念无关。单个程序集可以包含分层名称具有不同命名空间根的类型,而逻辑命名空间根可以跨越多个程序集。在
.NET 框架中,命名空间是逻辑设计时命名便利,而程序集在运行时建立类型的名称范围。

 

应用程序部署和隔离
哪些选项可用于部署 .NET 应用程序?

.NET 框架通过使应用程序的无影响安装和 XCOPY 部署切实可行来简化部署。由于所有请求均首先解析到专用应用程序目录,只需将应用程序的目录文件复制到磁盘便可运行该应用程序。不需要任何注册。
该方案对 Web 应用程序、Web 服务和独立的桌面应用程序尤为迫切。然而,在某些情况下,XCOPY 作为分发机制是不充分的。应用程序只有很少的专用代码并且依赖于共享程序集的可用性,或者应用程序不是在本地安装的(而是按需下载的)便属于这种情况。在上述情况下,.NET 框架提供大量的代码下载服务以及与 Windows 安装程序的集成。相对于当前平台,.NET 框架提供的代码下载支持提供了一些优点,包括增量下载、代码访问安全性(没有其他 Authenticode 对话框)和应用程序隔离(代表一个应用程序下载的代码不影响其他应用程序)。Windows 安装程序是另一个可用于 .NET 应用程序的功能强大的部署机制。Windows 安装程序的所有功能(包括发布、公布和应用程序修复)均适用于 Windows 安装程序 2.0 中的 .NET 应用程序。

我已经编写了要在多个应用程序中使用的程序集。在哪里部署它?

将要由多个应用程序使用的程序集(如共享程序集)被部署到全局程序集缓存中。在预发布版和 Beta 版中,使用 GACUtil SDK 工具的 /i 选项将程序集安装到缓存中:
gacutil /i myDll.dll

Windows Installer 2.0(随附在 Windows XP 和 Visual Studio .NET 中)能够将程序集安装到全局程序集缓存。

如何查看全局程序集缓存中安装的程序集?

.NET 框架提供了一个用于查看程序集缓存的 Windows 外壳程序扩展。通过 Windows 资源管理器导航至 % windir%\assembly 将激活查看器。

什么是应用程序域?

应用程序域(通常为 AppDomain)是一个用于隔离应用程序的虚拟进程。在同一应用程序范围内(换句话说,以应用程序入口点开头的对象激活序列中的任何位置)创建的所有对象都创建在同一应用程序域中。多个应用程序域可以存在于单个操作系统进程中,这使它们成为应用程序隔离的轻量方法。
操作系统进程通过提供一个独特的内存地址空间来提供隔离。虽然这很有效,但成本很高,而且不能扩展到大型 Web 服务器所需的数目。另一方面,公共语言运行库通过管理运行在应用程序域中的代码的内存使用来强制应用程序隔离。这可确保它不会访问域边界以外的内存。注意只有类型安全代码才能以这种方式进行管理(运行库在不安全代码加载到应用程序域中时无法保证隔离)很重要。

复制链接 网友评论 收藏本文 关闭此页
上一条: VS2008 和.NET Framework3.5新功能…  下一条: 如何动态写入服务器端控件--ASP.NET教程…
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  
  热点推荐
一个关于天气预报的WebService【C…
VS2010最大的新特点是并行编程的进…
TextBox控件:asp.net中如何为密码…
Web服务调用实例:实现天气预报的…
ASP.NET程序员面试试题(130道题)
ASP.NET教程:调用WebService的源码…
网站开发全程设计
据说这套.net面试题很多网络公司都…
考考你:C#常见题型及部分答案
原创:.net读取数据库sql2000
伪静态URL重写配置
配置web.config代码asp.net3.5个性…
使用线程池提高性能 Socket网络编…
ASP.NET(C#)GridView表头的增加…
如何找到正确的学习方向【.NET版】…
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
C#修改注册表demo
一个获取内容中的图片地址的方法
ASP.NET 4.0尚未在 Web 服务器上注…
四大作用域:application,session…
ConfigurationManager不存在的解决…
vs2012_vs2013_vs2015没有Web Dep…
vs2015禁用解决方案中单击打开文件…
微软为Visual Studio 2015新增安卓…
C#如何实现搜索引擎网络爬虫程序
C#中正则表达式的用法
用C#抓取需要登录的页面数据
VS2015新功能
VS2015安装图解教程
vs2015新功能介绍
vs2015安装图解
  工具下载  需要远程协助? 

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
微信小程序 vue.js高级实例视频教程

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



关于我们 | 购买教程 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3