• 前端与后端分离的架构实例3


    前端与后端分离的架构实例(三)

    2014-02-19 14:30 by 麦舒, 674 阅读, 11 评论, 收藏编辑

    自从前几天写了篇前端与后端分离的架构文章,总觉得有点意犹未尽的感觉,于是乎准备把写成一个系统。准备逐渐深入地给大家去展现这个系统的架构。不过,我会写得比较随意,基本上想到什么就写什么,不会有很严谨的逻辑关系。

    这个系统,是我现在正在开发的一个系统的架构,可不是什么理论或者拍脑袋想出来的。事实上,这个架构我思考了差不多一年了,还在上一家公司工作的时候,这个架构就在我的头脑中酝酿了,只可惜一直没有机会让我去做,很感谢现在的老板,给我这么一个机会,让我把它变为现实。

    我们再来重温一下我所负责开发的系统的架构:

    前段架构

    在这个图里面,大家可以看得到,前端部份,是通个一个数据访问层去访问服务端的数据的,可以简单点说,是把远程的数据访问封装在一个类里。为什么要这么做呢?

    我的设计理念里,后端为前端去提供服务,而前端则去消费这些服务。但是,为前端提供服务的,不仅包括我们现在所开发的后端,而且还会有第三方提供的服务。举一个例子来说:

    我们开发的系统,要提供给某个商家去使用,这个商家,已经有现成的会员系统,它包括充值功能,并且这个系统也运行良好。这个商家并不愿意抛弃现有的系统,而使用我们提供的会员系统,他只要我们基于产品销售这个模块,当会员在网上下单的时候,我们的系统是要从商家提供的会员系统里扣除他的消费金额的。对于这种情况,我期待的是,我们需要做的只是替换掉数据访问层中的某个模块即可。所以你会看到,我们的系统是把数据访问部份独立了出来,但是实际上,这个数据访问层,还会包括若干个模块。

    架构的复杂,是为了应对复杂的变化,如果你开发项目,只是在公司内部使用的,当然可以不去考虑这些。但是如果说要作为一个通用的产品,那就不得不去面对各种复杂的变化,尤其是系统集成这一块。

    数据跟踪

    什么叫数据跟踪呢?就是记录下每一次数据的变化,比如说,用户每一次对数据的删除、修改、插入操作,都要记录下来。我个人是很讨厌数据的假删除的,特别是到处都充斥着“where delete = true”,"update xxx set delete = true" 之类的代码。这种代码与业务是没有任何关系,但是却放在业务层里,我认为是非常的不合理的。处理办法两种:

    1、放在数据访问层,通过 ORM 去处理,只需要通过配置,就可以把删除操作变为更新操作。当然,业务层的代码,还是按删除来处理。

    2、使用的是真删除,但是对删除的数据进行记录。由于把删除的数据记录了来,当然也可以把它还原了。

    那如何去实现它呢?如果你使用的是 Linq to SQL,大家可以看我之前写的《Linq to SQL (ALinq) 也来AOP —— ALinq Inject 博客园首发》 ,它会告诉如何把删除、更新、插入操作拦截下。

    使用工厂模式创建实体

    你的代码里是否到处充斥着类似下面的这种代码呢?

    1
    2
    3
    var obj = new Account();
    obj.ID = Guid.NewGuid();
    obj.CreateDateTime = DateTime.Now;

    当然,可以通过代码生成来解决。但是如果使用的是 Linq to SQL,就没有那么好办了。我使用的是另外一种办法,使用工厂模式来创建实体。例如:

    复制代码
    public T CreateEntity<T>() where T : class, new()
    {
        var entity = new T() as dynamic;
        entity.ID = Guid.NewGuid();
        entity.CreateDateTime = DateTime.Now;
    
        var applicationIdProperty = typeof(T).GetProperty("ApplicationId");
        if (applicationIdProperty != null)
            entity.ApplicationId = this.ApplicationId;
    
    
        return entity;
    }
    复制代码

    好了,这次就先聊到这里,我很希望有更多的人加入我们的团队,一起去完成这个架构。

    招聘开发人员:懂 JQuery、JQuery UI、JQuery Validate、Knockout JS 等JS 框架,略懂 Linq to SQL,能阅读文档,根据文档示例写代码。(欢迎勤奋好学的毕业生)

    1、侧重前端开发,如果有能力,也可以从事后端开发。

    2、工作努力认真,对自己负责,也对客户负责。

    加入我们团队,在我的指导下,只要你肯努力,绝对能够得很快的成长,相信我。^_^

    有兴趣的朋友可以加我 QQ 私聊。

    地点:上海市闸北区

    网站:http://www.vknew.com/index.html

  • 相关阅读:
    mysql5.7.22安装步骤
    idea 配置http代理
    大话设计模式之类与类之间的关系读后感
    大话设计模式之工厂方法模式读后感
    rabbitmq+java入门(五)Topic
    rabbitmq+java入门(四)routing
    rabbitmq+java入门(二) 工作队列
    rabbitmq+java入门(三)exchange的使用
    rabbitmq+java入门(一)hello world
    idea+jrebel+springboot热部署
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3556456.html
Copyright © 2020-2023  润新知