Asp.net Core 2.2 + Vue + Docker

作者: GongZH丶 | 来源:发表于2019-03-05 13:19 被阅读23次

    以前写过一篇《搭建ASP.NET Core 2.1与Vue.js结合开发的模板》的文章,是以后端渲染的方式的web应用解决方案,当时受限于了解的技术不够,所以解决方案比较局限。随着项目的深入和团队技术的发展,逐渐找到了用的比较顺手的方案,在此简单记录一下。

    前后端分离

    前后端分离,简单来讲就是前端和后端的代码分离,也就是技术上做分离,更彻底的就是直接采用物理分离的方式部署。而采用服务端模板技术,比如cshtml ,把C# 、JavaScript 、html、 css都写到一个页面里,稍复杂的页面就无法维护。
    这种分离有几个好处:
    前后端技术分离,可以由专注前端的开发人员进行开发优化,这样前端的用户体验会更好。
    分离开发的情况下,前后端的交互更加清晰,后端的接口简洁,更容易维护。
    后端服务不变的情况下,使用一套后端服务,可以支持前端的web页面、移动端App、小程序等访问。

    部署

    服务器是Linux的centos系统


    WX20190114-171646@2x.png

    前端web页面

    前端页面用的是vue框架,Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,vue cli 3已经出来有一段时间了,比较成熟,文档也已经比较详细了,所以果断换成vue cli3开发。
    vue cli 3的文档https://cli.vuejs.org/zh/guide/
    用vue cli开发完页面后,可以构建发布部署了。

    我们部署在centos7系统的服务器上,nginx 是一个高性能的HTTP和反向代理服务器,常用于分布式服务器管理。web页面以静态文件的方式放在服务器,nginx当作服务器,静态文件传输会更快,访问量大的情况下,还可以做负载均衡。

    Asp.net Core WebAPI

    api的开发使用.Net Core 2.2(3.0也即将发布)。

    Restful API ,可视化api管理工具是swagger。

    ORM框架是EF Core(MySql.Data.EntityFrameworkCore),ASP.NET Core 2.0 通过EF Core使用MySQL数据库

    前后端分离的情况下,跨域问题在asp.net core中可以很好的解决。

    api开发完成以后,利用Dockerfile构建Docker镜像,push到仓库,在服务器pull镜像,运行容器。

    数据库方案

    数据库使用MySQL,由于单库单表无法支持项目的大量数据,采用了mycat进行分库分表。可以参考Mycat单库分表
    mycat构建镜像会比较复杂一点,如果不会可以去Docker Hub找现成的镜像。
    现阶段,mycat和MySQL8.0不太兼容,需要进行比较复杂的调整(主要是jdbc版本和mysql8.0的密码验证方式),不熟悉的可能无法配置成功可以用mysql5.7,或者等mycat更新(mycat1.6版本还是2016年发布)。

    Docker

    在服务器上安装Docker(《Docker的简单使用》),大部分程序都以容器化方式部署运行。包括Nginx,WebAPI,Mysql,mycat ...

    微服务方向

    单机的 Docker 引擎和单一的容器镜像只能解决单一服务的打包和测试问题。而要运行生产级的企业级应用,就需要容器调度管理系统,K8S就是其中一种容器调度管理系统。

    Docker与K8S的结合也是微服务开发的一种方向,但是K8S上手难度太高,不是短时间就能够熟练运用的。Java技术栈有强大的spring Cloud开发微服务,asp.net core 也可以与spring Cloud结合开发微服务。

    相关文章

      网友评论

        本文标题:Asp.net Core 2.2 + Vue + Docker

        本文链接:https://www.haomeiwen.com/subject/lormuqtx.html