文件名称:校内API开发. pdf
文件大小:194KB
文件格式:PDF
更新时间:2012-07-28 07:45:56
校内API开发 pdf
校内应用程序开发:.NET应用程序开发标准化 通过为你企业建立个公共应用结构框架来提高.NET应用开发效率 by Rao Chejarla (印度) 涉及技术:ADO.NET、ASP.NET 开发企业应用是个复杂过程你可以运用Microsoft .NET技术许多工具来使这个过程变得更快更容易但由于 .NET复杂性选择最直接思路方法是很难如果没有明确标准和方针用来开发应用企业中每个开发小组就可能在安 全、数据库访问策略和测试过程上进行重复开发虽然每个小组都可能在这些领域中开发出有效思路方法但会导 致不必要重复工作而且在重要安全性方面如果每个开发小组都确定各自安全实现思路方法那么应用可能变得很 容易受到攻击 如果你在IT集团公司工作这种情况确很常见幸运是你可以把事情简单化虽然企业中开发每个应用都解决个独特 商业问题但你可以将所有应用建立在同样底层框架组件上通过开发标准和公从命名惯例到用来强化应用结构预 装组件最好思路方法共应用结构组件你开发小组就可以节省时间、确保应用是安全、并改善各小组间协作标准 范围很广 在本文中我将探讨在企业中实现个公共应用结构框架最好思路方法我将特别关注 3个主要方面:应用安全性、数 据库访问策略和测试过程我将讲述验证你用户身份、用 4个层来构建你企业级应用、还将讲述下Microsoft两个 新对象——Data和DataReader——它们是ADO.NET部分可以帮你分离各个层 运用预装组件是加强应用结构并提供般服务个好思路方法应用结构是个企业级问题你现有企业组织结构中可能 并没有个小组来承担这项工作然而形成这样个小组是很简单你只需要重新编制各个小组然后分配些技术很强人 员(已经在你们公司中)来从事应用结构方面工作 你在引进个公共底层框架应用时各小组可能主要关注商业问题而不是担心结构问题这就使我们对做每个应用开 发人员技术要求并不高因此开发进度就会缩短可以更好地响应市场情况所有这些原因结合就会减少开发和维护 方面投资最终提高你们公司赢利然而你首先需要在 3个主要方面建立个公共底层框架:应用安全性、数据库访问 策略和测试过程 安全是很重要你应该从开发早期阶段就控制应用结构这个方面适当用户身份验证和授权可以保证个应用安全在 没有集中安全组件时候每个小组编写它自己安全代码这是很危险个中心安全策略不仅可以使开发人员避免重复 劳动为企业中所有应用提供同样级别保护还可以创建个结构使所有修改都在个地方进行而且不会产生新安全漏 洞安全结构中首要步就是用户身份验证 验证你用户身份 个典型企业需要验证两类用户身份:内部用户(雇员)和外部用户(供应商和客户)你企业应该建立统策略来验证这两 类用户身份并对他们授权 在传统ASP中如果你不用集成Windows验证用户身份验证和授权是很难实现例如确定每个用户身份都经过了验 证并不容易每个ASP页面都需要代码来检验用户身份验证cookie并证明用户身份得到了确定在ASP.NET中身份 验证和授权比在传统ASP中要容易多了在ASP.NET中有 3种形式身份验证:Windows验证、Passport验证和 Forms验证 Windows验证很简单用于简单应用它根据当前域Active Directory(AD)来验证用户身份用户组被当作角色来进 行基于角色验证用户组角色可能不像应用需要那么细化所以它们必须存在另个数据库或自己AD中 ;Windows验证不能改变这些角色 Passport验证是Microsoft.NET My Services策略部分用来验证Internet中用户Passport是个单点登录(SSO)服 务允许注册用户用个单用户ID和密码来访问相关网站WebSiteMicrosoft Passport服务器负责维护用户身份信 息并提供个验证机制Passportwallet功能给用户提供了选项来存储他们信用卡信息并和网站WebSite共享如果 网站WebSite需要更多信息它们可以在它们自己数据库中得到那个信息并将它同Passport用户ID结合起来这对 用户是有好处她信息是集中存储她不需要访问每个网站WebSite时都重复输入信息对于企业来说这种验证有不 好地方它们必须相信个数据库而它们对这个库却无法控制到目前为止Passport验证很难被人们广泛采用而成为 种可行验证思路方法 和Passport验证区别Forms验证具有灵活性你可以插入定制验证代码并开发公共安全组件你可以在服务器端 machine.config中配置它旦完成配置组件就自动插入那个服务器上所有应用中了 研究安全组件 ASP.NET提供了个很好思路方法用HttpModule在请求执行路径中插入新功能开发人员可以创建定制 HttpModule用来验证内部/外部用户建立用户角色并创建个定制主要对象有关个简单定制HttpModule你可以 下载代码样例(见列表1) 你也可能想考虑你安全组件些其它功能例如拥有个安全管理控制台会很好这样就提供了设施来定义应用角色给 角色授权(URLS和操作)并给用户授予角色当你有个控制台应用时你可以委派管理责任包括安全设置人们改变角 色时对于个给定角色来说应用功能就改变了这时候组件很有用 你可能想扩展安全模块来查看URL和它操作代码并查看用户是否被授权了应用中每个资源或URL可以有多个操 作过程如查看、创建、更新和删除如果你可以在操作上(而不是资源上)控制用户访问这会很有用这就使 ASP.NET页面可以为相关用户得到操作清单而不用担心用户拥有什么角色最后考虑提供ASP.NET服务器端组件 个性化根据用户能力来实施应用菜单 旦你得到了适当安全组件你就做好准备研究你数据访问思路方法了人们在这方面常犯就是在显示层开发所有东 西包括你商业逻辑和数据访问组件这种开发就导致了很难维护像意大利面条样代码(见资源)它也使改变数据库计 划或者改变到个全新数据库变得很难、很昂贵你必须找到散布在你应用中所有单独数据访问指令用 4个层来构 建你企业级应用——显示层、工作流层、商业层和数据访问层——可以使应用更容易维护、更具扩展性 有关这个话题我将重点讲述数据访问层应用需要将数据访问层同商业对象明显分离开你不想让SQL语句散布在 从显示层到商业层所有代码中这些层不需要知道数据是如何得到从哪里得到 Microsoft包含两个新对象——Data和DataReader——它们作为ADO.NET部分来分离各个层Data对象对于个 不连接应用模式是很有用而DataReader对象则用于连接应用然而这些对象都有个缺点:当你访问属性值时它们 或者通过名字或者通过列号来查找在通过列名字访问数据情况下如果在这些名字中有个typo在编译时就不会被 检测出来当列名散布在你代码中时就很难在以后改变它们名字了如果你通过列号来访问数据代码更难读而且你 需要知道列在Data或DataReader中出现顺序 运用Strongly Typed Datas 强类型(strongly typed) datas解决了这个问题但你不能总用Data对象当你运用Data对象时它把所有记录都读 进内存中在大量应用中服务器资源会用尽但如果用DataReader就没有个等同于strongly typed Row对象种思 路方法就是反复运用Data和DataReader这样会形成强类型对象是很理想 我用种思路方法就是对每个表用个Proxy对象和个Do对象Proxy对象包含SQL语句或存储过程指令来得到或保存 域对象Do对象包含属性来体现表特性商业逻辑组件和Proxy对象交互并在Do对象上执行商业逻辑这种思路方法 为Proxy对象限制了SQL语句或过程名字内容它提供了个统数据访问策略提高了应用代码可读性减少了运行时并 提供了灵活性如果它有必要转换到个区别数据库层话(见图1) 你应该用松散藕合层来构建应用这样可以提高应用可维护性、可扩展性和重用性这种思路方法包含用于每个表 个Proxy对象和个Do对象Proxy对象包含SQL语句或存储过程来得到或保存do对象Do对象包含属性来呈现表特 性 我们有必要探讨下有关Proxy对象更多细节问题个引起人们争议问题就是在Proxy对象中是运用SQL语句还是运 用存储过程运用存储过程比SQL语句更有效因此些公司更喜欢用存储过程但你应该选用更适合你公司思路方法 不管你采用什么思路方法避免割裂存储过程和商业逻辑组件的间商业逻辑我喜欢把商业逻辑保存在商业对象中 作为例子我提供了个C#代码列表它显示了个Authors表Proxy和Do类(见列表2) 你需要考虑应用结构框架中最后步就是测试过程测试在开发阶段很重要它是证明软件Software可行唯方式然而 在时间紧迫情况下比如发行日期快到了测试通常似乎处于个次要位置而且在大多数情况下测试这项工作需要人 们精力集中、担负责任每次代码改变时都需要人们严格地重复测试过程 种新软件Software开发思路方法学极端编程(extreme programming)引进了个严格软件Software开发思路方 法这种思路方法牢记使最终产品可以交付、使用户满意并质量合格(见资源)它是建立在个基于测试开发理念上鼓 励开发人员在编写实际功能代码前编写测试用例所有测试用例都作为类来开发它们测试商业功能类功能性 旦将测试用例作为类你就可以在任何时候重复测试如果所有测试用例都不能运行你就会知道有问题当现有代码 被改变时(很可能有些东西被破坏)这种测试思路方法尤其有效 为了使测试更容易极端编程思路方法创立人Kent Beck创建了种简单称为JUnit框架使人们可以用Java编写测试 用例作为.NET“工厂”你可以运用同等公开资源NUnit(见资源)它是建立在JUnit最初观念上你可以把它同 Visual Studio .NET(VS.NET)集成起来它可以让你在同个项目中包含测试类和功能类在相同项目中拥有测试类 和功能类就可以进行有效测试每次当个功能类改变时你不需要转换项目来测试在开发周期中你将测试思路方法 添加到测试用例类并添加功能到商业类然后运行测试用例测试类也同商业类起集成在Visual SourceSafe中当你 将测试作为开发过程个不可分割部分时你代码质量就提高了重复测试很简单它也消除了由于改变代码而引起恐 惧 现在你已经知道了建立个公共应用结构步骤你已经做好准备将它们用于你企业了建立个积极小组让它们负责公 共底层框架及其前景每个企业都会构建自己应用并为此投资创建个公共底层框架可以帮你更快地开发更高质量 应用而且投资更少