Microsoft SQL Server 2008和Microsoft数据平台为开发人员提供了一个综合的编程架构,用于创建针对移动设备、桌面电脑、Web服务器,和企业服务器的基于数据的解 决方案。这个数据编程环境将数据访问和管理集成到一个应用程序的业务逻辑中,从而提高了开发人员的生产力。它提供了一个用于对异构数据源的数据访问和管理 的综合的平台,和一个用于数据存储和应用程序的可扩展的解决方案……
一、导言
这 些年随着数据库系统和编程语言的不断发展,它们各自都有了自己专注的特定的功能而逐渐分离开。这导致产生了在现今的应用程序中的数据存储和业务逻辑之间的 阻抗失谐。SQL Server 2008与Microsoft数据平台技术的结合使得你可以快速并轻松的建立能够消除这个失谐的综合的和可扩展的基于数据的解决方案。
尤其是,ADO.NET 实体框架为开发人员定义了一个新的方式来将数据放到易于使用的实体中,而一个叫做LINQ的创新技术定义了一个新的、强大的数据访问查询语法来与实际的任何数据类型直接通信,包括实体和SQL Server 2008。
SQL Server 2008专注于三个关键领域来满足目前的数据可编程性需求:
· 生产力。SQL Server 2008和Microsoft Visual Studio®为开发人员提供了新的数据模型、语法和团队合作工具,提高了开发人员的生产力。
· 连接。SQL Server 2008支持新的和旧的连接技术,使得开发人员可以使用最适合他们的要求的技术。
· 可扩展性。SQL Server 2008提供了一个用于许多不同类型的工作负载(从移动设备到企业解决方案)的可扩展的数据库系统。它还与Visual Studio 集成,从而使得开发人员可以建立可扩展的解决方案。
二、提高了生产力
Microsoft SQL Server 2008和Microsoft 数据平台的开发技术为开发人员提供了架构、数据连接技术、编程语言、Web services 、开发工具、和数据间的无缝集成,从而提高了开发人员的生产力。
ADO.NET实体框架
开发人员经常花费大量的时间解析数据库架构和编写复杂的查询来获取他们的应用程序中所需要的数据。ADO.NET 实体框架简化了这些工作,使得开发人员可以专注于他们的应用程序的业务逻辑。
企业系统经常使用多个异构数据源的数据,这些数据使用不同的架构和命名规则。此外,这些数据源经常使用不同的标准化级别,这导致用于某个特定的业务项目的信息跨越了多个表和行。而这使得开发人员得写大量的应用逻辑来管理这些复杂的数据库关系。
ADO.NET 实体框架基于实体数据模型,使得开发人员可以将数据库架构中的关系数据转换到可以直接在应用程序中使用的概念实体中。例如,你的应用程序中的客户数据可能 存储在数据库中的多个表中。通过使用ADO.NET实体框架,架构师和开发人员可以定义一个单独的概念上的客户实体,这个实体完全抽象了从应用程序中访问 和更新客户数据所需要的复杂关系。这个抽象层将数据访问逻辑封装到一组用在一个应用程序中的良好定义的实体中,而这个抽象帮助开发人员专注于开发应用程序 的逻辑。
ADO.NET 实体框架提供了一个数据编程界面,使得:
· 易于理解概念数据模型。通过使用实体数据模型,你可以按照应用程序中的业务逻辑来使用数据,而不是数据源的逻辑架构。
· 易于设计和开发应用程序。开发结合了业务逻辑和数据访问逻辑的应用程序使得架构师设计应用程序和开发人员编写代码都变得简单得多。
· 易于维护应用程序。通过使用一个概念数据模型,开发人员可以专注于应用程序的业务逻辑,而不是数据存储逻辑。而且,ADO.NET 实体框架保护应用程序,防止对后台数据架构的改动,这样就将维护工作降低到最小。
因为实体数据模型使用实体而不是表和行,开发人员需要一个与这些对象交互的查询语言。实体SQL(Entity SQL)是一个新的语言,它能够执行面向集合的声明性查询语言和对实体数据模型中的实体和关系的更新。实体SQL与实际的数据提供商无关,所以你可以重用对不同的数据库提供商的查询,这节省了你的编码时间。
大多数开发人员使用面向对象的编程语言例如C#和Visual Basic 在他们的商业应用程序中编写新的代码。这些语言模型实体将类及其活动作为它们的代码,而ADO.NET将数据作为它的值。这导致了数据和应用程序间的阻抗 失谐。ADO.NET 实体框架提供了一个对象服务层,它降低了这个失谐程度。开发人员可以使用对象服务来建立类型查询和返回、操纵和更新作为业务对象的结果。ADO.NET 实体框架从架构中的实体数据模型实体生成.NET类。这些类是局部类,因此开发人员可以用定制的业务逻辑来扩展它们,而不会影响已生成的代码。这些业务对 象可以通过实体SQL或语言级集成查询能力来查询(Language Integrated Query,LINQ)。
LINQ
目前的数据访问代码是内嵌在应用程序的字符串中的,用各个数据库特定的SQL语言来编写。由于这个原因,开发人员必须熟悉一个SQL语言和他们所选择的 编程语言。这增加了对基于数据的解决方案的开发人员的知识要求。字符串中的内嵌查询意味着代码不能在编译的时候进行检查,因此开发人员必须等到查询代码发 送到数据库服务器上才能确定是否是正确的。这个运行时调试通常导致更复杂的调试过程。
LINQ 是一组对Microsoft .NET 框架库、C#和Visual Basic .NET 的扩展,它使得这些语言将数据看作是普通的对象。LINQ使得开发人员能够以他们本地的编程语言来编写查询,然后这个查询会在编译时进行检测和语法检查。 因为它是.NET 语言的一个主要组成部分,LINQ还可以利用Microsoft Visual 套件开发系统的Microsoft IntelliSense。
LINQ 可以用于多种数据源,包括内存数据结构、XML文档、数据库、实体模型、和数据集。例如,LINQ可以用于访问三个不同的数据源的数据,操纵数据,然后将它输出到第四个数据存储里。整个功能极大的简化了对异构数据源的数据的使用。
有五个使你可以访问数据的LINQ工具:
· LINQ到SQL(LINQ to SQL) 支持快速的开发通过使用直接与SQL Server 架构中的数据库对象匹配的programmatic 对象(例如表、视图、存储过程和用户定义的函数)来查询所有的Microsoft SQL Server 版本的应用程序。
· LINQ 到实体(LINQ to Entities) 支持一个更灵活的对象与关系表、视图、存储过程和用户定义的函数之间的匹配。你可以使用LINQ到实体通过扩展的ADO.NET数据提供商来访问SQL Server和其它关系数据库中的数据。
· LINQ 到数据集(LINQ to DataSet) 推出了针对常规的和类型化的数据集的丰富的查询功能。这使得你可以创建和查询数据集中数据表间的连接。
· LINQ 到XML(LINQ to XML) 是一个内存XML编程应用程序编程界面(API),它是设计用来利用最新的.NET 框架语言的创新。
· LINQ 到对象(LINQ to Object) 使得你可以对内存对象执行LINQ查询。这使得你可以以你使用其它数据源的数据的相同方式来使用内存数据。
Visual Studio
Visual Studio 将所有这些数据平台技术结合到一个强大的、而且高效的和易于使用的环境中去。Visual Studio 是一个综合的开发环境,它使得架构师和开发人员可以轻松的设计和开发客户端和服务器代码。
Visual Studio 为开发人员提供了可以自动为已有的和新的数据源创建实体的工具。可以产生能够利用新的对象服务层的局部类。在生成了实体数据模型之后,开发人员可以使用实体SQL和LINQ以一种新的和高效的方式来为它制定计划。
Visual Studio在开发人员编写代码时为其提供IntelliSense 信息。因为ADO.NET 实体框架和LINQ是完全集成到C#和Visual Basic .NET 中的,当使用这些功能来建立应用程序的时候开发人员可以使用强大的IntelliSense功能。这导致生成了用于设计和开发数据库应用程序的更高效的开发环境、更高质量的代码和一个更易于维护的系统。
Visual Studio Team System帮助你提高你的整个开发过程的效率,它为你提供了一些功能,例如源代码控制、跟踪,它还为你提供了整个团队从项目经理到测试人员都可以使用的开发工具。
三、全面的数据平台
SQL Server 2008与目前的和新的数据访问技术结合使用,为开发人员提供了一个全面的数据平台,在其之上建立访问、使用和管理从任何数据源而来的数据,并流线化的发送它到相关的用户的基于数据的解决方案。
数据连接技术
Microsoft 为开发人员提供了一个广泛的数据连接技术,使得他们可以访问和管理从异构数据源而来的数据。
本地数据访问技术,例如ODBC驱动和ADO/OLEDB ,为开发人员提供了对广泛的数据库和数据源的访问。ODBC仍然是最常用的数据访问技术,并支持Visual Studio解决方案访问SQL Server 2008。ADO和OLEDB使得开发人员可以连接到数据库和其它数据源,包括SQL Server 2008。
Microsoft 还支持一组受控数据访问技术,包括ADO.NET 实体框架、ADO.NET 数据提供商、和.NET 框架LINQ。ADO.NET 实体框架使得开发人员可以在概念级别上使用数据,消除了逻辑数据库架构和应用程序的业务逻辑之间的阻抗失谐。ADO.NET 数据提供商使得开发人员可以在广泛的应用程序中访问任何类型的数据源的任何类型的数据,从传统的客户端服务器到运行在精简设备上的应用程序。LINQ使得 开发人员可以使用他们本地的编程语言来查询和管理所有类型的数据。
Microsoft 数据平台还使得开发人员可以使用像XML、JDBC drivers和PHP驱动之类的技术来访问非Microsoft的数据。
丰富的数据可编程性能力
在SQL Server和ADO.NET的新版本中的丰富、可用的数据平台技术使得开发人员可以建立满足最苛刻的要求的下一代基于数据的解决方案。这些技术还降低了设计、开发、和维护基于数据的解决方案的整个的复杂性。
LINQ 提供了对Visual Basic和C#的扩展,使得开发人员可以本地的以这些语言查询数据。这为应用程序中的数据访问和业务逻辑代码提供了一个一致的语法。当使用LINQ时, 与内嵌在业务逻辑中的SQL代码相比,开发人员可以获得更快的查询处理、设计时错误检查和拼写检查,还获得了在开发环境中的对数据访问代码的 IntelliSense 支持。
传统上,开发人员通过参考数据存储的表和列来访问数据。这意味着开发人员需要熟悉数据库结构和充分认 识到对这个结构的任何改动都会显著的影响应用程序。ADO.NET 实体框架使开发人员可以通过使用实体和关系在概念级别上使用数据,这使得开发人员不需要了解后台数据库存储结构,从而分离了应用程序中的数据访问逻辑。它 还简化了解决方案的开发和维护,因为开发人员可以使用反映了他们的应用程序域中的实体的业务实体。
商业应用程序通常要求发生在数据库级别上的复杂的程序操作。Transact-SQL 设计用来使用关系数据和基于集合的操作,但是不是程序编程,所以开发人员通常提取数据,在业务逻辑或数据访问层使用它,然后将数据保存回数据库。这导致在 层间传递了过多的数据,可能还会通过网络,这会影响应用程序性能。或者是,开发人员编写扩展的存储过程和函数,并使用COM协同工作来使用它们。然而,这 些解决方案都不是理想的,因为编写这样的代码太复杂。随着SQL Server 2005的发布,SQL Server 数据库引擎有了.NET 框架公共运行时(CLR)。这使得开发人员可以使用像Visual Basic和C#这样的语言在管理代码中编写存储过程和用户定义的函数。
你的数据,随时、随地
Microsoft 数据平台使得开发人员可以创建可以随时访问任何地点的数据的基于数据的解决方案,并支持极广泛的本地和管理的连接技术、编程语言、编程框架和Web services。
通过对多个编程语言的支持,数据平台使得开发人员可以使用最适合他们需求的语言,而不会限制开发人员可以使用的数据源或任务。
然而,一些应用程序不能持有对他们使用的数据源的永久连接。数据平台支持这种情景,它提供了SQL Server Compact Edition和Microsoft同步服务来支持偶尔连接解决方案。
四、可扩展的基于数据的解决方案
SQL Server 2008提供了开发人员建立可扩展的针对任何工作负载(从最小的设备到最大的服务器)的基于数据的解决方案所需要的功能,并使得应用可以随着业务需求的发展而发展。
可扩展的数据存储
SQL Server 是一个几个版本中都可以高度可扩展的数据库服务器,每一个都设计用来满足一个特定的工作负载的要求。例如,有一个版本是用于移动设备、桌面电脑、工作组、 部门、和企业应用程序。每一个版本都提供强大的、随着你的应用程序的需求和数据存储要求的发展而发展的数据管理。SQL Server 2008包括一组丰富的数据平台特性,它们提高了应用程序的可扩展性来满足你的业务需求。
通过在SQL Server 中使用.NET 框架CLR,开发人员可以使用可维护性高的受控代码来轻松的编写存储过程和用户定义的函数。这提高了可扩展性,因为受控代码更有效,而且它直接作用于数据库中的数据。
SQL Server 2008支持许多数据类型,帮助应用程序有效的进行扩展。GEOMETRY和GEOGRAPHIC数据类型使得开发人员可以直接使用地理数据。新的 FILESTREAM特性使得数据库应用程序可以在数据库之外的文件系统上以它的本地格式存储BLOB数据,同时维护一个到数据库的无缝连接。这使得用户 访问数据就好像它是存储在数据库中一样,同时确保了数据库规模维持在可管理的状态。
SQL Server 提供给开发人员强大的流式API,使得他们可以有效的处理大量的数据。SQL Server 2008和LINQ提供了流和LINQ到XML ,使得开发人员可以以一种简单的方式输出大量的XML数据。
可扩展的应用程序
每一个SQL Server 版本包含了为针对这个版本的应用程序提供数据管理要求的功能。开发人员可以建立针对任何规模的使用的应用程序,如果需要,可以很容易的扩展设计和代码来升 级到一个更强大的SQL Server版本。一个应用程序可能基于一个数据库架构建立起来,后来要求架构改变。在这个实体框架之前,这个解决方案要求对应用程序代码作许多更新来支 持这样的改变。有了实体框架,应用程序能被保护于这样的改动,并能很容易的进行更新。
而且,开发人员可能通过使用LINQ到SQL来建立一个项目,然后发现因为需求改变了,他们需要更加灵活的匹配或对其它数据库的访问。Microsoft 将为这些客户提供工具和指导来迁移他们的应用程序到LINQ到实体中。
Service Broker 是一个非常可靠的信息传递和查询技术,它为数据库应用程序提供了一个异步的编程模型。它支持在一个单独的SQL Server实例和多个服务器上的多个实例中的高速的信息传递。它通过使用有保证的、及时的、有序的和安全的Transact-SQL使得应用程序可以发 送和接收异步的信息。这使得开发人员可以建立安全的、可以轻松的进行扩展来使用SQL Server的其它实例上的服务的数据库应用程序。
SQL Server Compact Edition是一个内嵌在数据库引擎中的需要很少的维护且占用资源很少的版本,它使得开发人员可以为桌上电脑和移动设备建立数据库应用程序。当结合使用 SQL Server Compact edition和Microsoft同步服务时,开发人员可以建立下一代偶尔连接解决方案(OCS)。这使得移动用户可以使用他们数据库的本地拷贝,并在 与一个中央服务器连接时保持与其同步。在客户端设备和数据库服务器之间分配工作量可以极大提高你的解决方案的可扩展性。
Visual Studio Team System 为企业解决方案团队的所有成员提供了一个开发平台。与SQL Server 2008结合使用,开发人员可以轻松的通过HTTP显示对象、数据源、和商业智能组件。这使得更多的客户端可以从不同种类的环境中通过使用标准的协议来访 问SQL Server 数据,并增加了商业智能组件的亲和力和重用性,例如通过Web services实现的报表和立方体。
五、总结
SQL Server 2008是一个全面的数据平台用于为移动设备、桌面、工作组和企业建立强大的可扩展的基于数据的解决方案。将最新的.NET 框架和ADO.NET 版本相结合,开发人员会变得更高效和编写得更好,更可维护源代码。LINQ到SQL使得开发人员可以用本地编程语言来编写数据访问代码,并利用 Visual Studio中的完整的语法检查和IntelliSense 功能。SQL Server 2008支持使用许多数据连接技术,并提供了一组丰富的编程功能,例如Service Broker和.NET 框架CLR。它还支持针对所有类型的设备的应用程序。最后,SQL Server 2008在数据存储和应用程序需求方面都是可扩展的。