EFW框架开发的系统支持SaaS模式和实现思路

回《【开源】EFW框架系列文章索引》       

EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0

EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G

      前言:以前做一个区域性医院信息系统项目,包括几十家小医院都需要上医院信息系统,以前系统都是单机构版的,就是必须要每个医院去安装,程序和数据库都是每个医院一套,这样的系统来做这个项目肯定不行,维护实施成本太高了,所以这么多医院必须统一一套程序和数据库。而且为了客户机免安装,最好做成Web版系统,只用浏览器输入地址就可以使用系统;通过对单机构版的系统进行了一次大的改版,由原来的CS架构改为BS架构,由原来数据库只支持一个医院改成支持多个医院,而且控制器机构与机构之间业务数据不同相互访问;改版后的系统后就有点类似于SaaS模式;现在EFW框架针对SaaS模式的一些特点,做了一些功能扩展,让我们开发系统的起点就是支持多机构的;但是在业务开发的时候又无需考虑多机构,只需单机构的思想编写代码,机构的区分框架帮我们处理;

本文要点

1.SaaS介绍

2.EFW框架中支持Saas的两个技术实现

3.如何开发SaaS模式程序?

4.WorkId的值的传递原理

5.总结

1.SaaS介绍

 SaaS是Software-as-a-service(软件即服务)。

SaaS是一种通过Internet提供软件的模式,用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要;

所以我们开发一个系统要让它支持SaaS模式,首先它必须是Web程序,这样客户不用另外安装程序,只需要浏览器就可以直接使用;其次系统要支持“按需收费”,不同级别的客户可能使用的系统模块有区别,那么我们的系统必须支持按权限配置系统模块;还有就是我们的系统肯定只有运行一套在中心服务器,数据库也只有一套,却要满足不同的客户使用系统,而且客户之间的数据又要完全独立,这样需要我们在系统中有隔离机制可以按照机构区分业务数据;

2.EFW框架中支持Saas的两个技术实现

1)根据注册机构的级别,提供不同功能模块,实现按需收费

不同机构的按需收费,可以利用框架中的权限管理来实现。前面有一章有讲EFW框架权限管理,权限控制简单来说就是,角色配置模块菜单,用户绑定角色,用户登录后根据上述配置动态生成系统菜单而达到权限的控制;不同的机构可以维护不同的角色;如果菜单级别的权限还不能满足,还可以使用页面子权限进行页面中控件操作、数据显示都可以控制;

2)一个数据库隔离不同机构的业务数据

不同机构的业务数据隔离,首先框架基础数据字典中有一张机构表,管理所有机构数据,另外所有业务表都架构机构编码WorkId字段,产生的业务数据的时候把WorkId写入,这样用户查询数据的时候根据用户绑定的WorkId过滤业务表的数据;

另外如果系统不需要支持多机构,就只有一个机构,那每个业务表加一个WorkId字段比较别扭,框架提供了SaaS开关,为false的时候就不需要WorkId字段;

3.如何开发SaaS模式程序?

1)添加一个新机构

新增机构后,默认创建一个机构的超级用户,机构“企业级系统”和“测试系统”的超级用户分别为“admin”,“admin2”,两个用户分别登录,打开“书籍管理”功能,如此两个用户显示书籍列表数据不同。

2)Books表结构及界面数据显示

3)代码实现

实体Book的配置,与SaaS有关的配置是IsGB,如果IsGB=true实体不区分机构,IsGB=false实体区分机构,这里Book是业务实体所以要区分机构,而一般只有字典数据配置为true;

实体使用ORM保存数据时候并不需要指定WorkId的值,而且Book实体也没有WorkId属性;而插入数据库中WorkId值是框架中ORM自动处理的,这样编写程序的时候不需要关注WorkId,简化编码代码;

实体解决不了的复杂数据库操作,就使用Dao,Dao里面都是直接使用SQL语句操作数据库,所以当多机构的时候,Where条件后必须加上WorkId条件;

4.WorkId的值的传递实现

上面实例中的代码,在使用frmBook.currBook.save(); 和 strsql = string.Format(strsql, searchChar, flag,WorkId); 中的WorkId值是怎么来的?

1)用户登录后,根据用户名就能得到用户的机构编码WorkId,并缓存在“RoleUser”,一个用户只能属于一个机构;

2)打开界面的时候初始化控制器,同时实例化oleDb对象,oleDb对象有WorkId属性,值从缓存“RoleUser”取登录的WorkId绑定给oleDb对象,控制器中的所有代码以及后台代码实现都是使用的此oleDb对象操作数据库,所以必须将oleDb对象在Controller、ObjectModel、Entity、Dao中传递,同样多机构需要的WorkId值跟着oleDb对象就在各个对象中传递;

3)控制器对象将oleDb传递给ObjectModel对象,实例化对象必须使用NewObject()方法,通过此方法实现oleDb对象传递。所以如果使用new来实例化ObjectModel对象是不能操作数据库的;

4)oleDb传递给Dao对象,实例化对象必须使用NewDao()方法;

5)Dao中的WorkId

5.总结

使用框架开发SaaS模式的程序,只需要注意这几点:

1)配置文件中的IsSaas=true

2)业务实体的类名自定义属性IsGB=false

3)数据库中业务表必须增加WorkId字段

4)后台代码可以直接随时获取WorkId的值

 
标签: WebwinformnetefwSaaS

SaaS模式和实现思路的更多相关文章

  1. 二十九、EFW框架开发的系统支持SaaS模式和实现思路

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  2. SaaS模式给用户带来的优势

    这两年SaaS服务在中国越来越受欢迎,企业正在从使用本地化软件向SaaS服务转变.由于企业用户人力成本的上升.移动终端设备的兴起以及共享经济对企业的影响,企业采用经营设备.软件的方式也在逐渐发生着变化 ...

  3. OneAlert:国内首家 SaaS 模式的云告警平台

    随着互联网行业的高速发展,企业 IT 应用环境日趋复杂.几分钟的故障就会严重到用户体验,那么如何有效降低IT故障带来的影响呢?权威数据表明,86%的企业认为建立有效的监控系统和告警系统.提升 IT 的 ...

  4. 中国首个 SaaS 模式的云告警平台安卓版 APP 上线

    今年一月底,国内首个 SaaS 模式的云告警平台 OneAlert 正式发布了 iOS 版 App 客户端,今天上午,安卓版 App 客户端也正式上线了!每个安卓用户,无需电脑,都可以通过手机全程跟踪 ...

  5. 中国首个 SaaS 模式的云告警平台 iOS 版 APP 上线

    今天上午,国内首个 SaaS 模式的云告警平台 OneAlert 正式发布 ios 版 APP,每个 ios 用户,无需电脑,都可以通过手机全程跟踪所有告警,并且可以和每一个成员一键式电话沟通,团队协 ...

  6. 企业SaaS模式的优缺点

    好处: 1.降低成本 项目成本.人员成本 2.使用简单 无需系统维护,用户只需登录就可以享受系统的功能 3.安全性 SaaS模式下,企业用户最关注的是自己的数据能不能得到安全保护. A.涉及的数据有哪 ...

  7. SaaS模式介绍

     SaaS是Software-as-a-service(软件即服务). SaaS是一种通过Internet提供软件的模式,用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且 ...

  8. 什么是SAAS模式网站?

    说到“SAAS”,它的读法非常有趣,有“萨斯”,有“S.A.A.S”, 还有中文白话“啥事”的.不过,大多不熟悉的朋友第一反应可能是非典?,别误会,此“SAAS”非彼“SARS”,一字之差,但是意义完 ...

  9. SaaS模式实现架构

    SaaS模式实现架构 https://blog.csdn.net/xwq911/article/details/50630266 1. 数据库层: 数据库这一层的设计模式是很清晰的,无外乎只有3种方案 ...

随机推荐

  1. Android中部署自己的su

    本人博客原文 首先把你的自己的su的放到Android应用程序project的assets文件夹,为了和系统的su区分,我自己的su文件叫做sur. 另外我这里没有考虑x86架构的cpu的手机. 废话 ...

  2. Ajax请求访问action推断文件是否存在

    action措辞: public ActionForward fileIsExsit(ActionMapping mapping, ActionForm form, HttpServletReques ...

  3. Sql示例说明如何分组后求中间值--【叶子】

    原文:Sql示例说明如何分组后求中间值--[叶子] 这里所谓的分组后求中间值是个什么概念呢? 我举个例子来说明一下: 假设我们现在有下面这样一个表: type        name price -- ...

  4. (大数据工程师学习路径)第一步 Linux 基础入门----数据流重定向

    介绍 开始对重定向这个概念感到些许陌生,但通过前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中.这其实就是重定向,将原本输出到标准输出的数 ...

  5. ASP.NET验证控件

    在此过程中房间的收费制度时,.为了验证文本框是否为空.用户存在.合法等等.我们都要单独写代码.学习了ASP.NET的验证控件,省了非常多事. ASP.NET能够轻松实现对用户输入的验证. 让我们好好回 ...

  6. 五个项目管理学习笔记.沟通技巧II

    两.通信模型:沟通的双向过程 沟通模型: 编     码---------------->信息-----------------> 解码&歧义 发送者               ...

  7. 【iOS发展-81】setNeedsDisplay刷新显卡,并CADisplayLink它用来模拟计时器效果

    (1)效果 (2)源码下载(假设提示没有小图片的话,自己找一个替换一下即可,看到效果即可) http://download.csdn.net/detail/wsb200514/8176339 (3)总 ...

  8. HTML5实现刮奖效果

    原文:HTML5实现刮奖效果 要实现刮奖效果,最重要的是要找到一种方法:当刮开上层的涂层是就能看到下层的结果.而HTML5的canvas API中有一个属性globalCompositeOperati ...

  9. I Love This Game 2115(结构体)

    Problem Description Do you like playing basketball ? If you are , you may know the NBA Skills Challe ...

  10. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)    ...