之前写的感觉有点乱,把架构的设计图先放上来吧,对照着说。

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#]我的系统架构 总图的更多相关文章

  1. [CAMCOCO][C#]我的系统架构.服务器端.(四)----Model层 实体的自我验证

    这是Model的第二篇,上一篇点这里 这块完全是扒了@何镇汐大神博客里的教程实现的,在这之前完全没想到数据验证居然可以这样做!!在此表示严重感谢!!! 点击这里可以去了解这个方法的原理,老胡估计自己是 ...

  2. [CAMCOCO][C#]我的系统架构.服务器端.(三)----Model层

    我估计一片帖子写不完这个,慢慢来吧... 先上个图,按照图来说明应该容易说清楚一些. 在Model Core核心代码中,老胡创建了一个类 CAMCOCO.Model.Core,要求今后在Model L ...

  3. [CAMCOCO][C#]我的系统架构.服务器端.(二)----DATA层

    这一层在园子里有很多很多的介绍了,这层写好之后老胡也没多研究,基本上就是参考的园子里大咖们的写法,具体的说明老胡也细说不了了,把接口和思路简单描述一下就好,如果有问题还是那句话,感谢您不吝赐教,老胡这 ...

  4. [CAMCOCO][C#]我的系统架构.服务器端.(一)

    尽量少的前言 虽然写了N年代码了,但总觉得什么东西都是囫囵吞枣,无法尽得其精髓.最近整理了一套心目中的架构,如有错误之处,烦劳不吝指正,老胡在此不胜感激!! 第一篇 我心目中的架构 做了无数个系统,写 ...

  5. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  6. 千万pv大型web系统架构,学习从点滴开始

     架构,刚开始的解释是我从知乎上看到的.什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像.更抽象一点,说架构其 ...

  7. [网站性能1]对.net系统架构改造的一点经验和教训

    文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 ...

  8. 5G系统架构

    原文标题:迈向5G之路,颠覆性的5G系统架构?   本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...

  9. 异构(兼容dubbo)SOA系统架构(.net)优化升级

    前面一片文章已经提到我司的异构(兼容dubbo)SOA系统架构,解决了不少技术痛点,也还算比较完善,也顺利推广开来. 但作为项目的开发者,自己产品的问题心里是清楚的,离自己满意还是有不小的距离. 在推 ...

随机推荐

  1. Windows Message Codes

    https://www.autoitscript.com/autoit3/docs/appendix/WinMsgCodes.htm WM_ACTIVATE 0x0006 WM_ACTIVATEAPP ...

  2. 解决IE6不支持position:fixed属性

    最近在优化网站浮动广告时候遇见了IE6不支持position:fixed属性.上网收集了一下解决方案 比较好的方案就是利用css表达式进行解决 补充:CSS Expression (CSS 表达式), ...

  3. SQL Server2005中使用XML-数据类型、查询与修改

    SQL 2005引进了XML数据类型,可以直接将XML当作字符串直接存入该列. 这样可以不需要对它进行XML解析. USE AdventureWorks -- 创建一个送货排程表 CREATE TAB ...

  4. C++学习笔记之输入、输出和文件

    一.流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的. 缓冲区:内存的一块区域——用作文件与内存交换数据. 数据从文件中读出:文件 → ...

  5. 【M34】如何在同一个程序中结合C++和C

    1.C++和C混合编程的时候,需要考虑产生的目标文件的兼容性. 2.名称重整,为什么要搞出名称重整? 连接器要求所有方法名必须独一无二.对于C语言,没问题.C++支持过载,也就是方法名相同,形参表不同 ...

  6. Fitness training

    2014-01-14 第一次跑步,结束后大腿酸. 2014-01-15 第二次跑步,跑的过程中臀部酸痛,结束后大腿酸痛. 已经进行跑步8次了,后6次,每次3000米 2014-02-06  plank ...

  7. 利用FluorineFx的ByteArray上传图片

    Flex端利用new PNGEncoder().encode(bitmapData)将png图片转换为ByteArray,然后传给服务器,服务端需要定义一个public ByteArray Uploa ...

  8. TP复习15

    ## ThinkPHP 3.1.2 URL#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲:一.URL规则 1.默认是区分大小写的 2.如果我们不想区分大小 ...

  9. 三星galaxy s4问题解决及快捷操作

    http://blog.csdn.net/pipisorry/article/details/38474827 三星galaxy s4更改锁屏方式时出现故障 屏幕锁定设置除password以外,其它锁 ...

  10. 创建透明的UIToolbar

    TranslucentToolbar.h文件 #import <UIKit/UIKit.h> @interface TranslucentToolbar : UIToolbar @end ...