1 Unstar Star 0 Fork 5

ryvius_key / baoai

forked from 源宝网络 / baoai 
Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Clone or download
select.md 4.79 KB
Copy Edit Web IDE Raw Blame History
源宝网络 authored 2020-03-10 19:05 . BaoAI初始化

前端和后端框架选型,深思熟虑

前端和后端实现目的:建立一个简洁、直观、强大和易于掌握的前端和后端SPA开发框架,支持国际化,以模块为基础,让WEB应用、人工智能、大数据和量化系统开发更迅速、更简单。实现大型企业项目的模块化开发,快速部署,无需编译,快速运行。

前端选型:

开发框架选型上,基于当前热门的AngularJS、Angular、VueJS、ReactJS中选择,

  • Angular功能强大,但基于Typescript,学习曲线较高,没有采用

  • ReactJS国际是最为热门的前端开发框架,并支持Android和iOS跨平台App开发,考虑到采用es6需要编译转码,没采用

  • VueJS国人最爱的开发框架,易学,上手快,组件支持多。但由于现有浏览器的限制,代码采用es6,需要编译转码,使JS语言最大的优点,无需编译,快速运行优势缺失,开发项目需要编译成一个大的app.js文件,由于app.js文件过大,导致初次加载js文件时间过长,不适应于大型应用,未采用。

BaoAI平台最后选型上采用了AngularJS框架,

AngularJS是出现较早,使用最为广泛,是上面多种框架的参考祖先,参考学习资料很多,易于学习,使用简单,原生支持ES5,无需编译即可运行于各种浏览器中,非常适应模块化平台构建。

BaiAI平台设计思路是将大型企业应用项目分解成很多小模块,每个模块由控制器、模板和第三方依赖库所构成。使用AngularJS懒加载,可以独立异步加载所使用的控制器、模板和第三方依赖库,无需将所有模块的内容合并成一个app.js文件,解决了初次加载js文件时间过长的缺陷,对于常用第三方依赖,可以单独使用CDN加速它们的加载,为大型应用的开发扫清障碍。

使用基于AngularJS的Ionic,同一代码由Ionic工具支持,实现一次开发,Android和iOS平台都可运行的跨平台APP应用。

BaoAI平台支持动态路由、异步独立加载模块控制和模块。

BaoAI平台实现了细粒度的基于角色的权限控制。

前端和后端代码无需编译,快速运行

后端选型:

选型目的:实现平台的模块化开发,快速部署,无需编译,快速运行,学习简单。实现应用Restful服务,大数据采集、处理,人工智能和金融量化。

在C、C++、JAVA、.NET、PHP、Javascript(NodeJS服务环境)中选择。

其中C、C++功能强大,其它语言的基础。但使用和学习复杂,不适合Web应用服务快速开发。

.NET无法跨平台,不适合在linux、unix和MacOS环境运行。

PHP和Javascript互联网使用最为广泛的语言。但实现大数据采集、处理,人工智能和金融量化较为复杂。

JAVA排行第一的语言,表面上语法简单,但要构造企业级应用需要很多框架支持,由于常用的框架太多,造成学习曲线极其复杂。大数据采集、处理,人工智能和金融量化应用实现很复杂。

BaoAI平台后端采用Python 3.6及以上语言,跨平台脚本语言,无需编译,各平台快速运行。Python是上述语言中,最容易学习和掌握的。非常适合开发桌面、Web应用、嵌入式等应用,在大数据采集、处理,人工智能和金融量化应用等方面使用广泛。

  • API服务文档及测试选型:

基于Swagger,API服务文档动态产生,无需专门编写。开发人员仅需在代码中增加注释,将自动产生Restful服务风格文档 swagger.json,由Swagger UI加载后,实现了每个服务说明、输入参数,输入出结果,数据模型,仿真测试等功能。

  • 数据库选型:

由于基于mongodb开发的ORM代码很难支持关系型数据库,因此平台还是采用了使用最为广泛的关系型数据。后端代码基于ORM框架SQLAlchemy,基本支持市面上各种流型的数据库。

  • 人工智能选型:

基于numpy、Pandas对大数据处理和分析,机器学习采用了主流的scikit-learn,深度学习主要基于tensorflow和keras实现。

  • 消息队列和定时任务选型:

使用稳定可靠的Celery,并将celery按需求完美整合到各个模块中,实现定时任务的可视化操作。每个模块可以动态产生各自的定制任务,任务生产和消费的队列服务器默认使用Redis,也可方便修改其它流行的消息队列如:RabbitMQ、mqtt等。

  • 大数据采集选型:

大数据采集主要使用成熟的scrapy网络爬虫框架和celery定时任务实现定时多任务抓取。

  • 金融数据采集:

主要基于tushare,每天自动更新股票、指数、基本面、财务等多种金融数据。

  • 量化分析选型:

量化分析和策略采用backtrader和talib,分析报表使用backtrader-plotting。

Comment ( 0 )

Sign in for post a comment

Python
1
https://gitee.com/ryvius_key/baoai.git
git@gitee.com:ryvius_key/baoai.git
ryvius_key
baoai
baoai
master

Search

132457 8cb2edc1 1899542 131848 70c8d3a4 1899542