反思MVC中的模型

J​on 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值