您好、欢迎来到现金彩票网!
当前位置:彩之网 > 专用程序集 >

面试 —— Microsoft NET 框架

发布时间:2019-08-09 21:19 来源:未知 编辑:admin

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

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

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

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

  MSIL 是与 CPU 无关的指令集,其中编译进了 .NET 框架程序。它包含在对象上加载、存储、初始化和调用方法的指令。

  托管代码是为面向公共语言运行库的服务编写的代码。为了面向这些服务,该代码必须向运行库提供最低级别的信息(元数据)。默认情况下,所有 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 框架应用程序的主要构造块。它是一个功能集合,并以单个实现单元(一个或多个文件)的形式生成、版本化和部署。所有托管类型和资源或者只在其实现单元中标记为可访问,或者在该单元外由代码标记为可访问。

  建立程序集标识(以文本名称的形式)、版本、区域性和数字签名(如果程序集将在应用程序间共享)。

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

  专用程序集仅由单个应用程序使用,并存储在该应用程序的安装目录中(或其中的子目录中)。共享程序集是一个可以由多个应用程序引用的程序集。为了共享程序集,必须给予该程序集一个加密的强名称(有时又称强名称),为此目的显式生成程序集。相比之下,专用程序集名称只需在使用它的应用程序中是唯一的。

  通过区分专用程序集和共享程序集,我们以显式决策的形式引入共享概念。只需将专用程序集部署到应用程序目录,即可保证该应用程序只与用来生成和部署它的位一起运行。对专用程序集的引用只被本地解析到专用应用程序目录。

  可以举出多个生成和使用共享程序集的理由,如表示版本策略的能力。共享程序集有一个加密的强名称,这意味着只有此程序集的作者具有产生程序集新版本的密钥。因此,如果您生成一个策略语句,表明自己希望接受程序集的新版本,则应确信版本更新将受作者的控制和验证。否则,您不必接受它们。

  对于本地安装的应用程序,共享程序集通常被显式安装到全局程序集缓存中(由 .NET 框架维护的程序集的本地缓存)。.NET 框架版本管理功能的关键是:下载的代码不影响本地安装的应用程序的执行。下载的代码放置在特殊的下载缓存中,并且在计算机上不是全局可用的,即使以共享程序集的形式生成了某些下载组件。

  生成共享程序集的确涉及使用加密密钥。在生成程序集时,只有公钥是确实需要的。面向 .NET 框架的编译器在生成程序集时提供命令行选项(或使用自定义属性)来提供公钥。常见的做法是在源数据库中保留通用公钥的一个副本,并将生成脚本指向该密钥。在交付程序集前,必须用相应的私钥完全签名程序集。用称为 SN.exe(强名称)的 SDK 工具来完成此工作。

  与 Authenticode 不同,强名称签名不涉及证书。不涉及第三方单位,没有要支付的费用,也没有证书链。另外,验证强名称比验证 Authenticode 的系统开销低得多。然而,强名称不就是否信任特定的发布者做出任何声明。强名称使您可以确保给定程序集的内容没有被篡改,并且在运行时以您的名义加载的程序集来自您开发时所针对的同一发布者。但它不就是否可以信任此发布者的标识做出任何声明。

  部署 .NET 应用程序?NET 框架通过使应用程序的无影响安装和 XCOPY 部署切实可行来简化部署。由于所有请求均首先解析到专用应用程序目录,只需将应用程序的目录文件复制到磁盘便可运行该应用程序。不需要任何注册。

  该方案对 Web 应用程序、Web 服务和独立的桌面应用程序尤为迫切。然而,在某些情况下,XCOPY 作为分发机制是不充分的。应用程序只有很少的专用代码并且依赖于共享程序集的可用性,或者应用程序不是在本地安装的(而是按需下载的)便属于这种情况。在上述情况下,.NET 框架提供大量的代码下载服务以及与 Windows 安装程序的集成。相对于当前平台,.NET 框架提供的代码下载支持提供了一些优点,包括增量下载、代码访问安全性(没有其

  他 Authenticode 对话框)和应用程序隔离(代表一个应用程序下载的代码不影响其他应用程序)。Windows 安装程序是另一个可用于 .NET 应用程序的功能强大的部署机制。Windows 安装程序的所有功能(包括发布、公布和应用程序修复)均适用于 Windows 安装程序 2.0 中的 .NET 应用程序。

  应用程序域(通常为 AppDomain)是一个用于隔离应用程序的虚拟进程。在同一应用程序范围内(换句话说,以应用程序入口点开头的对象激活序列中的任何位置)创建的所有对象都创建在同一应用程序域中。多个应用程序域可以存在于单个操作系统进程中,这使它们成为应用程序隔离的轻量方法。

  操作系统进程通过提供一个独特的内存地址空间来提供隔离。虽然这很有效,但成本很高,而且不能扩展到大型 Web 服务器所需的数目。另一方面,公共语言运行库通过管理运行在应用程序域中的代码的内存使用来强制应用程序隔离。这可确保它不会访问域边界以外的内存。注意只有类型安全代码才能以这种方式进行管理(运行库在不安全代码加载到应用程序域中时无法保证隔离)很重要。

  运行在.NET Framework中的代码叫做managed code,反之叫做unmanaged code。managed code 有很多好处,比如可以用多种编程语言编写、提高安全性、易于版本控制和程序发布等等。这些都是由CLR提供的。但也有一些不利点,最容易想到的就是代码运行速度问题了。

  要为managed code提供以上功能,CLR必须知道代码中的数据类型、类和与她有关连的assembly的定义。这些信息叫做metadata,而metadata就包含在代码中的某个部分(编译后)。CLR利用这个metadata加载代码段、管理内存、执行方法调用等操作。

  把数据类型统一的好办法。这个技术叫CTS(common type system)。现在做项目开发就比较简单了(用不同语言)。用VB.NET可以继承C++.NET写的类,反过来也是可以的。

  我们安装软件的时候常碰到这样的提示 - 系统中的组件比要安装的组件的新,你要替换还是保留?是不是很讨厌?!现在开始你就用.NET吧,她不会因为这个“小”问题而打扰你了。因为每个代码都包含与她相关的metadata,CLR会根据这个信息来管理代码的不同版本。而且因为不用把代码的信息注册到注册表,所以可以用X-COPY的方式安装代码(就是简单的拷贝粘贴了)。

  是用VB做好呢?还是用C++做好呢?这些问题是我们做项目的时候常要考虑的问题。但在.NET用什么编程语言已经变得不重要了(但还是有一定的差别,在特定项目中),因为CLR提供CTS(还有base class library),而且都运行在CLR上面。在.NET中VB,C++等语言都有了相当多的提高,而且有了新的语言C#。C#已经申请了标准而且通过,大家知道borland也发布了相关的开发工具C# builder。

  2、 CLR提供CTS(CLS也有功劳),所以可以在不同编程语言之间共享原代码。

  3、 用metadata管理代码信息(不是利用注册表),所以代码易于安装。

  4、 使用统一的数据类型和类库,所以编程语言的选择变得不重要了,而且易于团队开发。

  MSIL:解释语言,包含代码信息,让JIT易于编译成机器语言。与操作系统和编程语言无关。

  有两种方式一种是只编译当前执行的代码段,另一种是把整个代码一次性编译。JIT会检测代码的安全性。

  我从事3年半发,自己的好几个项目都上线运营了。………………现在辞职去找工作 ,人家问我一些基本概念,我居然回答不上来,比如: 1,字段和属性有什么区别【那个谁都会用,在学校的时候都会用,但是论坛

  .NetFrameWork发展史1.01.0是NET最早的一个版本,是第一个微软VisualStudio.NET的发行版的一部分。可以以一个独立且可重新分发的包的形式或在一个软件发展工具包集中被获得,...博文

  上星期:应老东家的要求,帮其面试.NET架构师。于是:老东家进行了一星期的简历收集;终于:在一堆简历里,精挑细选了四个;约了:周末上午下午各两个。面试者年龄:在30-35岁左右,差不多10年.NET经...博文来自:路过秋天 - 理想很美好,现实很残酷,坚持在路上,只因初心仍存

  一面1.对于设计模式的理解,写一个单例模式2.C++多态,虚函数的实现机制3.平面内在一条直线上最多的点的数目(算法)4.有障碍物矩阵两点之间的最短路径(算法)二面1.有障碍物矩阵两点之间是否存在一条...博文来自:yeahfeng

  一.简述Private、Protected、Public、Internal的区别1.Private只有同一类或结构中的代码可以访问该类型或成员。2.Protected只有同一类或结构或者此类的派生类中...博文来自:以梦为马

  从模块化到微服务化从PetShop到eShoponContainer都是Microsoft在技术演进的路径上给开发者展示.Net的开发能力和架构能力的Sample工程,Petshop的时候更多的是展现...博文来自:dotNET跨平台

  1..NET和C#有什么区别答:.NET一般指.NETFrameWork框架,它是一种平台,一种技术。C#是一种编程语言,可以基于.NET平台的应用。2.一列数的规则如下:1、1、2、3、5、8、13...博文来自:琦琦的博客

  8.领域模型导论设计的模型和理念相互影响——EricEvans从数据到行为的转变典型的开发方案:收集需求,通过一些分析找出相关实体和需要实现的流程。接着,带着这些理解,尝试推到能够支撑流程的无理数据模...博文来自:莫等闲

  win10自动更新后每次开机都报错Microsoft.NET.Framework。如下图所示:网上查了各种各样的方法折腾了好久。其中看到了这样一个回答“有两种可能你电脑里的某个软件需要使用Micros...博文来自:LRH的博客

  正文:ORM:关系型数据库和实体间做映射,操作对象的属性和方法,跳过SQL语句对象关系映射(英语:ObjectRelationalMapping,简称ORM,或O/RM,或O/Rmapping),用...博文来自:星小丫头辰

  听说有人面试的时候会被问到,.net各个版本之间有什么区别。参考下面的连接点击打开链接...博文来自:u010969626的博客

  谁有 《Microsoft .net框架程序设计》的中文电子书,急,在线等待。论坛

  序言最近有个项目需要用到webaAPI来做后台处理,关于webAPI,网上资料相对较少,相关的书籍也比较少,能系统讲解的视频几乎没有,遇到问题往往都只能自己摸索摸索,作为初学WebApi的我来说是想当...博文来自:冰块药丸的博客

  更多参考:博客园笔记面试题1:ASP.NET是什么ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NETFramework中一套用于生成Web应用程序...博文来自:Peter-H

  在win2003上安装.netfw2及3.5都安装不上,百度了各种方法,包括删目录、微软的清除工具、停止服务,等等,都不能安装,总是提示1603错误。终于有个网友提过说把360退出后,就可以了,结果我...博文来自:wsq2002的专栏

  szwang1:博主结巴子啊?还都结两遍! 开个玩笑,感谢楼主分享,很好的文章,就是没看懂,再找找别的相关文章去

  xudanhui5167:老哥,可以问一下为什么我反射另一个类的时候,缺找不到指定的方法(返回值为double的方法可以得到,而为string的时候缺找不到)。

http://alamedapdx.net/zhuanyongchengxuji/310.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有