`
RednaxelaFX
  • 浏览: 3016219 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

看了关于VS2008/.NET 3.5 SP1的录像,做笔记

阅读更多
录像地址:
Channel 9: Not your grandmother's service pack!

这是在纽约的.NET开发者社区做的一个演示的录像。原本是想看看一些我平时更可能会用到的特性的介绍,像是VS2008的squiggles之类的,不过录像内容主要是ASP.NET的一个演示,我平时可不作ASP.NET的开发,本来也不太关心ASP.NET相关的信息……嘛,总之看了也没坏。顺便做点笔记好了。

演示中创建的项目类型是Dynamic Data Entities Web Application。从我已有的知识,这里既涉及到两个新特性:Dynamic Data与Entity Framework。

Dynamic Data(下面简称DD)主要用于快速搭建数据驱动的网站,提供带有CRUD基础功能的脚手架(scaffolding),并且允许高度的可定制性。看了这个演示,我的第一感觉跟以前第一次看Ruby on Rails的演示一样惊讶和兴奋。它们在脚手架的概念上非常相似,初始状态下做出来的网页看起来也十分相似;当然,DD生成的默认网页用到了ASP.NET AJAX的控件。Ruby是一种十分动态的语言,而Rails也充分的利用了这一点来提供网站的基本功能。DD背后则是C#(或者VB.NET,或其它CLS兼容的.NET语言),没有Ruby那么动态,为脚手架提供metadata的方式也就不一样。RoR里的许多方法都是通过metaprogramming来完成的,提供一些Symbol就完事了。DD/C#则是通过annotation来提供metadata;DD可以读取metadata来判断为哪些数据生成怎样的页面;包括数据验证(validation)都可以写在metadata里,这样就不必在UI里再写一次model里本来就应该有的数据验证规则了。而且,这些metadata还可以被DD生成的页面以外的其它前端所使用,下面会提到。除此以外,DD还可以使用ASP.NET的另一个新功能,新的Routing Engine,将参数映射到URI上,这样就可以用更加友好的URI来表示所提供的服务,而不必总是在一个问号后面跟一长串的参数。这在以数据为中心的,特别是数据富有层次的系统中应该说是特别方便吧。
一开始,DD是用于LINQ-to-SQL的后端的。而在这个演示里充当后端的则是Entity Framework的ASP.NET Entity Data Model。下面看看Entity Framework是什么。

其实最近关心ASP.NET的人不可能没听说过Entity Framework(下面简称EF)。与ASP.NET MVC一起,它们是现在ASP,NET的热门话题。EF为以处理数据为主的系统提供了比数据库表更高层次的抽象,在框架内提供数据缓存等共通任务的实现,以简化构建这种系统的过程。不过EF到底是不是一个good idea还需要时间的验证。6月份有个轰动的时间,ADO .NET Entity Framework Vote of No Confidence,可以看到一些有经验的开发者对EF目前的状况持有忧虑,认为它犯了早期EJB一样的错误。嗯,这方面我就不太清楚了。之前做过的Java EE的东西也都没用EJB,只有课程作业里用过老的EJB。

演示的最后还展示了一下DD中的数据模型在ADO.NET Data Service中的使用。DD所使用的数据模型里有许多annotation,而这些annotation同样可以被Data Service读取并使用,生成REST风格的数据服务,发送出ATOM格式包装的XML数据。同样也可以通过新的Routing Engine来提供友好的URI,使得在ASP.NET上实现REST风格的服务更加轻松。

毕竟我对ASP.NET的新进展并不太熟悉,用"microsoft asp.net dynamic data"的关键词搜了一下,记下下面几个链接:

Scott Guthrie: New ASP.NET Dynamic Data Support
RedmondDeveloper:  ASP.NET on Rails, Finally
InfoQ: Scaffolding in ASP.NET: Dynamic Data Support
(上一链接的中文版)

根据InfoQ的那篇报道对David Ebbo的引用,利用DD来快速创建一个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。
  • 定制共享页面视图:

  • 接下来就可以修改显示支架视图的页面模板,你所做的改变将会影响到所有与此表相关联的视图。
  • 定制详细的页面:

  • 下一步就是对一些具体的页面进行相应的制定,例如,你可以让一个页面显示产品,而用另一个页面来显示类别。在这一步,你可以按照你自己的步调来创建具体的页面,以保证每个点都能体现应用功能。
  • 注解(annotate)你的模型:

  • 可以通过为你的模型增加属性的方式来为某些字段增加一些额外的信息。例如,你可以为产品的UintInStock字段设置一个取值范围,只允许该字段取值在0至50之间,UI就会自动获取这一信息,并对输入进行校验。这一点的好处就在于你只需要将这些信息保存在你的模型中,而无需让你的页面为此变得杂乱。
  • 创建定制的字段模板:

  • Dynamic Data中的所有字段都是通过字段模板提供的,一般是一些基础的用户控件,你也可以创建定制的模板,这一功能非常强大,例如,在前面的例子中,你可以创建一个字段模板,通过一个限定取值范围的Slider控件来替文本框,页面会自动提取并呈现这一变化,而无需自己去打开aspx文件定制UI。


嗯,把DD跟ASP.NET MVC融合在一起的话,真的就跟RoR十分的相似了。有意思,值得关注一下社区对这几个新技术的反应。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics