摘要: 最早就接触过asp.net mvc 框架了,从1.0开始到现在的4.0,感觉是时候拥抱mvc了。本篇主要内容Model—View—Controller介绍ViewModel模式ASP.NET MVC框架ASP.NET MVC3的新特性Model—View—Controller介绍MVC是一种用户界面模式,是一种关注表现层的模式。MVC模式代表的是处理用户的一种解决方案,并不处理应用程序关注的其他问题,如数据访问,服务交互。MVC将应用程序的用户界面分为三个组成部分:模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则。视图:定义应用程序界面的显示方式。控制器:一组类,用于处理来自用户、 阅读全文
posted @ 2013-01-29 21:43 Ian.w 阅读(1429) 评论(0) 推荐(0)
摘要: 注:NUnit中文文档可以参看我的另一个站点:http://www.36sign.com/nunit 前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是阅读一下.本文分为以下部分:1. TDD的简介 首先什么是TDD呢?Kent Beck在他的<<测试驱动开发 >>(Addison-Wesley Professional,200 阅读全文
posted @ 2013-01-13 11:24 Ian.w 阅读(253) 评论(0) 推荐(0)
摘要: Castle ActiveRecord是基于NHibernate,NHibernate提供了对象状态管理的功能,支持三种对象状态:瞬时态(Transient)、持久态(Persistent)、托管态(Detached)。瞬时态(Transient)对象刚刚创建,还未与相应的session(会话)关联,这时的对象在数据库中不存在记录,对于自动生成主键的对象,这时候对象的标志为0(主键为int 自增),对象的维护是通过GC,不使用对象,GC会销毁对象。此时,更多的是new一个对象,如 var post=new Post(){title=””,text=””};持久态(Persistent)对象刚刚 阅读全文
posted @ 2013-01-13 11:12 Ian.w 阅读(216) 评论(0) 推荐(0)
摘要: ActiveRecordMediator类也为实体类提供了持久化的方法(CRUD),先来看看ActiveRecordMediator中的方法ActiveRecordMediator类实现了很多常用的方法。包括 Create、Delete、FindOne、FindAll、FindByPrimaryKey、Save、SlicedFindAll、Update等。基本操作 1: // Create 2: Customer c = new Customer(); 3: c.Name = "Mr. Johnson"; 4: c.Address = String.Empty; 5... 阅读全文
posted @ 2013-01-05 22:44 Ian.w 阅读(517) 评论(0) 推荐(0)
摘要: 我们在开发中会遇到这样的情况,创建的ActiveRecord类在不同的数据库中,本文来看看Castle ActiveRecord如何处理这种情况。比如我们有 DB1数据库,里面包含一个Articles表,DB2数据库,里面包含一个AppInfo表首先,我们创建抽象基类 1: public abstract class DB1<T> : ActiveRecordBase<T> 2: { 3: } 1: public abstract class DB2<T> : ActiveRecordBase<T> 2: { 3: }抽象基类里面什么都没有,只是 阅读全文
posted @ 2013-01-04 22:47 Ian.w 阅读(329) 评论(0) 推荐(0)
摘要: 场景比如我们有个Employee实体,属性有 EmployeeID(雇员id)、NationalIDNumber(雇员标志号,如身份证)、ManagerID(雇员上司id)、Title(职位)、MaritalStatus(婚姻状态)、Gender(性别)、HireDate(雇佣日期)、SalariedFlag(工作性质,计时或月薪)。我们写数据库层时经常会遇到这样的需求:查询标志号为"001”的雇员public class EmployeeRepository : IRepository<Employee> { public Employee Find(object id 阅读全文
posted @ 2012-12-29 13:29 Ian.w 阅读(1893) 评论(0) 推荐(0)
摘要: 关于前端优化,相信大家都知道yahoo出品的yslow的Firefox插件,yslow可以对网站的页面进行分析,指示需要优化的部分。关于yslow优化详细见Best Practices for Speeding Up Your Web Site,之后才出现 css sprite、压缩css/js的工具,目的都是为了减少http请求。在ASP.NET Web Form4.5中,Bundle类提供了此功能。Global.asax.cs代码 1: void Application_Start(object sender, EventArgs e) 2: { 3: // 在应... 阅读全文
posted @ 2012-12-24 22:26 Ian.w 阅读(983) 评论(0) 推荐(0)
摘要: 在做数据层处理时,我们会为输入的数据做有效性验证,ActiveRecord 为我们提供了如下的验证:ValidateCreditCardValidateDateValidateDateTimeValidateDecimalValidateDoubleValidateEmailValidateLengthValidateNonEmptyValidateReg使用验证 1: [ActiveRecord("Comments")] 2: public class Comment : ActiveRecordValidationBase<Comment> 3: { 4: 阅读全文
posted @ 2012-12-11 21:34 Ian.w 阅读(302) 评论(0) 推荐(0)
摘要: 前言ASP.NET webform 使用后置代码页面隔离业务逻辑。但使用ASP.NET webform 做应用开发会存在以下不足:后置代码页中混合了表现层、业务逻辑层、数据访问层的代码。出现这种情况的原因是后置代码负责事件触发,流程控制,业务规则和表现逻辑,业务逻辑和数据访问的协调者等多种角色。后置代码页测试不方便。Model-View-Presenter模式Model-View-Presenter(模型-视图-呈现器,MVP)模式的重点是让呈现器控制整个表示层的逻辑流。从层次上来讲,MVP属于表现层的设计模式。MVP模式由如下三个不同的部分组成:Model:view展示或修改的业务数据。Mo 阅读全文
posted @ 2012-12-07 01:20 Ian.w 阅读(789) 评论(0) 推荐(1)
摘要: Repository模式定义:协调领域和数据映射层,利用类似于集合的接口来访问领域对象。使用此模式最大的好处是将领域模型从客户代码和数据映射层之间解耦出来。接下来给出一个在Castle ActiveRecord中使用该模式的demo实体层代码 1: [ActiveRecord("Posts")] 2: public class Post:ActiveRecordBase<Post> 3: { 4: [PrimaryKey("PostId")] 5: public int Id { get; set; } 6: 7: [Prop... 阅读全文
posted @ 2012-12-05 21:44 Ian.w 阅读(799) 评论(2) 推荐(0)