Fork me on GitHub

随笔分类 -  asp.net、mvc

摘要:有一段时间没有更新博客了,最近半年都在着写书《.NET框架设计—大型企业级框架设计艺术》,很高兴这本书将于今年的10月份由图灵出版社出版,有关本书的具体介绍等书要出版的时候我在另写一篇文行做介绍。可以先透露一下,本书是博主多年来对应用框架学习的总结,里面包含了十几个重量级框架模式,这些模式都是我们目前所经常使用到的,对于学习框架和框架开发来说是很好的参考资料,大家敬请期待。 好了,进入文章主题。 最近几个月本人一直从事着SOA服务开发工作,简单点讲就是提供服务接口的;从提供前端接口WEBAPI,到提供后端接口WCF\SOAFramework,期间学到了不少有关多线程使用上的经验,这些经验有的是本人自己的错误使用后的经验,有些是公司的前辈的指点,总之这些东西你不遇到过你是不会意识到该如何使用的,所以本人觉得很有必要总结分享给广大和我一样工作在一线的博友们。 阅读全文
posted @ 2014-07-26 12:56 王清培 阅读(7481) 评论(6) 推荐(7) 编辑
摘要:由于博主今后一段时间可能会很忙(准备出书:《.NET框架设计—模式、配置、工具》,外加换了新工作),所以博客会很少更新; 在最近一年左右时间里,博主各种.NET技术类型的文章都写过,根据博友们的反馈觉得还不错,所以应该有整理一下目录的必要,防止随着时间的推移很多现在来说还比较新的技术文章到时候就不知名的石沉大海了;整理之后更方便大家查询,阅读,谢谢; 阅读全文
posted @ 2014-03-02 12:56 王清培 阅读(13485) 评论(43) 推荐(85) 编辑
摘要:使用ASP.NETMVC构建普通的中小型站点可以使用简单的Model元数据设置方式来控制ViewModel如何显示在View中,但是复杂的应用场景不会这么简单的就能完成;大型站点的ViewModel的体积非常大,真的大的超乎我们的想象(当然这里面有历史原因),这么大的一个显示实体我们需要在不同的页面中呈现它会非常的棘手;然而小型站点不太会遇见ViewModel在几十个页面中显示的情况出现,一般页面也就是几十个差不多了; 在大型电子商务应用中,UI层的一个ViewModel不仅用来呈现数据还充当着与远程SOA接口通讯的DTO作用,如果为了结构清晰完全可以将ViewModel与DTO分开,但是有时候我们确实需要考虑额外的性能开销(有时候我们只能接受历史遗留的问题,技术债务累积多久就要还多久); 阅读全文
posted @ 2014-01-20 14:00 王清培 阅读(3366) 评论(4) 推荐(11) 编辑
摘要:在View中用来根据当前View中引入的强类型ViewModel生成HTMLDom结构的核心功能都被封装在以HtmlHelper为首的对象模型中,包括HtmlHelper泛型类型,它直接派生自HtmlHelper基类,这两个类型的功能都是围绕着如何生成前端所需要的HTML结构和一些常用的UI元素; 但是这两个类型所能做的事情很有限,它们只是庞大生成功能的核心模型;我们使用的都是围绕着这两个类型的扩展方法,如: @Html.EditorForModel() 在当前View中引用的Html属性其实是一个HtmlHelper类型的属性,定义代码: public HtmlHelper Html { get; set; } 该类型被定义在public abstract class WebViewPage : WebViewPage类 阅读全文
posted @ 2014-01-13 11:58 王清培 阅读(3256) 评论(8) 推荐(10) 编辑
摘要:ModelMetadata是ASP.NETMVC中用来表示Model的元数据对象,它包含了一个Model的所有的相关元数据信息,当然这取决Model的使用方向,不同的使用方向会有不同类型的元数据,我们这里的ModelMetadata是针对View显示相关的元数据;ModelMetadata中绝大部分元数据是用来作为最终在View生成环节当中需要使用到的,比如:如何确定一个领域相关的属性(Address)该如何展现,这里的Address可能不是一个简单的String类型表示,而是由一组复杂的类型表示,这样的情况下我们就需要通过自定义元数据来控制最终使用的呈现模板(PartialView); 在MVC的定义中,Model准确意思是ViewModel(显示Model,只是用来作为界面呈现使用的数据实体),它是直接提供给View作为呈现使用的数据实体,通常情况下还将作为DTO类型的数据实体,负责数 阅读全文
posted @ 2013-12-16 15:22 王清培 阅读(3503) 评论(5) 推荐(5) 编辑
摘要:这篇文章让我们一起来学习一下有关Asp.netMvc中的Mode元数据的相关设计和围绕元数据的一些其他对象模型,他们是如何通过彼此协调来支撑起一个灵活的界面编程接口; 其实提到元数据(Metadata)大家在研究某个应用框架的时候都曾经或多或少的见到过,可能并没有引起你的注意;其实在很多应用框架中我们都能看见Matedata的影子,它是一个很不错的框架设计模式,俗称:“元数据驱动设计”,它跟目前很多设计思想很接近,如:元编程、契约式设计,这些模式目的都是为了能很好的控制耦合,产生极大的扩展灵活性;元编程让我们能基于最终的用户选择动态的产生运行软件的代码,而契约式设计能让我们将控制权设立在很远的地方,从而很大粒度的控制扩展性,根据契约设立规则,控制端再在运行时动态的生成出最终需要的规则; 阅读全文
posted @ 2013-12-02 13:38 王清培 阅读(3425) 评论(10) 推荐(7) 编辑
摘要:上一篇文章“.NET/ASP.NET MVC Controller 控制器(一:深入解析控制器运行原理)”详细的讲解了MvcHandler对象内部的基本流程逻辑,这基本的流程逻辑为我们后面的学习起到铺垫作用,当我们能正确的搞懂它的内部执行流程后,我们就可以顺藤摸瓜的去挖掘每个逻辑环节中的详细逻辑; 通过前面两篇文章的介绍,我们基本上能搞清楚一个Url请求是如何借助于UrlRoutingModule模块顺利穿过ASP.NET基础框架到达应用框架的过程,当UrlRoutingModule处理过后将RouteData对象封装在RequestContext请求上下文中传入到MvcHandler对象,然后MvcHandler对象通过IControllerFactory接口根据从RouteData中获取到controllername控制器名称字符串创建具体的IController对象实例; 阅读全文
posted @ 2013-11-14 20:31 王清培 阅读(7898) 评论(4) 推荐(9) 编辑
摘要:经过前一篇文章.NET/ASP.NET Routing路由(深入解析路由系统架构原理) 的讲解,我们对ASP.NETRouting路由系统的整个运行机制有了一个基本的了解;当我们能清楚的知道Url是如何被解析成RouteData对象时,下面就是这些路由数据是如何被后面的应用框架所使用的,而通往应用框架的入口是MvcRouteHandler对象; 这篇文章将继续讲解通过路由后的ASP.NETMVC Controller控制器是如何被加载、激活并且执行的;跟控制器相关的一套对象模型是被MvcHandler对象作为源头调用起来的,也就是说,当我们穿过UrlRoutingModule对象后 阅读全文
posted @ 2013-10-27 14:01 王清培 阅读(25336) 评论(11) 推荐(23) 编辑
摘要:这篇文章让我们愉快的学习一下ASP.NET中核心的对象模型Routing模块,为什么说愉快呢,因为Routing正是建立在大家都比较熟悉的ASP.NET管道模型基础之上的,所以相比其他一些陌生的概念会轻松很多,不过不要紧一回生二回熟; ASP.NET Routing 系统是一切通过ASP.NET进行Uri访问应用程序的基础(并非物理文件的直接映射);随着Routing的出现,我们的WEB设计已经和以前大不一样;越来越轻量级、简单化,都通过简便的Uri资源的方式进行处理,将精力放在业务的设计上;现在主流的Rest ful api 也都是建立在这样的一种机制下的,然而我们的ASP.NETMVC也是一种通过独立的Uri进行程序访问处理的框架 阅读全文
posted @ 2013-10-20 15:27 王清培 阅读(26377) 评论(25) 推荐(40) 编辑
摘要:ASP.NET Routing 路由功能非常强大,设计的也很巧妙;如果说ASP.NETMVC是建立在ASP.NET之上还不如准确的说ASP.NETMVC是建立在Routing基础之上的,才使得Controller顺利被找到并且执行Action; 那么今天这篇文章是一个简短的介绍如何在ASP.NETMVC下进行很好的模块化开发,都知道ASP.NETMVC是分层架构中的UI层框架;而UI层的开发有着天生的难以控制性,尤其是WEBUI和WINFORMUI有着很大的区别;WEBUI的组成元素多,又是在远程的浏览器中处理的,所以还是很考验架构设计的; 阅读全文
posted @ 2013-10-14 12:26 王清培 阅读(13777) 评论(23) 推荐(12) 编辑
摘要:这篇文章将简单的分析一下有关静态文件捆绑的ASP.NET组件System.Web.Optimization的运行原理及基本的缓存问题; 在我们的项目里面充斥着很多静态文件,为了追求模块化、插件化很多静态文件都被设计成模块的方式或者被分解,在需要的时候在通过组合的方式在UI层上使用;这就带来一个问题,文件多了会影响浏览器加载页面的速度,而且由于浏览器的并发限制,对于并行.... 阅读全文
posted @ 2013-09-09 14:32 王清培 阅读(6247) 评论(25) 推荐(16) 编辑