asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用
摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于dal和bll之间解耦的相关知识,这篇来把后i面的部分说一说。
上篇讲到dbsession,现在接着往下讲。
首先,还是把一些类似的操作完善一下,与dal层相同,我们同样可以把bll层中某些使用广泛的类似的操作封装到基类中,另外,同样要给bll层添加接口层。
下面直接给出相应的代码:
bll层基类:
baseservice.cs
1 public abstract class baseservice<t> where t : class,new() 2 { 3 public ibasedal<t> currentdal { get; set; } 4 5 public idbsession dbsession 6 { 7 get 8 { 9 return dbsessionfactory.getcurrentdbsession(); 10 } 11 } 12 13 public baseservice() 14 { 15 setcurrentdal(); 16 } 17 18 public abstract void setcurrentdal();//抽象方法:要求子类必须实现。 19 20 public iqueryable<t> getentitybylambda(expression<func<t,bool>> wherelambda) 21 { 22 return currentdal.getentitybylambda(wherelambda); 23 } 24 25 26 public t addentity(t entity) 27 { 28 currentdal.addentity(entity); 29 dbsession.savechanges(); 30 return entity; 31 } 32 33 //删除 34 35 public bool deleteentity(t entity) 36 { 37 currentdal.deleteentity(entity); 38 return dbsession.savechanges() > 0; 39 40 } 41 // 改 42 public bool updateentity(t entity) 43 { 44 currentdal.updateentity(entity); 45 return dbsession.savechanges() > 0; 46 47 } 48 }
ibaseservice.cs
1 public interface ibaseservice<t> where t : class,new() 2 { 3 iqueryable<t> getentitybylambda(expression<func<t, bool>> wherelambda); 4 t addentity(t entity); 5 bool deleteentity(t entity); 6 bool updateentity(t entity); 7 }
iuserservice.cs
1 public interface iuserservice:ibaseservice<users> 2 { 3 4 }
userservice.cs
1 public class userservice:baseservice<users>,iuserservice 2 { 3 4 //iuserdal userdal = abstractfactory.getuserdal(); 5 //idbsession dbsession = dbsessionfactory.getcurrentdbsession(); 6 //public users adduser(users user) 7 //{ 8 // dbsession.userdal.addentity(user); 9 // dbsession.savechanges(); 10 // return user; 11 //} 12 13 //public iqueryable<users> getuserbylambda(expression<func<users,bool>> wherelambada) 14 //{ 15 // return dbsession.userdal.getentitybylambda(wherelambada); 16 //} 17 18 //public bool deleteuser(users user) 19 //{ 20 // dbsession.userdal.deleteentity(user); 21 // return dbsession.savechanges() > 0; 22 //} 23 24 //public bool updateuser(users user) 25 //{ 26 // dbsession.userdal.updateentity(user); 27 // return dbsession.savechanges() > 0; 28 //} 29 30 //给父类的属性赋值 31 public override void setcurrentdal() 32 { 33 currentdal = this.dbsession.userdal; 34 } 35 }
以上就是对bll层的一些封装和接口层的构建,现在在现有的代码基础上,我们来看一下,控制器对bll层的常规调用:
下面给一段简短代码:
homecontroller => adduser方法
1 public actionresult adduser(formcollection form) 2 { 3 users user = new users();
//重点看这句,对bll层的调用 4 iuserservice userservice = new userservice(); 5 user.username = form["name"]; 6 user.password = form["pwd"]; 7 user.phonenumber = form["phone"]; 8 user.email = form["email"]; 9 userservice.addentity(user); 10 if (user == null) 11 { 12 return view("contact"); 13 } 14 else 15 { 16 return view("about"); 17 } 18 }
这是一段向数据库中添加user信息的代码,前端代码省略了。
从这段代码里我们可以看到,这里bll层和ui等的耦合度仍然非常的高,
iuserservice userservice = new userservice();
这一句跟前面讲的bll层调dal层一样,耦合度很高,那么如何降低这个耦合度呢,再次使用工厂的方法吗,不不不,那好像太麻烦了。
这里就要用到一个新的知识点了———— spring.net (据说这个很牛逼,但我也不咋清楚,只能边学边写了)。
接下来说一下spring.net的使用方法和步骤:
1.在web.config中添加spring.net块配置和spring.net容器配置节点
块配置节点:
1 <!--spring.net块配置--> 2 <sectiongroup name="spring"> 3 <section name="context" type="spring.context.support.mvccontexthandler, spring.web.mvc4"/> 4 </sectiongroup>
容器配置节点
1 <!--spring.net 的容器的配置节点--> 2 <spring> 3 <context> 4 <resource uri="file://~/config/controllers.xml"/> 5 </context> 6 </spring>
2.添加相关引用
首先,在程序目录下的package文件夹新建 spring.net文件夹,然后导入如下文件:
导入如下文件:
在ui项目下添加引用:
3.更改global.aspx.cs文件
将 mvcapplication 由继承 system.web.httpapplication 改为 sring.web.mvc.springmvcapplication .
4.在ui项目下新建config文件夹,在文件夹中新建如下两个配置文件:controller.xml 和 services.xml
controller.xml文件代码如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <objects xmlns="http://www.springframework.net"> 3 4 <!--<object></object>引用了几个service就写几个service,此处只引用一个service,所以只写一个--> 5 <!--type ="类的全名(命名空间名+类名),程序集名称"--> 6 <object type="iotpf.ui.controllers.homecontroller,iotpf.ui" singleton="false" > 7 <property name="userservice" ref="userservice" /> 8 9 </object> 10 </objects>
services.xml文件代码如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <objects xmlns="http://www.springframework.net"> 3 4 <object name="userservice" type=" iotpf.bll.userservice,iotpf.bll" singleton="false" > 5 </object> 6 7 </objects>
注意:在web.config中记得将services.xml的引用添加进来,并且要注意顺序,先services.xml,后controller.xml
5. 然后我们回到homecontroller中来:在其中添加属性userservice
然后执行程序,发现会报如下错误:
此时,我们添加如下引用:
microsoft.aspnet.webapi
然后,再次执行程序:
运行结果无误:
这就是spring.net的使用步骤了。
通过使用spring.net,也达到了使ui层和bll层解耦的目的,而且操作较之工厂的操作简单的多。
好了,一个简单框架的第二部分,ui层和bll层的解耦也完成了,关于框架搭建的这篇博客就写到这里啦。
我的email:3074596466@qq.com
如有谬误,欢迎指正!
推荐阅读
-
WebSocket在ASP.NET MVC4中的简单实现
-
asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦
-
lua开发中实现MVC框架的简单应用
-
asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用
-
使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
-
ASP.NET MVC中SignalR的简单应用
-
WebSocket在ASP.NET MVC4中的简单实现
-
asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦
-
使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
-
lua开发中实现MVC框架的简单应用