项目架构搭建的一些心得体会

项目的架构搭建就是在是在软件开发的设计阶段完成的。

在开始架构设计之前,首先要知道什么是架构,架构就是软件产品的骨架,这个骨架把组件、环境等因素纳入其中,使之能有效得发挥它们的技能,为项目服务。

在架构设计之前,开发人员首先应该了解项目的基本需求,只有在做好需求分析之后,才能做出适合项目的架构。

架构的设计遵循一些原则:

1.    明确目标,切合要求。这是架构的根本,如果一个架构设计的很漂亮,用了很多层次化的东西,但是如果系统不需要这么复杂的设计,那么这样的架构也是不可取的。

2.    可扩展性。一个好的架构一定是一个方便扩展的架构,如果需求发生改变,那么很容易在原来的基础上进行功能扩展。

3.    易用性。就是架构使用起来方便,易于理解,易于使用,在项目开发过程中,不会因为架构的问题而影响项目的进展。

4.    稳健性。一个好的架构,能适应项目设计需求,不管操作方式如何变化,都可以用同样的方法进行处理。

5.    安全性。架构的安全并不是说把架构的代码放到一个地方加密,是在架构设计中考虑软件的安全性能。 

下面,以我项目中使用的三层架构来具体阐释一下。

所谓的三层,是指数据访问层、业务逻辑层和显示层。三层结构之间的关系如图所示:

项目架构搭建的一些心得体会

    其中,显示层是系统的UI层,提供交互式页面,业务逻辑层用负责数据的传递和处理,数据访问层用来和数据库打交道。实体集是用来对抽象的对象的属性的封装,或者自定义的封装,用来做交互过程中的数据载体。

    相邻层之间可以调用,不能跨层调用。

    这种三层架构的优点:扩展性强,当客户需求变动时,只需修改相应的方法即可;安全性保障,层与层之间不能调用,保障了安全性。易用性强,容易看懂,方便操作。

    现在,我们以一个项目管理系统来说明一下三层架构的项目创建过程。

    1. 创建解决方案,在解决方案里建两个逻辑文件夹,ModulesWebSiteModules用来盛放三层架构的业务逻辑层和数据访问层,以及公共使用的实体集。WebSites里面存放显示层的代码,这里用网站作为显示层。如图:

项目架构搭建的一些心得体会

    2. 创建项目,这里创建三个类库:Entities(实体集)Services(数据访问层)Manages(业务逻辑层),一个网站:ProjectManagementSystem(显示层)

项目架构搭建的一些心得体会

 

架构搭建完成后,就可以编写代码了,比如,有一个功能是项目管理,那么,我们在页面里面创建一个项目管理的页面,用于和用户交互,名为:ProjectManagePage.aspx,在Services创建一个类ProjectService.cs,Manages创建ProjectManage.cs,在Entities创建Project.cs(用于封装Project的属性)。如图:

项目架构搭建的一些心得体会

 

现在,假设用户需要获得项目列表List<Project>,那么,在ProjectManagePage.cs中,需要调用ProjectManage.cs的方法GetProjectList(),此方法返回一个Project的列表。ProjectManage.cs的代码可以如下:


  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using Entities; 
  6. using Services; 
  7.  
  8. namespace Manages 
  9.     public class ProjectManage 
  10.     { 
  11.         private ProjectService _projectService = new ProjectService(); 
  12.  
  13.         public List<Project> GetProejctList() 
  14.         { 
  15.             //从ProjectService获得数据 
  16.             List<Project> projectList = _projectService.GetProjectList(); 
  17.  
  18.             //......对ProjectList的数据处理 
  19.  
  20.             return projectList; 
  21.         } 
  22.     } 
  23.  

    从这里可以看出,ProjectManage中调用ProjectService中的方法,实际上,是从ProjectService中拿出数据,然后对数据处理,最后返回给显示层。

看一下ProjectService中的代码:


  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using Entities; 
  6.  
  7. namespace Services 
  8.     public class ProjectService 
  9.     { 
  10.         /// <summary> 
  11.         /// 获取Project列表,和数据库交互 
  12.         /// </summary> 
  13.         /// <returns>Project列表</returns> 
  14.         public List<Project> GetProjectList() 
  15.         { 
  16.             List<Project> projectList=new List<Project>(); 
  17.  
  18.             //projectList=.... 
  19.             //....... 
  20.             // 
  21.             return projectList; 
  22.         } 
  23.     } 

    ProjectService仅仅是和数据库交互,并不对数据进行处理。

他们都有一个公共的载体Project,是对Projet属性的封装。这里就不在赘述。 

     个人觉得,一个项目中,并不一定非要用一些高明的架构才是一个好项目,而是要用适合自己系统的架构,应着重于上面说的几个原则。

 

 本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/915287,如需转载请自行联系原作者


上一篇:Ronald Van Loon领衔研发的Hadoop/Spark大数据CCA175认证培训


下一篇:Spring Cloud OAuth 微服务内部Token传递的源码实现解析