.NET平台下的跨平台探索

2019-07-04 10:51:30 浏览数 (1)

编程一小时

三年之前投稿的azure云服务使用经验,记录一下,如今的微软和Azure已不是过去的微软和Azure了

我从2014年开始一直跟踪Azure云服务,之前拥有五年以上的.NET平台应用开发经验,从winform到webform,mvc框架到WebApi,主要从事物联网应用的前后端开发工作。跟着微软整个生态体系在进行跨平台改革,。.NET平台整体跨平台后我就不再追技术方面的改革,转战涉及linux平台下的软件开发,丰富的LAMP,LNMP架构经验。

几年前我在一家智能硬件公司参与过一项可穿戴健康云的技术架构开发工作,涉及到几个关键词和使用场景。云平台从阿里云迁移到azure,.NET后端程序的跨平台部署,数据库使用azure数据库服务,开源框架servicestack深度使用。

云服务整体迁移到Azure主要考虑到平台自定义创建虚拟机,灵活的创建各项服务机制,以及从应用程序到数据分析以及大数据分析处理的生态组件体系。我们按需搭建了生产,测试,灰度三套环境。生产负载均衡直接使用的azure的服务。

.NET后端程序的跨平台部署主要进行了以下几个方面的改造.

1公司软件服务全部搭建在Linux

centos操作系统下。.NET程序包括网站和应用API一律由Jexus

web服务器替换,API供公司网站和APP使用。Jexus服务器依赖于mono环境。

2数据库服务一律替换为云数据库,采用Azure的Mysql服务,权限控制,备份,维护全部交由Azure平台。

3后端服务按照功能模块化和服务组件化的思路拆分为多个二级域名服务,API框架采用ServiceStack开源软件,深度使用其ORM,Redis,MySQl连接库,序列化组件。另外后端服务的缓存和队列也采用redis实现,放弃使用.NET本身的缓存机制。

我在使用Azure云服务的过程中发现几个特点,个人感觉不利于Azure云服务的传播。

1使用人群

从平台接入门槛和使用难度来说,主要受众以.NET平台开发者为主,以致力于改变,有多年平台开发经验,有危机感的一部分平台开发者。

2平台差异性和依赖

通过我的使用观察来看,平台本身还有很强的语言平台属性,具体表现在多个功能组件强调开发者接入和维护时需要借助于PowerShell.

.NET开发人员很少知道PowerShell是什么,有何用,更不用谈PHP等Linux平台的开发者了。其实我并不喜欢PowerShell这个工具,之前也是被迫使用。

以MongoDb的使用介绍为例,Azure是这么介绍的

快速搭建MongoDB集群使用Azure

PowerShell和Azure

CLI在Azure虚拟机上快速搭建单节点MongoDB(

测试使用 )和包含主从复制以及分片集群的多节点MongoDB(

生产环境使用 )。

这样的介绍依赖于windows机器,对开发者有接入环境门槛,而不是直接的界面分配与虚拟机Linux环境操作两部分直接完成,自认为会被部分人直接pass。

3在使用azure虚拟机时,一定要确定分配的IP是否是固定IP,在哪种情况下可变,azure虚拟机有多个IP属性,一不小心,在重启或者其他相关操作下就会改变IP。我的方法是使用PowerShell命令固定一遍IP再使用。

基于.NET平台开发,如果要尝试跨平台,更多的需要技术决策者的支持。

以web部署为例,mono

Jexus不是主流的web服务服务器选型,但是绝对经得起生产环境验证。作为.net背景的开发人员,不局限在原有的windows思维里,就可以为程序设计和业务实现赢得更多的扩展性,而Azure云服务正是我们可以充分利用的平台!期待Azure的服务更加好用,在开源的支持方面更加全面。

如今的.net平台开发环境可以说发生了翻天覆地的变化,.net core整体重新定义了.net平台的开发能力,拥抱变化或许也是微软正在遵从的发展理念。

附图 六一儿童节,微软举行的编程一小时活动.

0 人点赞