CVS开发框架

CVS开发框架

http://netkiller.github.io/journal/cvs.html

Mr. Neo Chen (netkiller), 陈景峰(BG7NYT)

中国广东省深圳市龙华新区民治街道溪山美地
518131
+86 13113668890
+86 755 29812080
<netkiller@msn.com>

版权 2014 http://netkiller.github.io

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

文档出处:
http://netkiller.github.io
http://netkiller.sourceforge.net

 

2014-09-26

摘要

我的系列文档

Netkiller Architect 手札 Netkiller Developer 手札 Netkiller PHP 手札 Netkiller Python 手札 Netkiller Testing 手札 Netkiller Cryptography 手札
Netkiller Linux 手札 Netkiller Debian 手札 Netkiller CentOS 手札 Netkiller FreeBSD 手札 Netkiller Shell 手札 Netkiller Security 手札
Netkiller Web 手札 Netkiller Monitoring 手札 Netkiller Storage 手札 Netkiller Mail 手札 Netkiller Docbook 手札 Netkiller Version 手札
Netkiller Database 手札 Netkiller PostgreSQL 手札 Netkiller MySQL 手札 Netkiller NoSQL 手札 Netkiller LDAP 手札 Netkiller Network 手札
Netkiller Cisco IOS 手札 Netkiller H3C 手札 Netkiller Multimedia 手札 Netkiller Perl 手札 Netkiller Amateur Radio 手札 Netkiller DevOps 手札

目录

1. 什么是CVS框架

CVS(Controller, View, Service) 是控制器、视图、服务框架。

View 视图层不用多说

Controller 控制器层,负责用户业务逻辑

Service 服务层,服务端业务逻辑与数据存取操作

我提出的CVS其实是MVC去掉Mode其他保持不变, 将Mode替换为Service, 同时将以部门Controller逻辑放入 Service 实现业务逻辑共享。

2. 为什么采用CVS模式开应用程序

目前软件开发领域主流MVC模式,或者其他MTV,CURD等等,往往都是MVC不分离,即业务逻辑与数据库操作不分家。这给带来了很多数据安全问题。

通常DBA会提供一个数据库访问用户,该用户可以做“增”、“删”、“查”、“改”操作,权限的颗粒度控制比较粗糙,例如对行的权限,列的权限控制就比那麽容易做。

以上谈的是为什么采用CVS模式开发的原因之一。

第二个原因是大型系统不可能使用一台服务器,而是分布式模式,这就带来了很多应用跨物理机的访问,我们将很多业务逻辑以服务的方式提供集群节点调用。

这种模式同时我们的服段提供分布式部署,负载均衡与高可用需求。解决了性能问题、横向扩展问题等等。

3. 何时采用CVS模式开发

立项之初决定采用CVS模式开发当然最好,如果没有,可以中途新增功能采用CVS模式,然后逐步向CVS模式过度。

4. 何处采用CVS模式开发

5. 谁来做,以及分工问题

在我的团队中,由于安全问题,我将开发团队分为几个部门,分出一部人专门负责Service的开发,这样其他开发者无需关心数据库解决以及数据存储。只需要安装前面的团队提供的接口文档开发即可。

另外这种开发模式有个好处,它利于多个项目同时开发,我们只需提前定义好接口的名称、输入参数与输出参数,开发与调试每个团队可以自行模拟接口的返回数据,提前开发功能模块。

6. 怎样设计并实施CVS

下面是我设计的CVS框架,并在我的工作中得到广泛应用,从反馈角度看,目前无论是安全性,还是性能,伸缩性,都非常满意。

下面我们分别讲解每个部门的功能与作用。

6.1. 入口部分

框架最顶层是物理防火墙,常同时硬件设备,这里不多说。对于访问者直接面对的是web服务器与mq服务器。

我提供json, soap, xml-rpm 通过web服务器向访问者提供服务,另一个通道是MQ消息队列服务器,你可以扩展前端接口并提供其他形式的接口。例如fifo,基于tcp/ip的ipc, unix socket等等。

6.2. 应用防火墙,用户认证,访问控制列表

应用防火墙是软件层面防火墙,在我们没有能力购买昂贵的硬件设备的时候,我们可以使用该功能,用来阻止或放行IP地址。如果你有硬件防火墙,我仍然建议你使用,可以防止网络管理员配置上的疏忽。

用户认证不必多说,我们提供很多种用户认证渠道。

ACL 是控制Class 与 Method 的访问权限,我通常会创建很多用户,例如frontend针对前端,面向用户,backend针对后台,面向企业员工等等,下面我举一个例子:

'frontend' => array(
    'frontend/Exchange'=> array('getOne','',''),
    'frontend/Userinfo'=> array('getUserInfo','getMemberInfo',''),
    'frontend/Config'=> array('getWithdrawingConfig','getPlatFormConfig',''),
    'frontend/Keyloggers'=> array('insertSignupKeyloggers','deleteSignupKeyloggers'),
    'frontend/Allinpay'=> array('insertOrder','updateOrder','isFirstAccount'),
    'frontend/Members'=> array('getChineseNameMobile','changeMemberPassword','resetMemberPassword','getLoggingTime','insertMember','checkUserRealName'),
    'frontend/Balance_report'=>array('getdayreport','getmonthreport'),
	'frontend/Notice'=>array('send','registerVcode','passwordVcode'),
    'frontend/Pay'=>array('showPayList','pay'),
	'frontend/Accounts'=>array('isFirstAccount','isFirstAccountAngelFund'),
	'frontend/Exchange'=>array('getRate'),
    'frontend/Card'=>array('upload'),
),
'backend' => array(
    'backend/Keyloggers'         =>array('SelectSignupKeyloggers','updateSignupKeyloggers','SelectSignupKeyloggersAll'),
    'backend/Members'=> array('selectPasswordLog','downPasswordLog'),
    'backend/Balance_report'=>array('getdayreport','getmonthreport','getshow'),
),
'anonymous' => array(
    'News'=> array('getNews','getFirst','getTop10'),
    'RSS'=> array('','','')
)
'soap' => array(
          'Members'=> array('getAllByUsernameAndMobile','getAllByLimit',''),
          'Exchange'=> array('getOne','',''),
          'Soaplog'=> array('info','debug','warning','error'),
)
			

6.3. 消息摘要与证书

json 模式访问服务需要验证指纹摘要信息,一可以确认人份,二可以验证数据完整性

我们还提供非对称加密传输,通过公钥与私钥配对加密与解密。

综上所述我们在安全方面基本都考虑到了,比较全面,可以说武装到牙齿。

6.4. 日志

记录每一次访问,包括IP来源地址,用户名,访问类方法以及访问时间。

6.5. 数据库抽象层

这里也不必多说

7. 怎样部署CVS

我们分开部署SSL与WEB服务器,不要让SSL加密与解密过程影响到Service的工作,这种做法通常叫SSL卸载。可以将SSL放在F5等负载均衡设备之上,也可以使用廉价的服务器。

服务器的负载均衡这里也不多说。

时间: 2025-01-01 14:19:16

CVS开发框架的相关文章

PHP开发框架laravel安装与配置教程

 Laravel是一套简洁.优雅的PHP Web开发框架,本文将详细介绍Laravel如何进行配置 配置说明 框架下载好了,但是想要很好的使用,可能我们还有一些东西需要知道,这就是配置.和项目有关的配置是在app/config文件夹里,但是除了这里还有一些配置可能是我们需要的.作为一个基础教程,我就不一一介绍了,只是选择一些大家配置比较多的地方讲解一下. app/config中的配置说明 在app/config文件夹中经常配置的一般有两个文件:app.php和database.php两个文件,他

技术-CVS如何将某些文件排除在外

问题描述 CVS如何将某些文件排除在外 有一个技术问题CVS如何将某些文件排除在外我的工具是myeclise 2014 现在每次提交代码,都会将某些不需要的文件检测出来,有时候不注意就会提交到服务器上,求大神帮忙看看有什么好的方法排除这些文件的 解决方案 右键文件选择乌龟,会有一个unversion and add选项,取消选中 解决方案二:

框架 项目-如何搭建一个JavaWeb开发框架?

问题描述 如何搭建一个JavaWeb开发框架? 怎么搭建一个简单的JavaWeb开发的框架,比如用Spring+Hibernate+Struts2搭建一个SSH框架呀! 解决方案 参考:http://blog.csdn.net/communicate_/article/details/8644040 解决方案二: springMVC+MyBatis很好用 解决方案三: http://wenku.baidu.com/view/32607b35e518964bcf847cff

cvs提交代码会覆盖本地的代码这是为什么

问题描述 cvs提交代码会覆盖本地的代码这是为什么 我在用cvs(commit)提交代码的时候 出现了服务器会把我本地的代码给覆盖了, 这是什么情况...求高手解决啊... 解决方案 http://blog.chinaunix.net/uid-27471355-id-3701492.html 参考

Winform开发框架之权限管理系统改进经验总结(3)系统登录黑白名单的实现

在一般的权限系统里面,可能经常会看到系统的黑名单或者白名单的拦截功能.在一般权限系统里面 ,常见的黑名单就是禁止用户在某些IP上登录系统,白名单就是允许用户只在某些IP上登录系统.本随 笔主要介绍在我的权限系统里面,如何实现这个黑白名单的功能,以及介绍在其中应用到的IP对比操作 ,IP段判断等操作代码. 1.黑白名单的配置 要完成黑名单的拦截和白名单的放行,我们需要进行名单的配置操作,我们把相关的配置放到列表里 面进行展示,可以添加多个黑名单或者白名单,如下界面所示. 开发框架之权限管理系统改进

android快速开发框架XUtils update更新数据 无效

问题描述 android快速开发框架XUtils update更新数据 无效 最近学习XUtils发现 update更新数据库中的某个对象无效,好像第二次又可以了. 请问各位有遇到过这种情况吗

Tiny开发框架PPT介绍

我有一个梦想,那就是那一个NB的开发框架,让使用它的企业成本下降,让使用它的软件工程师轻松快乐.有人问我,你觉得smart框架与Tiny相比怎么样?我的回答是:smart是一个非常棒的框架.有人把JFinal的特性贴出来问我,你觉得Tiny框架与JFinal比怎么样?我的回答是:JFinal是一个非常出色的框架.不同的框架有不同的目标定位,有不同的目标群体,只要是使有者觉得不错,那就是合适的,就是好的.也有人非让我把Tiny框架和其它开源框架比较到底差异在哪里?这个问题确实不太好回答,于是我回答

CSS开发框架技术OOCSS编写和管理CSS的方法

文章简介:今天最流行的CSS开发框架技术当属OOCSS,尽管还有其他类似的技术存在,如BEM.这些方法试图对CSS采用面向对象的编程原则.尽管样式语言和面向对象的软件设计原则在概念之间存在一定的问题,这些微妙的东西对于一个欠缺经验的开发人员来说可能不会立即显现出来.最令人不 公认的拥有一个编写和管理CSS的方法比什么都要更好.尽管如此,一些开发人员的实践是不利于语义化质量和长期的可维护性.我们要讨论一些被提倡的"CSS框架方法"的问题和作为Web开发人员,我们如何可以更好的解决这些问题

前端开发框架UI组件和Javascript插件

文章简介:支持响应式设计的流行前端开发框架. 在几年前,并没有真正意义上的前端开发.随着网络技术的发展,网站和 Web 应用程序变得越来越复杂,前端部分的工作独立出来逐渐成为现在的前端开发.如今,我们可以看到越来越多的公司在招聘前端开发岗位. 前端开发并不容易,除了掌握基本的 HTML.CSS 和 Javascript 之外,因为不同版本的浏览器和平台,你需要知道如何做一个跨浏览器的网站.而最新的发展趋势--响应式设计,它不仅使 Web 项目开发更难,也需要花费更多的开发时间. 不过,有很多优秀