小网站的框架搭建过程

先说一说这个项目的背景,是给我校留学生做的一套教务管理系统,我是JAVA出身,C#项目做过之前的管理学院网站,当时的架构是ASP MVC2 + JQGrid + ZTree + 基于AJAX的WCF,基本思路都是从JAVA项目中搬过来的,没有用到C#特有的方法,比如ADO.NET 和 LINQ语句

 

Dao层主要就是为了与数据库通信,我们当时就直接用C#自带的数据库连接,效率极低,基本每条SQL都是自己写,Entity类似于java中的实体Bean,然后就是负责跳转和数据接收的控制层和为了展现界面的VIEW层。基本上算上三层架构了,但当时为了加快速度开发,代码及其混乱,甚至出现了在Servers层和JS里面写SQL。

 

我们之前JAVA项目中用的是一个AJAX框架:DWR,我们在网上找到C#类似的框架基于AJAX的WCF,在直接用JS调后台代码。

 

我们也改了JQGrid和ZTree的源代码,直接写WCF调用的地址和方法就可以使用组件了:D

 

而现在这个项目的架构我们进行了全方位的改良,架构是Spring.NET + NHibernate + ASP MVC2  + EasyUI ,具体的包结构为下图

 

因为不知道到时候用哪一个数据库,所以用了一个持久化框架NHibernate,加上Spring.NET对每一个声明对象的管理,开发起来效率比之前高多了。其中,DAO层和Servers层的实例是单例,控制层是原型模式(也就是实现copy)。

 

当然,为了高效,代码的重用和少错误,我们写了一个C#的代码生成器,用的是C#提供的T4模板技术

 

对于这个项目的权限验证,之前找了好久的C#过滤器没找到,所以就直接写了一个ascx来判断Session是否为空,后来每一个页面都引感觉不爽,感觉对前台VIEW污染好严重,所以又找了一下,发现在C#又一个对每一个ACTION的拦截器,类似于AOP,在Global.asax写一个内部类,实现ActionFilterAttribute接口,代码如下

[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class ValidateModelAttribute : ActionFilterAttribute  
  2.     {  
  3.         public override void OnActionExecuting(ActionExecutingContext filterContext)  
  4.         {  
  5.             String OperatorID = Convert.ToString(filterContext.HttpContext.Session["OperatorID"]);  
  6.             if (string.IsNullOrWhiteSpace(OperatorID))  
  7.             {  
  8.                 filterContext.Result = new RedirectResult("/Operator/Login");    
  9.             }  
  10.         }  
  11.     }  


 

在每一个ACTION前加上用于表示的[ValidateModel],如

[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. [ValidateModel]  
  2.         public ActionResult Index()  
  3.         {  
  4.                 string operatorID = Convert.ToString(Session["OperatorID"]);  
  5.                 if (StringUtil.IsNotEmpty(operatorID)).......  
转自:http://blog.csdn.net/hacke2/article/details/21646467
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值