编程语言从最初的0101机器码到汇编语言再到面向对象的编程,不断的发展,整个发展趋势呈现高内聚、低耦合、可重用、可理解的特点。最早编程是用机器码,人的大脑不像电脑,无法处理0101;后来汇编语言还是太费解,又出现了高级语言;然后因为我们需要更加接近人类语言的方式描述问题,开始出现结构化编程或者模块化编程的方式;但我们要面对的问题还是太复杂,所以就需要把他切割成小问题,即模块化;模块化出现之后,我们又开始追求高内聚低耦合,因人脑仍然没有办法思考太多的模块之间错综复杂的关系,所以需要高内聚低耦合,分层次的看待这些问题;但就算把这些功能都充分的去模块化、高内聚低耦合,发现数据流还是太复杂了,所以需要把数据也给高内聚低耦合,这个时候我们开始去做面向对象的编程,当面向一个对象的时候编程就会比较高效。面向对象就是帮助我们把数据对数据的操作分装到模块里面,同时提供新的思考问题的方式,这样子我们本来只是比较简单的大脑,居然一下子就可以驾驭非常复杂的业务逻辑,做很庞大的软件系统。

目前我们发展出了23种设计模式,发展出CS、BS、MVC、MVP各种各样神奇的架构模式之后,开始用这些概念“吵架”,或者做成面试题。整个发展的路线很明显的趋势是:不断地追求更好的高内聚低耦合。相信可预见的未来仍然会继续去寻找更好的一个高内聚低耦合的编程模式,我们总是在追求更好的可重用性,尽量地减少重复的工作。近几年大家都在讨论的微服务,微服务面对系统的时候,能不能用很多重复自治的子系统来完成。这些子系统应该可以独立于大系统独立存在,每一个子系统应该可以管理好自己、保证自己是健壮的、可处理好异常情况、面对压力时候扩容负载均衡、没有压力时应该缩容。同时子系统无需担心被用,被越多的使用方使用,越说明该子系统有很好的可重用性,使用量越大越说明可能会产生规模效应,那就可用更低的平均成本来提供更好的服务。

讨论微服务时,之前我们仅仅是在讨论一个系统怎么被拆成几个微服务,然后再用新形式来做新的系统。但这样做与以前做的模块化编程毫无区别。在云时代基于微服务的设计理念开发软件,首先要考虑的是有没有一个现成优秀的云服务可以作为一个系统需要的微服务,直接可用,比如图片上传、下载、裁剪、缩放等功能;如果没有,那系统需要的服务,把它开发出来有没有可能变成一个通用的服务,然后开放出去,这样的话除了有可能去交付系统之外,还可能通过售卖我的微服务获利。

软件开发历史上走过了结构化、面向对象,还有各种各样的开发模式,这些所有的发展模式共同的发展方向是越来越高的高内聚低耦合,越来越好的可重用性,越来越容易被我们的大脑理解。在云时代,微服务是符合这三个大方向的全新软件开发模式。

云时代的云服务公司,它们的核心业务和面临的问题就是今天这些纯粹的技术问题,除了要能够解决并封装成服务,还需要不断的降低成本和优化效率,而在云上的降低成本和优化效率这是真正意义上的技术价值的直接体现。亚玛逊能够连续 降价来阻止竞争对手进入,正是技术综合实力的体现,未来必然只有少数云服务公司能够把提供服务的成本控制在自由市场竞争的价格之下。

云时代我们需要采用新平台来革新我们的软件开发模式,作为一个走过16年历史的.NET, 在2014年顺应时代要求自我刷新,推出的开源跨平台的.NET Core, 就是为云原生应用的开发而准备的平台,.NET Core相较于他的哥哥.NET的优势也正是我们很容易的使用C# 语言去构建高内聚低耦合的系统。借助于K8S,service fabric, 我们很容易构建一个.NET Core的服务。最近结合.NET Core和k8s 容器服务在腾讯云上制作了一个教程 《.NET 微服务实战 — 微信公众号开发(https://cloud.tencent.com/developer/edu/major-100017)》,教程里例子-公众号开发虽然简单,我只是使用这个简单例子来阐述一个简单的问题,云时代的.NET 是怎么样的,我们要怎么样使用.NET Core。

云时代的.NET的更多相关文章

  1. ZeroMQ:云时代极速消息通信库

    ZeroMQ:云时代极速消息通信库(大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器) [美]Pieter Hintjens(皮特.亨特金斯)著   卢涛 李 ...

  2. 云时代基础设置自动化管理利器: Chef

    云时代的到来势不可挡.尤其作为程序员,我们每天或多或少的直接或间接的使用者各种云服务.云平台有很多种,如云软件(SaaS, Software as a service).云平台(PaaS, Platf ...

  3. OneAPM:打造云时代的应用性能管控平台

    在2015年大连市CIO信息化年会的现场,记者与OneAPM东北区总经理佟维针对云时代的企业系统应用性能的管理控制进行了简短交流.北京蓝海讯通科技股份有限公司,即OneAPM是中国基础软件领域的新兴领 ...

  4. ibm云时代的转型

    好几个月了,有两个说法很流行. 第一个说法,是老有人嚷嚷思科快被SDN整趴下了:第二个说法,是老有人嚷嚷IBM在云计算时代完全落后了,要倒下了. 刚开始我还跟有些人辩论: 1.裁员是西方企业常用的战略 ...

  5. 西安活动 | 4月20日「拥抱开源,又见.NET :云时代 • 新契机」

    云计算日渐兴起,成为提升企业效率和生产力的最终解决方案,而云时代也为软件开发模式带来了翻天覆地的变化.可以说 .NET Core就是这个时代催生的产物.自2016年 .NET Core 1.0 发布以 ...

  6. 重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准

    重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准 11 月 29 日,CNCF containerd 社区正式宣布:两位阿里巴巴工程师正式获得 containerd ...

  7. SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?

    刚刚过去的在巴塞罗那举行的2019 SAP TechEd,SAP照例向全球广大的SAP生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intel ...

  8. 论云时代最经济的APM工具的姿势

    阿里云于大概两月前商业化了一款APM产品 ARMS ,正式填补了 APM 上的云上监控的空白.那么作为阿里云官方 APM 工具,ARMS 和其他传统厂商的 APM 服务相比有什么特点呢? 通过和国内其 ...

  9. 云时代IDC自动化运维的几大神器

    云时代IDC自动化运维的几大神器 2016年09月18日 10:27:41 天府云创 阅读数:1715   版权声明:本文为EnweiTech原创文章,未经博主允许不得转载. https://blog ...

随机推荐

  1. SSM框架+MySql保存emoji表情

    本博客的记录的操作在linux 项目中需要从微信获取授权来登录,在此过程,保存微信emoji表情昵称到mysql数据库的时候出了错误. 老规矩百度一下,得知是mysql的utf8字符集只支持1-3个字 ...

  2. 全局唯一ID发号器的几个思路

    标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程.如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可 ...

  3. AWS的区域和可用区概念解释

    AWS的每个区域一般由多个可用区(AZ)组成,而一个可用区一般是由多个数据中心组成.AWS引入可用区设计主要是为了提升用户应用程序的高可用性.因为可用区与可用区之间在设计上是相互独立的,也就是说它们会 ...

  4. Python3的requests类抓取中文页面出现乱码的解决办法

      这种乱码现象基本上都是编码造成的,我们要转到我们想要的编码,先po一个知识点,嵩天老师在Python网络爬虫与信息提取说到过的:response.encoding是指从HTTP的header中猜测 ...

  5. vue的传参方式和router使用技巧

    vue传参方法一 1,路由配置 { path: '/describe/:id', name: 'Describe', component: Describe } 2,使用方法 // 直接调用$rout ...

  6. Django—models相关操作

    一.在django后台admin管理页面添加自己增加的表结构 通过终端命令:python3 manage.py makemigrations, python3 manage.py migrate 我们 ...

  7. BZOJ_2631_tree_LCT

    BZOJ_2631_tree_LCT Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上 ...

  8. BZOJ_2938_[Poi2000]病毒_AC自动机

    BZOJ_2938_[Poi2000]病毒_AC自动机 Description 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们 ...

  9. 磁盘IOPS计算与测量

    IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一.IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求 ...

  10. JavaScript对象的指向问题

    JavaScript对象的指向问题 标签(空格分隔): JavaScript 对象 在接触了JavaScript之后,我们常听到一句话就是一切皆对象,意思是说除了object以外,JavaScript ...