新项目架构从零开始(三)------基于简单ESB的服务架构
这几个月一直在修改架构,所以迟迟没有更新博客。
新的架构是一个基于简单esb的服务架构,主要构成是esb服务注册,wcf服务,MVC项目构成。
首先,我门来看一看解决方案,
1.Common
在Common文件夹中主要是基础设施层common.Infrastructure 以及ESB面向于web端的请求层 ESBLayout。
基础设施层主要包含了一些基本的帮助类,第三方dll,和常用的组件,比如缓存,ioc,日志,邮件,支付等。

ESBLayout这个项目主要集成服务的一些调用,在此项目中添加了对与esb服务的引用,所有的服务请求通过该esb服务进行路由。请求方式如下
public List<Test_StudentDto> GetStudentListByPage(int pageIndex, int pageSize, string queryPredicate, object[] paramValues, string orderBy, ref int record)
{
using (var client = new ESBServiceClient())
{
string str = string.Format("{0}{1}{2}{3}{4}{5}",
pageIndex, pageSize, queryPredicate, paramValues, orderBy, record);
string sign = ServiceEncrypt(str, key);
var param = new object[] { pageIndex, pageSize, queryPredicate, paramValues, orderBy, record };
var res = client.InvokeRef("689745d4-2218-4464-b207-d7dd61ce6bf8", sign, ref param);
record = Convert.ToInt32(param[]);
if (res != null)
{
return ConvertJsonTo<List<Test_StudentDto>>(res.ToString());
}
else
{
return null;
}
}
}
通过方法的guid code进行查找服务。
2.Persistence
该文件夹中的sln 主要是数据库访问层,该架构数据库访问层,主要是用EF框架进行交互,数据库采用Mysql(至于为什么使用Mysql,原因在于公司没有自己的机房,使用的是阿里云,但是阿里云的SQLServer RDS数据库 对于主从服务器的支持不是太完美)。
Tonsin.IRepositories 仓储接口,定义访问数据库的操作接口
Tonsin.Repositories.Mysql 仓储实现,基于EF框架对Mysql数据库进行访问
Tonsin.Model 数据库实体
Tonsin.Model.DTO 服务传输实体
3.PlatFormService
该文件夹中主要是ESB的实现,以及系统技术平台的服务实现。
下图为技术平台的展示

该平台集成了esb服务注册,服务器管理,系统管理,以及日志处理,定时任务,控件库等需求。
目的在于打造公司系统实时的技术支持平台。
4.Service
这一层就不用细说了,根据需求分化的服务站点项目。
5.Web
基于MVC的web站点。
下图为esb服务编写流程

大致的项目解决方案说明就是这些,该项目可以说是从0开始的一个大型项目,对于我这种初学者来说,压力很大,动力十足,也许会有很多不足的地方,希望能够在日后的时间内逐一改善。
PS:本人博客写的很乱,后续慢慢加强文笔。
新项目架构从零开始(三)------基于简单ESB的服务架构的更多相关文章
- 简单ESB的服务架构
简单ESB的服务架构 这几个月一直在修改架构,所以迟迟没有更新博客. 新的架构是一个基于简单esb的服务架构,主要构成是esb服务注册,wcf服务,MVC项目构成. 首先,我门来看一看解决方案, 1. ...
- 基于 Docker 的微服务架构实践
本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...
- 微服务实战(三):深入微服务架构的进程间通信 - DockOne.io
原文:微服务实战(三):深入微服务架构的进程间通信 - DockOne.io [编者的话]这是采用微服务架构创建自己应用系列第三篇文章.第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使 ...
- “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX
"快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...
- 基于netty的微服务架构
基于netty的微服务架构 微服务一篇好文章 http://san-yun.iteye.com/blog/1693759 教程 http://udn.yyuap.com/doc/essential-n ...
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...
- 基于AWS的云服务架构最佳实践
ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...
- 基于.net的微服务架构的开发测试环境运维实践
眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...
- iUAP云运维平台v3.0全面支持基于K8s的微服务架构
什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...
随机推荐
- 与众不同 windows phone (22) - Device(设备)之摄像头(硬件快门, 自动对焦, 实时修改捕获视频)
原文:与众不同 windows phone (22) - Device(设备)之摄像头(硬件快门, 自动对焦, 实时修改捕获视频) [索引页][源码下载] 与众不同 windows phone (22 ...
- Android Studio之同一窗口打开项目
Android Studio默认新打开的项目都是重新打开一个窗口,和原项目窗口同时存在,如果打开多个项目,则有很多窗口同时打开,怎么根据需要决定自己以何种方式打开呢? 1.设置打开新项目的方式 第一项 ...
- Open Source RTOS
http://www.osrtos.com/ Name License Platforms Description Last updated FreeRTOS Modified GPL MSP ...
- C++异常中的堆栈跟踪
C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数.变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句 ...
- uva 1151 - Buy or Build poj 2784 Buy or Build(最小生成树)
最小生成树算法简单 只是增加了一些新的东西,对于需要最小生成树算法 和中 并检查使用的一系列 还有一些更深入的了解. 方法的一些复杂问题 #include<cstdio> #include ...
- Delphi “Invalid floating point operation.”错误的解决方法(使用System单元提供的Set8087CW函数禁用浮点异常)
这两天用webbrower写东西,有时候打开SSL加密网站时会出现”Invalid floating point operation.”的错误,上网搜了下,把解决方法贴上. 导致原因 在Delphi2 ...
- 16位图像Alpha混合的实现(用汇编写的,比MMX还要快)
Alpha 混合的算法很简单,基于下面的公式就可以实现: D := A * (S - D) / 255 + D D 是目标图像的像素, S 是源图像的像素 A 是 Alpha 值, 0 为全透明, 2 ...
- Lambda高手之路第三部分
转http://www.cnblogs.com/lazycoding/archive/2013/01/06/2847587.html 背后的秘密-MSIL 通过著名的LINQPad,我们可以更深入的查 ...
- Powershell Mail module, 发送outbox 里的全部邮件(一个.csv文件代表一封邮件)
把creating mail代码写到调用处,往outbox写入 mailxxx.csv文件,入面记录了邮件的主要内容 写入 #template $TMP = IMPORT-CSV "$($d ...
- SocketAsyncEventArgs使用解说
原文:SocketAsyncEventArgs使用解说 如果在.NET下写过网络通讯的同学应该感觉不陌生了,有很多刚入门的同学很多都认为这东西可以大大提高处理效能还有就是使用上很不适应.其实使用之前最 ...