这些天在做一个在线物联的网站,同时也在往上查看了一些很好的网站架构,所以就根据自己的情况,指定了一种方案:
为了提交程序的:面向接口编程,高内聚、低耦合及其对扩充开发、对修改封闭的原则,对这次方案做简单的总结:

我的整体思想三层技术:UI(表现层)、BLL(业务逻辑层)、DAL(数据库访问层);

但是在我们的DAL层有很多种技术,提供我们去访问数据库,例如(ado.net、EF、NHibernate...),所以这样我们就要让DAL层对外要有一个统一的接口,使得内部操作数据库技术的变化不会涉及到BLL和UI层的代码,同理BLL层也是一样,他的修改不会牵连到UI层的展示,所以我把他们都分别分为两部分一部分是接口、另一部分是具体的实现,并且实现去继承这些接口,对外界访问的就只是这些接口;并且每一层中都是针对多张表的增删改查,因此抽象数来一张基类的增删改查的类,这样子类直接继承就不用都有自己的实现了,

由于底层访问数据库我使用的是EF实体模型,所以为了控制EF上下文在线程内唯一,使用了一个简单工厂,来获取数据,而且为了能和EF那样,只要拿到上下文对象,数据的所有操作方法及其数据对象也都在上下问对象中了,这种设计理念,在DAL层抽象出来了一个针对BLL层的DBSession类,它里面封装了所有表的操作数据库对象,及其数据库的上下文对象,所以只要拿到这个对象后就能拿到,所有的数据表操作对象,及其他的增删改查方法,但是要确保BLL层拿到的这个对象的唯一性,我有创建了一个针对获取DBSession对象的工厂,由于EF对象对数据表的增删改查有延迟性,并且每做一个增删改查的方法都要像数据库提交一次,所以我在这个类中又抽象出了一个方法,只有BLL层调用这个方法,才会对做的操作进行提交数据库处理,仔细想一下,这个方法的确很有必要,因为,我们在对表进行增删改查的时候,可能一个方法中,不仅仅对一张表的曾或者删或者查,这样只要统一调用一次保存方法,让这些sql语句放在一个队列中统一进行提交,统一访问一次数据库,这样不仅提交了对数据库的吞吐量,而且也减少了访问次数,仔细像起来面向接口编程,着实是一项开天辟地的新格局,有了他直接承载了我们的多态,及其设计程序的原则也丰富多元化了

转载于:https://www.cnblogs.com/One-dream-man/archive/2012/09/10/2679488.html

前些天做的一个物联网架构三层扩展相关推荐

  1. 用51单片机做一个物联网温度计+远程开关

    一 故事背景 1,对物联网技术感兴趣的朋友想玩一些物联网应用练练手,这个正好合适. 2,刚毕业的萌新或者还没有毕业的青年男女,想学习物联网知识,这个适合你练手. 3,已经入坑单片机开发很久的工程师,想 ...

  2. 物联网名词和MQTT解释,阿里云的教程:用51单片机做一个物联网温度计+远程开关

    https://mvp.aliyun.com/zhidao/1915 本章主要介绍物联网平台中相关的产品名词.明白名词说的是啥.两眼不慌慌.看看官方文档吧 concent   报文连接服务器      ...

  3. 手把手教你做一个物联网视频监控项目(三)流媒体方案实现

    往期文章 手把手教你做一个物联网视频监控项目(一) 介绍 手把手教你做一个物联网视频监控项目(二)MJPG-streamer方案实现 文章目录 前言 一.软硬件准备 二.流媒体方案的实现之FFmpeg ...

  4. 入职链家前自己给自己做的一个竞品分析

    一个"码农"在要从四线城市到魔都去打拼前给自己做的竞品分析--最终选择了链家. 序号 房地产O2O平台 /频道 业务范围 业务1 业务2 业务3 业务4 业务5 业务6 业务7 业 ...

  5. 视频教程-用Java从零开始开发一个物联网项目-物联网技术

    用Java从零开始开发一个物联网项目 多年的产品设计和开发经验,带领团队完成多个知名产品.历任多家大型公司的Java架构师,对知名框架的源码均有深入研究.拥有IT一线开发.教学10多年的实战经验,能充 ...

  6. “物联网”架构有多重要?

    沙哑嗓音,连珠炮式的语速,一说话就会瞪大眼睛.一提起物联网,刘海涛就有着不同于一般理工男的激情.9月11日,在科技日报社主办.科技部人事司和科技部青年联合会协办,由科技部党组成员.科技日报社社长李平主 ...

  7. 冒险实施SAP HANA 农夫山泉缘何做第一个“吃螃蟹”者?

    查询同样的数据,用原来的数据库与BI组合需要215.0秒,用 HANA和升级后的BI组合一次查询只需2.1秒,二次查询则只需1.8秒;同样的报表展现原来需要358.1秒,而在HANA中只需要16.8秒 ...

  8. 一个简单的三层架构例子(.NET入门)

    最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...

  9. rola物联网框架_如何搭建一个物联网系统框架?

    下面将谈到几个关键问题: 设备如何接入网络? 设备间如何通信? 物联网数据的用途? 如何搭建起一个物联网系统框架呢?它的技术架构又是怎么样呢? 物联网终端软件系统架构? 物联网云平台系统架构? 1.物 ...

最新文章

  1. GBDT和GNN结合,结果怎么样?
  2. 【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )
  3. Linux Shell脚本编程--cut命令
  4. (原创)eCos驱动分析 之 ISR是如何与硬件中断联系起来的?
  5. xmanager远程桌面控制linux
  6. c语言程序设计常用语句格式,全国计算机考试二级C语言程序设计要求
  7. ubuntu 使用apt-get install 安装php5.6--php7
  8. matlab 判断鼠标按下_Simulink(其他校验模块)+Matlabgui(鼠标响应事件)+Stateflow汽车运动逻辑状态(二)...
  9. android每秒 1,在Android 5.1中调度每秒的警报
  10. 用Java获取当前工作目录
  11. macOS Monterey更新后遇到的bug问题汇总与解决
  12. SSM编写http接口返回JSON格式数据
  13. nginx autoindex美化
  14. html页脚版权声明,版权声明与免责声明的区别
  15. 基于javaweb的人才求职招聘管理系统(java+springboot+freemarker+jpa+mysql)
  16. 明日之后各个服务器的信息,明日之后不同区可以一起玩吗_不同服务器互通吗...
  17. 电网设备股集体上涨,国家电网称将推进电网数字化转型
  18. html模块 码工助手,码工助手在线布局使用注意事项
  19. 世界各国电源插头插座形式
  20. c++求范围内既是素数又是回文数的数的个数

热门文章

  1. 【luogu2737】 [USACO4.1]麦香牛块Beef McNuggets [动态规划 完全背包][数学 扩展欧几里德]...
  2. Spring boot centos部署启动停止脚本
  3. 开源学习:tinyhttpd
  4. 用WSE在Web服务中验证用户身份
  5. EnumMap的用法和源码解析
  6. node.js Centos安装
  7. bps、Bps、pps
  8. 技术人员如何创业《四》- 打造超强执行力团队
  9. FatFs文件系统的移植
  10. 虚拟机模拟WIN2008创建域控制器与故障转移群集