随笔 - 27  文章 - 0  评论 - 47 

ASP.NET里的支架:Dynamic Data Support

作者 Hartmut Wilms译者 张海龙 发布于 2007年12月23日 下午10时44分

社区
.NET
主题
.NET框架,
Web框架
标签
脚手架,
Ruby on Rails,
ASP.NET

ASP.NET Dynamic Data Support是上周已发布的ASP.NET 3.5 Extensions CTP版的一部分,它提供了一个支架(Scaffolding,译者注:在建筑界称为脚手架)框架,通过使用这一框架,开发者可以基于ASP.NET进行快速应用开发。

“支架”的概念起源于建筑和建造领域,是指一个临时的框架,用在建造或修复建筑物时的早期阶段。在编程领域里,支架代码被用来提供临时的支撑结构,直到找到永久的解决方案。其实支架方法在Rails的MVC Web框架中已经开始流行了。

Scott Guthrie的博客中,他这样描述ASP.NET Dynamic Data Support

简单地说,ASP.NET Dynamic Data可以让你非常快速地创建基于LINQ to SQL(以及未来的LINQ to Entities)对象模型工作的数据驱动型网站,使用它,你甚至可以在无须手动创建任何页面的情况下完成工作。

David Ebbo还发布了一个视频演示,“从头到尾展示了在创建使用Northwind数据库的简单站点的过程中,应用ASP.NET Dynamic Data的基本场景”。在对Dynamic Data的介绍中,他概括性地给出了快速开发一个ASP.NET应用的基本步骤:

  • 定义你的模型:这一步不是特别针对Dynamic Data的,但这是一切的起点。你有一个数据库,就需要为它创建一个模型,现在,这一步可以由LINQ to SQL来完成,不久后LINQ to ENtities也可以完成同样的工作。
  • 测试应用的支架版本:无需额外的工作量,Dynamic Data就可以让你的支架版本的Web应用运行在你的数据方案之上。尽管这个支架版本只有一些简单“标准”的UI,但是已足够让你对数据表进行所有CRUD的操作(译者注:C即创建-Create,R即读取-Read,U即更新-Update,D即删除-Delete),而且它全面支持数据表关系。以Northwind为例,假设在产品页中可能允许你浏览产品的类别信息,而编辑产品类别名称可能会是在一个下拉框中进行,那么它将显示类别名称,而不是ID。
  • 定制共享页面视图:接下来就可以修改显示支架视图的页面模板,你所做的改变将会影响到所有与此表相关联的视图。
  • 定制详细的页面:下一步就是对一些具体的页面进行相应的制定,例如,你可以让一个页面显示产品,而用另一个页面来显示类别。在这一步,你可以按照你自己的步调来创建具体的页面,以保证每个点都能体现应用功能。
  • 注解你的模型:可以通过为你的模型增加属性的方式来为某些字段增加一些额外的信息。例如,你可以为产品的UintInStock字段设置一个取值范围,只允许该字段取值在0至50之间,UI就会自动获取这一信息,并对输入进行校验。这一点的好处就在于你只需要将这些信息保存在你的模型中,而无需让你的页面为此变得杂乱。
  • 创建定制的字段模板:Dynamic Data中的所有字段都是通过字段模板提供的,一般是一些基础的用户控件,你也可以创建定制的模板,这一功能非常强大,例如,在前面的例子中,你可以创建一个字段模板,通过一个限定取值范围的Slider控件来替文本框,页面会自动提取并呈现这一变化,而无需自己去打开aspx文件定制UI。
  • ASP.NET 3.5 Extensions CTP版为Dynamic Data Web站点和Web应用项目提供Visual Studio 2008的模板。在创建了一个基于模板的Web站点或Web应用后,简单地添加LINQ to SQL数据模型,你就可以运行这个项目,并开始浏览和编辑数据模型中的实体。如果你对此似曾相识,那可能是因为你对那个已中止、曾为支持ASP.NET Dynamic Data而努力的Blinq项目还有些印像。

    Quickstart论坛和David Ebbo的FAQ提供了更多的帮助和指导。FAQ上的第一个问题就是:“它能与ASP.NET的MVC一起工作吗?”,答案是肯定的,但你要下载MVC-Toolkit并仔细查看其中打包的Blog示例。

    为了定制ASP.NET Dynamic Data应用的行为,你还必须为所建立的数据模型提供元数据,现在的CTP提供了一种使用.NET属性来直接在数据模型中添加格式限定或取值范围校验的方法。Marcin Dobosz展示了如何在ASP.NET 3.5 Extension预览版中定制元数据提供者的方法:

    在最近发布的ASP.NET 3.5 Extensions预览版中,这种注解是通过在类中宣布代表模型实体的元数据属性的方式实现的,在最初的实现中有一些限制,但不管用怎样的方法,元数据都只能使用CLR支持的属性,并且这些属性只能通过类来宣布(即便他们是类的属性也一样)。

    Marcin解释了为什么说MVC-Tookit“含有一个可选实现”的原因:

    这个实现有如下改进:
    • 一个基于提供者的插入式元数据模型。
    • 新的元数据属性,它可以通过特定元数据的"buddy"类的特性来声明。
    • 一个基于XML文件的可选参考提供者实现。

    ASP.NET Dynamic Data提供了一个富支架框架,让开发应用的原型变成得非常快速,这些原型可以很容易地通过添加元数据来进行定制。支架是可以被“真实的解决方案”替换的,当它是与ASP.NET MVC框架一起使用时,这种替换就更容易了,并且,ASP.NET网页和Dynamic Data网页可以在同一个ASP.NET应用中共存。

    查看英文原文Scaffolding in ASP.NET: Dynamic Data Support
    posted on 2008-08-22 10:15 InFuture 阅读(...) 评论(...) 编辑 收藏