NET的重要地位使得每一次Framework版本的发布都引起巨大的关注同时 NET的架构师也不得不应对每一次变更带来的挑战
从年微软发布NET Framework 以来到现在微软一共发布了个版本的NET FrameworkNET FX NET FX NET FX NET FX 和NET FX (Beta )同时还发布了针对移动设备开发的NET Compact Framework 和NET Compact Framework
NET Framework新版本的不断推出新特性不断增加需要支持的开发工具也不断升级对于企业内部的平台构架师来说也面临着各种抉择如何规划开发技术策略如何进行开发技术选型如何既保持技术的持续性又能充分应用新技术来提高生产力
NET FX ——从初生到成熟
年微软发布NET Framework 这给软件开发界带来了很多激动人心的特性
◆统一的类型系统基础类库垃圾回收多语言支持
◆ADONET 开启了微软全新的数据访问技术
◆ASPNET 对古老的ASP的变革提供一种全新的方式来开发Web应用程序
◆Windows Forms 把微软开发Windows桌面系统的界面统一在一起
在NET 发布之后很多企业开始转向NET 的开发从此软件开发界开始被带上了NET的道路同时也不得不面对NET Framework升级所带来的挑战
微软在经过年的研发后于年底发布了NET 这次的变化是革命性的而架构师们也不得不再次进行抉择和调整
ADONET 加强了很多功能提升了性能能够更好的胜任数据层的开发尤其Visual Studio的DataSet设计器中TableAdapter的功能可以支持可视化设计数据层让开发数据层更加容易对于以数据为中心的软件系统再也无需使用ORM等辅助工具来开发数据层了
Web Service性能得到提升并且辅以WSE 安全性等各方面都得以保证Web Service作为首选的分布式技术成为可能
泛型和内置泛型集合的支持和其他基础类库的扩展可以让内部的公共类库开发更加简化
全新事务机制(SystemTransactions)的引入让整个系统的事务处理更加方便
NET FX ——四大金刚
年底微软发布了一个稍显另类的版本——NET 这个版本的特殊之处在于它需要NET 安装后才能运行这是因为NET 是基于NET 基础上而开发的一套扩展包它增加了如下组件
◆ Windows Communication Foundation (WCF)
◆ Windows Workflow Foundation (WF)
◆ Windows Presentation Foundation(WPF)
◆ Windows CardSpace(WCS)
NET 提供的这些新组件为开发企业应用程序提供了一致的基础框架这样业务开发人员就只需要专注于业务问题的解决按照NET 的规范来编写业务代码平台构架师面对NET 需要考虑的就是如何把NET 提供的这四个组件融合到企业现有的开发框架中以及如何和第三方类似的产品进行协作
WF支持基于工作流的应用程序
工作流引擎不是什么新技术但WF的初衷是在Windows环境中提供一个通用的工作流技术为所有基于工作流的应用程序提供统一的创建基础
WF支持人员(Human)工作流和系统(System)工作流也支持连续(Sequential)工作流和状态机(StateMachine)工作流WF提出了一个重要的概念活动(Activity)并同时内置了一个基础活动库(Base Activity Library)另外开发人员也可以通过API来自定义自己的活动
WF利用和Visual Studio集成的可视化设计器来设计工作流过程模型开发好的工作流过程模型可以运行于WF提供的运行时引擎(Runtime Engine)中在工作流执行过程中WF也提供了一系列运行时服务来完成额外的工作如持久性功能支持工作流的长期运行跟蹤功能获取工作流执行过程的信息
在WF推出后平台构架师面临的问题是:WF不是工作流管理平台仅仅是一个工作流的开发基础和执行引擎并没有提供组织架构图窗体与流程设计等套件所以平台构架师需要做出如下的抉择基于WF构建自己的工作流管理平台还是继续使用第三方的工作流平台?是否需要选用基于WF开发的第三方的工作流平台?如何把WF和现存的工作流平台集成?如何由现存工作流平台移植到WF?
WCF支持面向服务的应用程序
WCF是微软为了统一目前NET下多个分布式计算技术而提出的它提供一致的编程模型通过稳定的结构极大改进的功能性和互操作性以及可扩展性全面改善了分布式软件系统的WCF不仅仅是对以前技术的整合更多是提供面向服务开发的基础
WCF的核心思想是服务(Service)一个服务可以暴露一个或多个端点(Endpoint)端点即客户端可以使用的接口而端点由着名的ABC构成:地址(Address)指定发送消息的目标位置绑定(Binding)描述如何发送消息合同(Contract)描述消息所包含的内容客户端只有获知ABC的信息才能正确访问服务
使用WCF有如下优势
◆ 统一的模型
◆ 互操作性WCF的基本通讯机制是SOAP
◆ 安全性可靠性和事务完善支持WS各类规范
◆ 兼容性WCF可以和旧技术实现的系统进行交互
WCS一致的数字标识用户控件
Windows CardSpace最初的代号叫InfoCard是微软取代用户ID和密码成为验证网络使用者身份的新方法实际上就是一项以用户为中心的身份识别技术用户可以通过它控制登录网站时提交的信息这将会使管理个人信息更加简便安全同时这项技术也将包含在Windows Vista之中微软推广它的目的就是取代传统的用户名和密码因为它可以提供更好的反钓鱼功能并且预防其他类型的网络诈骗
WCS实际上是一个标识元系统可以支持任何数字标识系统而发行获取和使用数字标识的过程可以视作是获取三个不同角色的过程
◆用户有时称为主体用户是具有数字标识的实体
◆标识提供者标识提供者可以为用户提供数字标识
◆依赖方依赖方是一个应用程序以某种方式依赖于数字标识
WCS为这三种实体在标识元系统中进行交互提供了一致的环境
WPF适用于不同用户界面的统一方法
用户界面对于应用程序是极其重要的一个部分随着IT业的发展用户对界面的要求越来越高但是在NET下一直存在着多种界面开发方式使用Windows Forms开发Windows桌面软件界面使用ASPNET开发Web应用程序界面另外很多应用程序还需要嵌入文档视频实现D和D动画这样开发人员为了实现不同界面需要学习不同的技术是否有一种统一的技术来同时满足不同的需求?
WPF(最初发布的代号为Avalon)就是为解决这一问题而设计WPF为所有的这些用户界面提供一致的技术基础从而大幅简化了开发人员的工作WPF 采用更为现代的方法支持视频动画二维或三维图形以及各种类型的文档从而可以让用户以全新的方式处理信息此外WPF 还为桌面客户端和浏览器客户端提供了通用基础大大简化了二者的应用程序开发工作
在开发用户界面的过程人们还遇到一个重要的问题就是界面逻辑的开发人员并不擅长定义界面的外观和交互设计而界面设计人员并不熟悉IDE等工具因而界面设计人员和开发人员很难协同工作为了解决这个问题WPF引入名为XAML(可扩展标记语言一种基于XML的语言允许以声明方式指定用户界面而非代码)的技术来分离界面定义代码和界面逻辑代码
WPF给应用程序的界面开发带来的变化是巨大的可以说WPF代表了未来界面技术的方向然而在目前的情况下WPF并没有大规模运用也没有成为主流因而平台构架师面临的问题就有点尴尬:既无法把WPF作为唯一选择也无法很好解决当前界面开发的一些疑难杂症也许最好的选择就是尽量把界面层独立出来让开发团队开始学习WPF并逐步尝试使用WPF
NET FX ——语言的变革
微软将于今年年底发布NET Framework 目前大家已经可以获取月份发布的Beta 版本值得说明的是Beta已经附带了GoLive的许可协议这说明整个NET 的接口已经冻结对于一个超前的团队完全可以把NET 运用于实际的项目开发了
NET 有如下个方面的重要新特性
◆ASPNET AJAXNET 把之前发布的Ajax扩展包内置到NET 里面
◆语言改进和LINQ具体改进有自动属性对象初始化器集合初始化器扩展方法Lambda表达式查询句法匿名类型
◆LINQ to SQL实现的数据访问改进
ASPNET AJAX几乎不会刁难平台构架师因为Ajax已经流行很长一段时间ASPNET Ajax扩展包已经在大量使用了NET 带来的唯一好处就是无需单独部署以前的Ajax扩展包了
语言方面的改进引入了函数式编程(Functional Programming)的思想但不会对整个系统构架和企业内部的开发框架产生多大的影响只会让开发人员编写代码更加灵活和敏捷
LINQ(Language Integrated Query)通过编译器来实现在语言中类似SQL的查询语法是一个跨时代的底层技术它的出现让语言能力变得无比的强大
而LINQ to SQL却给平台构架师出了难题在ADONET和LINQ to SQL中如何选择?在第三方ORM和LINQ to SQL如何选择?在LINQ to SQL和未来的ADONET EF(Entity Framework)中如何选择?
对于第一个问题由于LINQ to SQL和ADONET一样是对数据库结构的映射那么基于LINQ to SQL来开发数据访问层和ADONET的基本做法也大同小异唯一不同的是LINQ to SQL面对的实体和实体集合对数据处理无需编写SQL语句
对于第二个问题当前版本的LINQ to SQL还仅支持SQL Server还不足以成为真正意义上的ORM如果你只使用SQL Server并且对ORM的要求不高的话使用LINQ to SQL来代替现有的ORM是可行的
第三个问题提到的ADONET EF是一个实体或概念设计的服务框架是将现实的实体和实体间的关系映射到对象层目的是能够更好地支持流行的Domain Model Driven的开发而LINQ to SQL是和数据库紧密绑定的无法进行抽象也无法支持多级的继承更偏重语言层面对数据库的操作所以说是选择未来的ADONET EF还是LINQ to SQL完全取决于应用系统的规模和设计模式