[CAMCOCO][C#]我的系统架构 总图
之前写的感觉有点乱,把架构的设计图先放上来吧,对照着说。
CAMCOCO架构能够支持的模型:
1、B/S程序,比如CRM什么的,和访问普通网站没什么区别,都是从WEB服务器上进行操作;
2、APP的服务器端程序。APP可以是原生的,也可以是HTML5的。APP都通过WEB服务器获取REST数据进行访问,保护SOA的安全性;
3、WINFORM程序的服务器端;
从设计图上可以看出,老胡把客户端(使用场景)分为了三类:
1、不可信远程客户端:意思是可以被任何用户使用的,我们无法确保用户不会通过URL欺骗、COOKIE欺骗等等非法访问的情况,SOA服务的访问需要一个secrtKey,这个秘钥是不能被客户端掌握的,这种情况下,这类不可信客户端只能通过WEB服务来作为跳板访问SOA,而SOA的秘钥则保持在WEB服务里,不直接交给客户端。
2、可信任的远程客户端:在局部范围内使用的一些场景,用户身份和安全性是可以得到保证的,他们不会进行各种欺骗或尝试破解获得SOA秘钥。那么他们可以直接访问SOA服务进行操作。
3、可信任的本地客户端:有一些本地化的服务,比如我们引入了消息中间件后,需要做一些消息队列处理的服务时,就可以跨过SOA直接访问业务层了。
WEB服务和SOA服务的集群化
集群化是一个比较高大上的名词,其实老胡就是把各种服务给分解开来,从功能模块级就开始进行解耦。
例如一个CRM里,老胡将功能系统进行拆分:
WEB集群
1、框架WEB: framework.camcoco.com
2、身份验证WEB服务:passport.camcoco.com
3、组织架构管理WEB服务:org.camcoco.com
4、客户管理WEB服务:customer.camcoco.com
5、订单管理WEB服务:order.camcoco.com
6、....
SOA集群
1、身份验证SOA服务:soa_passport.camcoco.com
2、组织架构管理SOA服务:soa_org.camcoco.com
3、客户管理SOA服务:soa_customer.camcoco.com
4、订单管理SOA服务:soa_order.camcoco.com
5、...
框架WEB负责加载一个CAMCOCO的Client Framework,里面包含了一堆老胡写的JS,比如AJAX调用、场景保持及还原、数据提交验证、CSS样式等等。
其他的WEB服务都是一些轻量级的服务了,比如客户管理里面,就只做和客户相关的功能,比如客户列表、查询、新增、维护等等。
每个WEB服务后面是一个对应的SOA服务,WEB服务负责接收客户端数据然后转交给SOA进行处理。
这样拆分之后,今后老胡要做一个新项目,里面也用到组织架构、身份验证、客户管理、生产管理,那我们直接就把之前的服务调用过来,然后新做一个生产管理就行了。(当然这是理想情况,客户管理模块多半还是要修改的)
如果卖出一套程序给某家用户后,用户说客户这里我需要进行一些修改,那我们能很方便地定位到客户这个模块中,无论是从业务层开始修改还是只修改界面层,都是很方便的。同时在更新的时候,不会影响到其他功能模块的正常使用。
至于业务层,老胡设计的实体中不包含操作方法,所有的操作都是放在聚合中进行,实体只负责数据合法性验证。SO,老胡认为实体是可以交给之上任意层使用的,这样在各层间传递参数时就可以直接传递实体对象,而不需要设计复杂的接口函数将实体的各个属性分别传递下去了。
业务层里针对不同的服务包含了N多的业务单元,如上面的例子,那么里面就至少会包含CAMCOCO.Business.Customer和CAMCOCO.Business.Order,至于每个业务单元如何去设计,就根据需要了,比如你要用到消息中间件减轻压力,比如要用到IOC实现业务灵活转换。
总之,CAMCOCO设计的初衷就是:
1、每个业务都是可拆分可组合的,不同的系统可以共用尽量多的业务模块;
2、在框架允许范围内,尽量少的编写代码,且代码是尽量规范的;
3、单独业务(核心业务除外)不会影响全局系统的运行,不同业务可以交由不同人员完成,每个业务的不同层级也可以交由不同人员完成。
GO ON...
[CAMCOCO][C#]我的系统架构 总图的更多相关文章
- [CAMCOCO][C#]我的系统架构.服务器端.(四)----Model层 实体的自我验证
这是Model的第二篇,上一篇点这里 这块完全是扒了@何镇汐大神博客里的教程实现的,在这之前完全没想到数据验证居然可以这样做!!在此表示严重感谢!!! 点击这里可以去了解这个方法的原理,老胡估计自己是 ...
- [CAMCOCO][C#]我的系统架构.服务器端.(三)----Model层
我估计一片帖子写不完这个,慢慢来吧... 先上个图,按照图来说明应该容易说清楚一些. 在Model Core核心代码中,老胡创建了一个类 CAMCOCO.Model.Core,要求今后在Model L ...
- [CAMCOCO][C#]我的系统架构.服务器端.(二)----DATA层
这一层在园子里有很多很多的介绍了,这层写好之后老胡也没多研究,基本上就是参考的园子里大咖们的写法,具体的说明老胡也细说不了了,把接口和思路简单描述一下就好,如果有问题还是那句话,感谢您不吝赐教,老胡这 ...
- [CAMCOCO][C#]我的系统架构.服务器端.(一)
尽量少的前言 虽然写了N年代码了,但总觉得什么东西都是囫囵吞枣,无法尽得其精髓.最近整理了一套心目中的架构,如有错误之处,烦劳不吝指正,老胡在此不胜感激!! 第一篇 我心目中的架构 做了无数个系统,写 ...
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- 千万pv大型web系统架构,学习从点滴开始
架构,刚开始的解释是我从知乎上看到的.什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像.更抽象一点,说架构其 ...
- [网站性能1]对.net系统架构改造的一点经验和教训
文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 ...
- 5G系统架构
原文标题:迈向5G之路,颠覆性的5G系统架构? 本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...
- 异构(兼容dubbo)SOA系统架构(.net)优化升级
前面一片文章已经提到我司的异构(兼容dubbo)SOA系统架构,解决了不少技术痛点,也还算比较完善,也顺利推广开来. 但作为项目的开发者,自己产品的问题心里是清楚的,离自己满意还是有不小的距离. 在推 ...
随机推荐
- 微信分享朋友圈监听(PHP)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- OSX apache vhost 配置多站点时403错误解决方法
到 /etc/apache2/httpd.conf 这个文件修改下面的路径就好了 DocumentRoot "/Users/wujinhang/workspace/"<Dir ...
- HTML第四天学习笔记
今天老师教了下无序列表和有序列表,虽然并没有,同时做了个随堂练习: <html> <head> <title>随堂练习00</title> <me ...
- 用一行代码初始化ArrayList
方法1: ArrayList<String> arrList1 = (ArrayList<String>) Arrays.asList("Buenos Aires&q ...
- Sql中的union和union all的讲解
SQL UNION 和 UNION ALL操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相 ...
- c# 轻量级ORM框架 实现(一)
发布一个自己写的一个轻量级ORM框架,本框架设计期初基于三层架构.所以从命名上来看,了解三层的朋友会很好理解. 设计该框架的目的:不想重复的写增删改查,把精力放到功能实现上. 发布改框架的原因:希望给 ...
- 用java发送邮件(黄海已测试通过)
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- Android中Webview使用javascript调用事先定义好的Java函数
1. 首先定义好一个类,专们用于给javascript调用 public class JavaScriptInterface { // share your news public void shar ...
- Codeforces Gym 100015B Ball Painting 找规律
Ball Painting 题目连接: http://codeforces.com/gym/100015/attachments Description There are 2N white ball ...
- Codeforces Round #311 (Div. 2) D. Vitaly and Cycle 图论
D. Vitaly and Cycle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/557/p ...