Register  |  Login

(转载)对ASP.NET MVC开发人员的建议

Posted in [Asp.Net MVC], [转载区] By Baldwin

Chad Myers和Jeremy Miller对于开发人员究竟该如何使用ASP.NET MVC提出了有力地建议。他们在上个月的KaizenConf会议上提出了这些准则化的建议。下面内容摘自Jeremy的总结

他们建议的重点是,大大强调了对控制器所承载功能的限制。在他们的设计中,控制器表层绝对以数据为中心,所有的输入均为单个ViewModel。由于没有暴露出HttpContext的任何方面,开发人员可以轻松地对控制器进行单元测试。

控制器除了不应该暴露出HTTP特性之外,它们还应该包含尽可能少的业务逻辑。

控制器应该非常薄。控制器Action方法唯一的任务是将传入的模型转化成合适的服务调用并创建输出用的模型。所有业务逻辑的职责应该由非表现层的类来承担。换句话说,控制器中并不包含业务逻辑。

没错,就是这样。在他们的观念里,MVC并不代表一个应用程序中的所有内容,开发人员应该使用额外的东西来处理真正的数据操作和存储。

还有很多东西值得思考,不过我们现在直接去看那些有关视图层中HTML和JavaScript的问题。

服务器端的标记绝对不应该和客户端JavaScript混在一起。我们建议遵循这个准则,因为这种很常见得错误做法往往造成难以阅读的代码,并且无法使用TDD的方式开发客户端JavaScript代码。我们不允许这种代码:callFunction('<%=Model.Variable%>')。如果服务器端数据需要传递到客户端的JavaScript 中,我们会写成如下形式:“var something = <% =Model.Variable%>”。

视图应该非常简单。如果你在使用if/then语句或者循环,那么就说明你可能做错了。条件逻辑应该属于控制器或JavaScript类库等能够被单元测试的代码。把视图中的逻辑移出难以测试的代码,并放入易于测试的代码中可以有效地避免错误发生——没错,我认为JavaScript代码易于测试。Tag Soup也可以避免,我们倾向于使用自己的实现来替代循环,例如:<%= this.RenderPartialForEachOf(m => m.Solution.Resolutions).Using()%>。在这段代码中,EditResolution为一个ASCX控件,m.Solution.Resolutions是一个 IList类型的属性。这条语句会遍历这个列表,为每个Resolution对象生成一个部分视图。”

而对DNN来说, Asp.Net MVC将意味着什么呢? 有兴趣者不妨看看这一文章:ASP.NET MVC – Web Forms 2.0? , 其中有一段话如是说:

DotNetNuke is firmly planted in the Web Forms camp.  While there may be new approaches, that we can consider, and lessons that we can learn, it is not likely that we will convert the DNN platform to be built using the new MVC Framework.  At least not anytime soon.

最终的结论就是DNN将暂时坚守传统Asp.Net Web Form的阵地, 不会迁移到Asp.Net MVC框架上, 但是有所借鉴和吸收MVC的部分思想和模式.  Enjoy DNN :)

Popular tags: jQuery, MVC
Previous Entry: 理性对待新一代DNN版本("Cambrian")
Next Entry: 如何在DNN模块级别以编程方式添加样式文件

Comments

Was it good for you, too? Join the discussion »

leave a reply

About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
网站主页
dnnsun
最新评论
  1. Re: "暴力"解决DNN无法登陆的问题

    你好 有个问题 我改了登录界面后能登录 但是一点注册 就跳到了HOME页 这个怎么解决

    --zl24622

  2. Re: 你的dnn站点慢了么?

    需要你把旁边的checkbox勾选上再执行 :)

    --Baldwin

  3. Re: 你的dnn站点慢了么?

    为什么,我将你的代码copy到host>sql中去执行之后,报错呢,语句是不是有问题哦?

    --claire

  4. Re: 剖析DNN架构-开篇之作

    很好

    --vling83

  5. Re: SunBlog更新:增加3D Tag Clouds插件

    在以上评论已说明, SunBlog已经是一个成熟的商业模块,如果需要授权或下载请邮件联系我们, 感谢你的关注, 我们即将推出一个demo的站点(这周之内).

    --Baldwin

  6. Re: SunBlog更新:增加3D Tag Clouds插件

    这个没地方下载的吗,要怎么才能下载到,谢谢

    --Sun key

  7. Re: SunBlog更新:增加3D Tag Clouds插件

    已经电邮您了,请注意查收

    --sunny0315

  8. Re: 如何添加DNN模块的自定义权限

    你只要设置好该节点即可, 比如:DnnSun.SunBlogNuke.Business.InterfaceController, DnnSun.Modules.SunBlogNuke 其他的请再详细看看本文,我觉得说得蛮清楚的 :)

    --Baldwin

Blog搜索
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
相册库
更多照片请查看相册库
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...
版权声明
本站任何言论仅代表个人观点,与作者所在的公司没有任何关系,所有贴子皆以“现状”提供且没有任何担保,同时也没有授予任何权利。