Jon Galloway正在进行一项关于动态化ASP.NET的MVC 3框架的研究,该研究基于将编译器作为服务的思想。与此同时,Karsten Januszewski也在寻求反序列化JSON的方案,以此来达到替代静态模型的目的。
\通过Mono编译器以服务形式实现的动态模型
\虽然和微软提供的编译器即服务的方案还有两个版本的距离(注:C#的最新版本为5.0,Mono默认编译器基于3.x版本特性实现),Jon Galloway已经着手在最新的Mono编译服务的基础上开始了他的研究。Mono编译器的积极发展,同时也为继承C# 5的异步语言结构奠定了基础。
\Mono.CSharp.Evaluator 是一个基础类。通过调用其中的Run方法可以处理任何传入的String对象。另外还有Evaluate方法,该方法同样接受一个String类型的参数,随后会处理并返回传入表达式的运算结果。从这点上看,和动态语言运行时或是古老的VBScript中提供的API很相似。
\将JsonObjects作为一个模型
\Karsten Januszewski的研究则采用了截然不同的机制。他先利用WCF的JSON类,从服务层得到JSON格式的字符串。然后再将字符串转化为JSON对象,这样就形成了一个基本的模型。这样做的缺点就是没有任何业务逻辑的表示:模型完全由纯粹的数据构成。
\同其他MVC用户一样,Karsten在研究中也遇到了一些常见的问题和精妙的解决方案。简单来讲,LINQ生成的匿名类型与MVC中使用的 RuntimeBinder类型不兼容。也可归纳为“匿名类型与动态类型的不兼容”。幸运的是现在已经找到了解决方案。方法很简单,只需用一个 JsonObject实例来替换掉LINQ表达式中的匿名类型即可。
\查看英文原文:Models in MVC