50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

ASP.NET 里的支架:Dynamic Data Support

  • 2007-12-23
  • 本文字数:1997 字

    阅读完需:约 7 分钟

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 应用的基本步骤:

  1. 定义你的模型:这一步不是特别针对 Dynamic Data 的,但这是一切的起点。你有一个数据库,就需要为它创建一个模型,现在,这一步可以由 LINQ to SQL 来完成,不久后 LINQ to ENtities 也可以完成同样的工作。
  2. 测试应用的支架版本:无需额外的工作量,Dynamic Data 就可以让你的支架版本的 Web 应用运行在你的数据方案之上。尽管这个支架版本只有一些简单“标准”的 UI,但是已足够让你对数据表进行所有 CRUD 的操作(译者注:C 即创建 -Create,R 即读取 -Read,U 即更新 -Update,D 即删除 -Delete),而且它全面支持数据表关系。以 Northwind 为例,假设在产品页中可能允许你浏览产品的类别信息,而编辑产品类别名称可能会是在一个下拉框中进行,那么它将显示类别名称,而不是 ID。
  3. 定制共享页面视图:接下来就可以修改显示支架视图的页面模板,你所做的改变将会影响到所有与此表相关联的视图。
  4. 定制详细的页面:下一步就是对一些具体的页面进行相应的制定,例如,你可以让一个页面显示产品,而用另一个页面来显示类别。在这一步,你可以按照你自己的步调来创建具体的页面,以保证每个点都能体现应用功能。
  5. 注解你的模型:可以通过为你的模型增加属性的方式来为某些字段增加一些额外的信息。例如,你可以为产品的 UintInStock 字段设置一个取值范围,只允许该字段取值在 0 至 50 之间,UI 就会自动获取这一信息,并对输入进行校验。这一点的好处就在于你只需要将这些信息保存在你的模型中,而无需让你的页面为此变得杂乱。
  6. 创建定制的字段模板: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

2007-12-23 22:442972
用户头像

发布了 90 篇内容, 共 16.4 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

1月10日 KaiwuDB 1.0 线上发布会

KaiwuDB

EMQ携“云边协同IIoT解决方案”亮相2022世界工业互联网产业大会

EMQ映云科技

人工智能 物联网 IoT 云边协同 企业号 1 月 PK 榜

基于开源体系的云原生微服务治理实践与探索

阿里巴巴云原生

阿里云 开源 云原生 service mesh

IM通讯协议专题学习(七):手把手教你如何在NodeJS中从零使用Protobuf

JackJiang

即时通讯 protobuf im开发

喜讯!云起无垠获评《2022年度十大新锐企业》

云起无垠

Fuzzing 2022年度十大新锐企业

硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普

阿里巴巴云原生

阿里云 Serverless 云原生

Hands on HTML & CSS

无人之路

CSS html

Apache Tomcat 存在 JsonErrorReportValve 注入漏洞(CVE-2022-45143)

墨菲安全

安全漏洞 CVE

重磅发布丨从云原生到Serverless,先行一步看见更大的技术想象力

阿里巴巴云原生

阿里云 Serverless 云原生

直播 | StarRocks 联合腾讯云分享 EMR-StarRocks 的降本增效之路

StarRocks

数据库

为什么说 数据服务是数据中台的标配?

用友BIP

IoT物联网设备「固件升级」OTA,「资源包更新」最佳实践——实践类

阿里云AIoT

运维 物联网 数据格式

云渲染市场安全吗?如何保证数据安全、财产安全?

Renderbus瑞云渲染农场

云渲染 云渲染农场 云渲染安全

累计装机超过300万套 欧拉操作系统跨越生态拐点

极客天地

2023 年openEuler 社区技术委员会增选,新增2位委员

openEuler

Linux 开源 操作系统 openEuler 资讯

一文了解华为FusionInsight MRS HBase的集群隔离方案RSGroup

华为云开发者联盟

大数据 后端 华为云 企业号 1 月 PK 榜

YMatrix v5.0 发布:138 项深度优化,重塑集群架构,实现性能及高可用性全方位提升!

YMatrix 超融合数据库

OLAP OLTP 超融合数据库 数据库架构设计 YMatrix

划重点,2023 年最值得关注的 8 大技术趋势

PreMaint

人工智能 云计算 5G 技术趋势 元宇宙

金融数字化为何需要低代码开发平台

力软低代码开发平台

Apache RocketMQ 斩获 InfoQ 2022 年度十大开源新锐项目

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

IoT物联网平台「设备影子」开发实战——实践类

阿里云AIoT

JavaScript json 物联网 API 储存

从 Nginx Ingress 窥探云原生网关选型

阿里巴巴云原生

阿里云 微服务 云原生

强强联手 | 尚硅谷&腾讯云EMR离线数仓教程发布

小谷哥

2023年AI十大展望:GPT-4领衔大模型变革,谷歌拉响警报,训练数据告急

OneFlow

人工智能 深度学习

站酷基于服务网格ASM的生产实践

阿里巴巴云原生

阿里云 云原生 服务网格

安畅SmartOps混合云平台架构的演进之道

安畅Anchnet

云原生

ASP.NET里的支架:Dynamic Data Support_.NET_Hartmut Wilms_InfoQ精选文章