.NET基础知识-目标、战略

战略

    。NET目标

    为Internet网络和分布式应用程序的开发提供一个新的开发平台

    简化应用程序开发和部署

    为构建Web Service提供一个标准平台

    改善系统和应用程序之间的交互性和集成性

    使应用程序对任何设备都能够进行访问

    。NET战略

    。NET致力将手机,浏览器和门户应用程序集成到一起,形成一个统一的开发环境,结构如图1-1所示。

    图1-1 .NET的战略

    公共语言运行时(CLR)

    。NET提供了一个运行环境,叫做公共语言运行时(CLR)。CLR管理代码的执行并使开发过程变得更加简单。CLR是一种受控的执行环境,其功能通过编译器与其他工具共同展现。以“运行时”为目标的代码称为受控代码(Managed Code)。受控代码指向的对象在执行过程中完全被CLR所控制。在执行过程中,CLR提供自动内存管理、调试支持、增强的安全性及与受控代码(如COM组件)的互操作性。凡是符合CLS(公共语言规范)的程序语言(如C#和Visual Basic.NET等)所开发的程序都可以在任何有CLR的操作系统上执行。在某种程度上,CLR和Java的虚拟机有异曲同工之妙。

    运行语言特点是交叉语言集成、自描述组件、简单配制和版本化及集成安全服务。

    运行语言使用一种新的能表达大部分现代编程语言语义的通用类型系统,通用类型系统定义了一套标准类型及生成新标准的规则。运行语言知道怎样生成、执行这些类型。编译器和解释器使用运行语言服务定义类型、管理对象、进行方法调用,而不是使用工具或特定于语言的方法。

    类型系统的主要设计目的是使多种语言能深度集成。用一种语言所写的代码能继承用另一种语言所写的类的实现,用一种语言所写的代码抛出的异常能被用另一种语言写的代码捕获,像调试和剖析之类的操作会在完全封闭下工作,而不用考虑代码所用的语言。这就意味着编写可重用类库的开发者,不再需要为每一种编程语言或编译器生成一个版本,并且类库的开发者不再受到为他们使用的编程语言开发的库的限制。

    自描述组件——现在Microsoft .NET框架上已成为可能,简化了开发和配制,并提高了系统的可靠性。许多由运行语言提供的服务是由元数据及用于补充可执行代码的信息所驱动。因为所有的信息都储存在一起,只有可执行的(代码)才被称为自描述组件。

    自描述组件的一个主要优点是,使用它们并不需要其它文件。类的定义不需要单独的头文件;通过检查原数据对类的定义可以从组件自身获得。跨语言或过程边界访问组件并不需要各自的IDL文件、类型文件或proxy/stubs;所必需的信息已存在于元数据之中。为识别开发者请示的服务属性,并不需要展开各自的配制信息。 最主要的是,由于元数据是在编译过程中由源代码生成,并与可执行代码储存在一起,它将永远和可执行部分同步。

    除了改善对单个组件的配制,Microsoft .NET框架定义了一个应用程序配制模板,以解决定置应用程序安装和DLL版本化(通常被称为“DLL Hell”)这一复杂过程的问题,运行语言提供了支持这个模板的服务。

    Microsoft .NET框架 引入了组合体的概念。一个组合体是一组资源和类型,并包括有关这些资源和类型的元数据,也就是被作为一个单元配制的。元数据被称为组合体的名单,它包含象类型和资源表之类能被组合体外看得见的信息,这个名单也包括有关从属关系之类的信息,例如组合体建立时的版本号。开发人员可以指定版本策略,以指示运行语言是否装入系统上已安装的依赖于组合体的最新版本,装入一个指定版本,或在编译时使用的版本。

    某软件组件的多个拷贝总可以存在于同样的操作系统上,然而,通常说来,只有其中的一个拷贝能被操作系统注册、调入内存、执行。对系统来说,定位和调入内存的策略是全局性。。NET Framework Common Language Runtime 增加了所必须的体系架构以支持管理组件定位和调入的每个应用程序策略,这通常被称为并行配制。

    组合体可以被一个应用程序私有,或被多个应用程序共享。一个组合体的多个版本可以同时配制在同一台机器上。应用程序配制信息定义了到何处去查找组合体,这样runtime就能为同时运行的两个不同的应用程序装入同一组合体的不同版本。这就消除了由组件版本的不兼容性引起的问题,提高了系统整体的稳定性。如果必要,管理员可以为配制时刻的组合体增加配制信息,例如一个不同的版本策略,但是编译时提供的原始信息永远不会丢失。

    因为组合体是自描述的,所以并不需要在系统上进行显式注册。应用程序的配制简单到只需将文件拷贝到目录中既可(如果为了使应用程序能够运行,必须安装未经组织过的组件的话,情况会稍微复杂一点)。配制信息保存在可被任何文本编辑器编辑的XML文件中。

    最后,运行语言也提供完整的、普遍深入的安全服务,以确保未经授权的用户不能访问机器上的资源,并且代码不会执行未经允许的动作。这就提高了系统整体的安全性可靠性。 由于运行语言用于装入代码、生成对象、执行方法调用,所以当受控代码装入内存执行时,运行语言能进行安全检查,强化安全策略。

    Microsoft .NET框架不仅规定代码访问安全,还规定基于角色的安全。通过代码访问安全机制,开发人员能为应用程序指定完成工作所必需的权限。例如,代码或许需要写文件或访问环境变量的权力。这类信息和有关代码标志的信息一起存储在配制级上的。当代码装入内存及执行方法调用时,运行语言验证是否能给予代码所要求的权限。如果不能,将记录一条安全冲突信息。给予权限的策略,这被称为信任策略,是由系统管理员建立的,并且是建立在关于代码的证据基础之上,比如:代码是谁发布的,是从什么地方获得的,以及在组合体中找到的代码标志和它要求的权限。开发人员可以指定他们显然不需要的权限,以防止其它人恶意使用他们的代码。如果所需要的权限依赖直到运行时刻才会知道的信息,那么就可写入纲邻性的安全检查。

    除了代码访问安全,运行语言还支持基于角色的安全。基于角色的安全建立同代码访问安全一样的权限模板,只是这些权限是建立在用户的身份之上,而不是建立在代码的标志之上。角色表明了用户所属的类,并且可以在开发和配制阶段定义。给予权限的策略被分配到每个预定义的角色。在运行时刻,用户的身份被确定,代码将代表这个身份运行。运行语言决定用户是哪个角色的成员,然后给予基于这个角色的权限。

时间: 2025-01-26 09:47:51

.NET基础知识-目标、战略的相关文章

《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览

1.1 Unity 3D基础知识概览 Unity 3D 游戏开发技术详解与典型案例 本节主要向读者介绍Unity 3D的相关知识,主要内容包括Unity 3D的简介.Unity 3D的发展和Unity 3D的特点等.通过本节的学习,读者将对Unity 3D有一个基本的认识. 1.1.1 初识Unity 3D Unity 3D是由Unity Technologies开发的一个轻松创建三维视频游戏.建筑可视化.实时三维动画等互动内容的.多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎. Un

《SAP入门经典(第4版•修订版)》——第2章 SAP业务基础知识 2.1 业务架构和业务线路图

第2章 SAP业务基础知识 尽管SAP可以提供大量的应用程序和底层技术来满足公司的业务需求,但首先需要深入理解这些需求和业务要求才能将其映射到软件应用程序中去.而揭示.定义和体现公司的经营目标,并将其转化为应用程序策略正是业务架构的核心内容.创建线路图可以在这一过程中为企业指明方向.在本章中,我们要了解业务架构的基本知识,并开发一份业务线路图.您将亲眼目睹业务需求是如何把机构的目标及其人员与业务应用程序联系起来的,他们最终将使用这些应用程序运行和改造业务. 2.1 业务架构和业务线路图 SAP入

RESTful_基础知识

前言 本篇主要是RESTful的基础知识整理,主要是为了将要开始的Openstack架构主题做知识积累.理解好RESTful的设计思想无论是对学习Openstack架构还是Openstack Dashboard实现都是一件事半功倍的事情. RESTful REST(Representational State Transfer):是一种软件架构的设计风格,而不是一种标准.主要用于C/S架构的软件设计,也能很好的支持B/S架构,为软件设计提供了一组原则和约束条件,但这是原则和约束的条件均不具有标准

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

PHP内核介绍及扩展开发指南—基础知识

  一. 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码. 1.1 PHP变量的存储 1.1.1 zval结构 Zend使用zval结构来存储PHP变量的值,该结构如下所示: typedef union _zvalue_value {      long lval;              /* long value */      double dval;                /* double 

第二课笔记:搜索引擎基础知识和工作原理

  大家好,我是专门从事SEO的,几个月来一直都在维护和优化按摩器排行榜www.yziyuan.com这个网站,并从中总结了很多的经验和知识.今天要分享的是<搜索引擎基础知识和工作原理>,这是最基本的概念吧, 第一部分:什么是搜索引擎? 1,定义? 官方定义: 搜索引擎是指根据一定的策略.运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.百度和谷歌等是搜索引擎的代表. 我的理解是: 按照搜索引擎的搜索规则去设置目标网站的

敏捷测试(7) 基于story的敏捷基础知识

基于story的敏捷基础知识----迭代启动会.迭代回顾会 除需求讲解意外,需要所有团队成员参加的会议仅有两个,分别是"迭代启动会"和"迭代回顾会". (1)迭代启动会 在迭代开始之前,需要召开迭代启动会,目的有以下两个: 明确迭代周期,即上线时间: 明确迭代目标,即以什么样的优先级,交付哪些story. 在明确了迭代周期和上线时间后,按照前面提到的"迭代规划"来开迭代启动会即可,在此不再赘述. (2)迭代回顾会 在每个迭代结束后都有迭代回顾会,

敏捷测试(5) 基于story的敏捷基础知识

基于story的敏捷基础知识----需求管理(二) (1)定期发布 定期发布上线,把整个项目划分为一个个迭代,每个迭代时间大小固定(基本固定),迭代结束时上线交付一次. 开发 story模板"> (2)迭代规划 迭代规划相当于整个迭代的计划,帮助我们管理并保证每个迭代的交付. A.迭代规划的前提: story沟通及验收条件的补充完成. PM给出story的优先级 RD.QA给出story的估点,估点可取范围为(1.2.3.5),若有大于等于5点的story,尽量拆分成更小的story. B

敏捷测试(3) 基于story的敏捷基础知识

基于story的敏捷基础知识----story编写 为什么使用Story? 软件行业40年多来,需求分析技术已经很成熟了,但是MRD驱动的过程不堪重负.因为往往MRD编写会占去很多时间,MRD评审又会占去大量时间,编码完成过后提测,压力又全部倾注在QA身上,往往临计划上线时间,或者体验还差,或者bug还太多,或者项目延期. 使用story,项目完成时间会大大缩短,上市时间大大缩短.主要原因: A. 采用story模式,将大需求拆为可独立交付的小story,需求清晰明了,节省了大量的需求评审时间.

大数据基础知识问答----spark篇,大数据生态圈

Spark相关知识点 1.Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架 dfsSpark基于mapreduce算法实现的分布式计算,拥有HadoopMapReduce所具有的优点:但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法. 2.Spark与Hadoop的对比(Spar