详论在.NET中定义结构设计标准

随着.net平台的推出,微软不但使这种工作更加吃香,而且明显又带来了更多的挑战。但是如果有充足的计划,.NET结构设计师就能保证他们的开发团队创建高质量的、可支持的以及可维护的应用程序,方法就是给出一个使用.NET平台先进性的创建或升级的标准和过程的可靠建议。

对于那些打算升级或者创造适应.NET的标准的结构设计师来说,有两个主要问题需要考虑。一是如何改变开发标准,二是如何根据该平台的新的RAD能力以及开发部署环境的要求来修改开发过程。

开发标准

新开发平台的推出要求我们重新评价现有的开发标准。但是.NET平台为新的、令人激动地应用程序类型带来了如此多的机会,以至于你需要对你的标准进行根本的改变。只有一些地方只需要较小的变动,例如命名标准和惯例以及文档标准需要做的改变就不多。但是所有的使用.NET Framework的新应用开发都要有效地将应用程序视为松散的耦合组件和精心设计的接口的集合体。虽然很多C++开发人员不会发现这类思考过程困难,但是多数VB.NET开发人员却会。为正确地开发类而要求的规范和知识将不得不来自.NET结构设计师,而不是来自VB开发人员,因为他们只有使用类而没有设计类的经验。开发一个高效的类设计、集成以及命名策略是使用.NET开发软件走向成功的第一步。

另外,新的.NET安全特征强迫系统结构设计师重新检查先前的有关安全管理议题的假设。像以前的COM系统一样,.NET可以使用一个单独的安全凭证集合,籍此不但可控制磁盘一般文件和可执行文件的访问,还可以控制数据库表和存储过程(在SQL Server中使用集成安全性--.NET倾向使用的方法)的访问。但是.NET为使用代码访问安全来访问系统资源的代码增加了请求或者需求权限的能力。事实上,.NET结构设计师必须考虑如何汇总管理和应用域,因为这些东西要求他们必须重新评价他们当前所有的有关应用程序内的以及应用程序间的管理信任边界的假设。

另外一个结构设计师必须要考虑的主要标准区域是数据访问。.NET应用程序使用ADO.NET访问数据,因此它尽可能的工作在脱机以及无状态的自然情况下,而基于ADO的COM应用程序需要高度联机、有状态的环境。使用消极锁定的处理并发问题的开发建议在.NET环境里不能简单高效地实现,因为它更趋向于使用积极并发。结构设计师需要为处理贯穿于整个企业的并发问题建立一个标准。

开发过程

更新之后的新标准并不足以保证在采用.NET平台时能够成功。平台提供的RAD功能要求结构设计师重新考虑软件设计过程以及整个应用程序生命周期管理问题。当你的开发人员使用新的.NET Framework特征,比如说DataSets、DataGrids以及ASP.NET设计环境来创建健壮、可部署的原型时,你就要重新检查你的软件设计过程。VS.net使开发人员使用像极端程序设计法之类的新的方法学,以非常快的速度(相比老的开发工具而言)来创建软件系统的特征丰富的新迭代发布版本。有了维护前面讨论的标准的正确指导,我们就能创建更快适应时间改变,类型更加丰富的应用程序----只要结构设计师在向新的设计过程转变的足够快。

另外我已经看到人们对源代码管理和构建基于微软技术的系统的巨大兴趣。曾经被遗忘的产品,Visual SourceSafe,又焕发出生机。在VS.NET工具集投入了成千万美元的公司很不情愿地在第三方源代码管理系统上投入更多的钱。很多使用COM技术的公司忽视了共享源代码的需求,因为他们遵从的是每个项目作为一个开发(one-developer-per-project)的规则。但是由于在.NET平台开发的组件具有高度可复用的本质,所以很多的应用程序的开发者变成了那些创建可复用组件或者子系统的团队,而不再是那些开发单独系统的个体。这些环境就需要高效的源代码管理,源代码系统的使用是整个开发、构建和测试过程的一个不可分割的一部分。

继续向前

.NET Framework是微软在开发工具上的一个主要的策略转变。它需要开发人员和系统结构设计师共同回顾检查开发过程的细节。这个过程的结果是一个每个人必须遵守的结构设计标准。

时间: 2024-11-01 00:45:44

详论在.NET中定义结构设计标准的相关文章

详解C++程序中定义struct结构体的方法_C 语言

什么是结构体?简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 结构体的定义 定义结构体使用struct修饰符,例如: struct

python中定义结构体的方法_python

Python中没有专门定义结构体的方法,但可以使用class标记定义类来代替结构体,其成员可以在构造函数__init__中定义,具体方法如下. 复制代码 代码如下: class item:    def __init__(self):        self.name = ''     # 名称        self.size = 10     # 尺寸        self.list = []     # 列表 a = item() # 定义结构对象a.name = 'cup'a.size

C/C++中的结构体

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: struct test

详解C语言中结构体的自引用和相互引用_C 语言

结构体的自引用(self reference),就是在结构体内部,包含指向自身类型结构体的指针. 结构体的相互引用(mutual reference),就是说在多个结构体中,都包含指向其他结构体的指针.1. 自引用 结构体 1.1 不使用typedef时错误的方式: struct tag_1{ struct tag_1 A; /* 结构体 */ int value; };         这种声明是错误的,因为这种声明实际上是一个无限循环,成员b是一个结构体,b的内部还会有成员是结构体,依次下去

详解C语言中的内存四区模型及结构体对内存的使用_C 语言

内存四区 1.代码区代码区code,程序被操作系统加载到内存的时候,所有的可执行代码都加载到代码区,也叫代码段,这块内存是不可以在运行期间修改的.2.静态区所有的全局变量以及程序中的静态变量都存储到静态区.3.栈区栈stack是一种先进后出的内存结构,所有的自动变量,函数的形参都是由编译器自动放出栈中,当一个自动变量超出其作用域时,自动从栈中弹出.对于自动变量,什么时候入栈,什么时候出栈,是不需要程序控制的,由C语言编译器.实现栈不会很大,一般都是以K为单位的. 当栈空间以满,但还往栈内存压变量

详解Swift语言中的类与结构体_Swift

类在 Swift 中类是建立灵活的构建块.类似于常量,变量和函数,用户可以定义的类的属性和方法.Swift给我们提供了声明类,而无需用户创建接口和实现文件的功能.Swift 允许我们创建类作为单个文件和外部接口,将默认在类一次初始化来创建. 使用类的好处: 继承获得一个类的属性到其他类 类型转换使用户能够在运行时检查类的类型 初始化器需要处理释放内存资源 引用计数允许类实例有一个以上的参考 类和结构的共同特征: 属性被定义为存储值 下标被定义为提供访问值 方法被初始化来改善功能 初始状态是由初始

oracle oci 的 OCIEnv 结构体 在 哪个文件中定义

问题描述 oracle oci 的 OCIEnv 结构体 在 哪个文件中定义 请教大家一个问题程序报错: 使用了未定义类型"OCIEnv" 我在 oci.h中找到 typedef struct OCIEnv OCIEnv; /* OCI environment handle */ 文件 但是不知道struct OCIEnv 结构体在哪个文件中定义,麻烦大家帮忙解答 解决方案 C语言中怎样调用其他文件定义的结构体 解决方案二: 在线等,麻烦大侠们帮忙解答,谢谢

JavaScript中定义类的方式详解_javascript技巧

本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象. 一.定义类并创建类的实例对象 在Javascript中,我们用function来定义类,如下: function Sh

如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中?

问题描述 如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中? //栈的头文件声明 #include #include #include "Tree" #ifndef STACK_H #define STACK_H typedef union typelemt{ char ch; Tree t; }typelemt; typedef struct stack{ typelemt* type_stack; int max; }stack; typ