欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

程序员文章站 2022-08-21 12:44:35
摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于Dal和Bll之间解耦的相关知识,这篇来把后i面的部分说一说。 上篇讲到DbSession,现在接着往下讲。 首先,还是把一些类似的操作完善一下,与Dal层相同,我们同样可以把Bll层中某些使用广泛的类似的操作封装到基类中,另外,同样要给Bll ......

摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于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>

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

容器配置节点

1   <!--spring.net 的容器的配置节点-->
2   <spring>
3     <context>
4       <resource uri="file://~/config/controllers.xml"/>
5     </context>
6   </spring>

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

2.添加相关引用

首先,在程序目录下的package文件夹新建 spring.net文件夹,然后导入如下文件:

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

导入如下文件:

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

 

 在ui项目下添加引用:

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

3.更改global.aspx.cs文件

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

将 mvcapplication 由继承 system.web.httpapplication 改为 sring.web.mvc.springmvcapplication .

 4.在ui项目下新建config文件夹,在文件夹中新建如下两个配置文件:controller.xml 和 services.xml

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

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

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

 

5. 然后我们回到homecontroller中来:在其中添加属性userservice

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

 

 然后执行程序,发现会报如下错误:

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

此时,我们添加如下引用:

microsoft.aspnet.webapi

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

然后,再次执行程序:

运行结果无误:

asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

 

 这就是spring.net的使用步骤了。

通过使用spring.net,也达到了使ui层和bll层解耦的目的,而且操作较之工厂的操作简单的多。

 好了,一个简单框架的第二部分,ui层和bll层的解耦也完成了,关于框架搭建的这篇博客就写到这里啦。

 

我的email:3074596466@qq.com

如有谬误,欢迎指正!