浅谈自己去设计的一套简单的系统架构

     这篇文章谈一谈如果我是个软件架构师(自己还远远不够一个架构师),自己如何去设计一套系统。当然自己才疏学浅,考略不周,但是写的都是自己思考过的和掌握的知识。

    我没做过多数据库和多种语言开发的系统,所以这里的数据库只限定于SqlServer和dotnet平台。

数据库访问部分:

    这里的核心是存储过程。我设计的这套系统的架构数据访问部分以存储过程为核心。分为四个部分:

    1、存储过程:数据库操作都是存储过程。

    2、实体层:实体类的属性和数据库表的字段一一对应,有多少个表就有多少实体类。

    3、数据访问层:数据访问层的代码是用来调用存储过程的。

    4、数据业务逻辑层:数据业务逻辑层用来调用数据访问层。

    这里只想谈谈数据的查询。这个简单的架构中,使用DataSet来取值,对于一条记录的查询(也就是根据主键来查询的操作),我将获取的DataSet中的DataTable的第一笔记录,并转换成一个实体,将这个实体将由数据访问层传递到数据业务逻辑层。对于连接查询或者多笔记录的查询,直接使用DataTable或者DataSet来传递(对于连接查询如果使用List我感觉十分不便,使用DataTable或则DataSet却非常方便)。数据查询都通过分页处理。

    说明:这些数据库访问的代码可以由CodeSimith,或者自己写的代码生成器去生成。

数据通信部分(服务):

    这个使用WCF技术,将前面述说的数据库访问层的代码放在WCF服务中。

    根据客户端的需求情况定义WCF的服务契约。在WCF服务契约中调用数据访问部分中的数据业务逻辑层。

    使用WCF的好处在于你可以不用考略客户端是使用什么技术开发的,方便的进行分布式开发。

    WCF服务与客户端数据交换使用字符串。如果有数据业务逻辑层返回的是一个实体,则将此实体序列化为字符串;如果是DataTable,也序列化为字符串。

客户端部分(UI):

    这里以ASP.NET MVC实现客户端为例。当然客户端可以多种多样,你也可以使用Windows Form、WPF、ASP.NET等。

    我们知道ASP.NET MVC,可以分成 Model、View、Controller。

    Model:使用Repository模式。会在Repository中定义一些方法去调用WCF。对于实体类,一部分可以直接沿用第一部分的数据访问中的实体类。我们还可以定义一些ViewModel。由于在WCF服务中获取的数据是字符串,这个需要一个步骤将它们转换为实体或者DataTable。对于是实体的字符串,直接反序列化就行了。对于DataTable,反序列化为DataTable之后,还将它转换成List。对于多表连接查询的情况,我们在MVC项目中会定义一个对应的ViewModel,将此类存储过程查询出的DataTable转换成ViewModel的List。

    Controller:使用依赖注入的方式。通过Controller的构造函数注入Repository。

    View:这部分重点是美工。

异常处理:

    可以参考我翻译的这篇文章异常处理准则

日志处理:

   

缓存:

    Memcached

总结:这个是我自己思考出的一个东西,并没有在实际中运用。欢迎大家批评指正。

 


posted @ 2010-08-10 22:24  麒麟  阅读(7358)  评论(91编辑  收藏  举报