微软企业应用开发三大方向:跨平台、开放/开源与DevOps

软件和互联网正在改变传统企业,软件的职能逐渐从管理内部员工变成核心的商业竞争能力,在今天这种大环境下,我们应该用的新开发技术和方法。微软公司全球资深副总裁、开发平台事业部潘正磊(Julia)认为,把IT托管到云上并不是真正的高效生产力,云计算最主要的是提供各种各样的服务,为企业创造新的商业价值。也就是说,云平台需要提供各种易用、强大的工具来支持开发人员实现数字化转型,不管是认知服务、流媒体服务还是物联网、大数据的支持。

除了弹性、可扩展的基础设施云平台,微软还从跨平台、开放/开源与DevOps三个方面为开发者提供开发工具来实现企业的高效生产率。基于这些经验和技术,从2012开始到今天Visual Studio 2015年发布之后,微软的交付速度从三年多到三个月,再到可以三个星期为客户提供新功能。

跨平台:Xamarin的整合与开源

在应用高效开发的过程中,要避免iOS版本、Android版本甚至Windows版本的重复性开发,增加代码共享、避免用不同的编程语言不同的开发环境来编不同的APP是自然的思路。微软提供了三套解决方案来增加代码共享。

  1. C++。微软的Office产品全部是基于C++的代码共享,如果在iOS或者Android上下载微软的产品,里面大量的C++代码是跟Mac和Windows桌面产品共享的。

  2. 针对JavaScript的Apache Cordova架构,在Visual Studio 2015里做了很多支持它的开发工具。

  3. 收购了Xamarin提供给所有Visual Studio开发人员使用,没有任何新增费用,包括在Mac上提供这项支持,此外还将Xamarin的运行时全部开源。

潘正磊介绍,基于Xamarin,开发人员可以用C#编程语言构建完全原生的iOS和Android的APP——用Apache Cordova可能还会担心性能问题,但Xamarin编的完全是原生的APP,没有任何性能和执行的问题,而且Xamarin还可以极大的支持代码共享在iOS和Android上。

Xamarin还有一个非常酷的功能:Xamarin Test Cloud,有几百种不同的设备在后端,通过云服务形式提供给开发人员做不同设备的匹配测试,而且有一个非常炫的界面。Xamarin对企业用户来说最大的好处是能够极大地利用现有人才,而且能够共享前后端代码,为企业提供移动的服务编程。

互联网医疗的创业公司微诊集智的宋剑飞介绍,其微诊App按照国内主流设计,有类似微信的聊天、类似微博的回复评论,基于Xamarin开发的APP与原生APP相比流畅度和使用体都是一模一样的。

Xamarin可以在两个层面做代码复用呢,第一是APP的网络操作和和一些计算逻辑可以跨IOS和Android的,因为都是C#代码,只是UI层有区别,要按照具体的SDK来做开发。第二是前后端也可以复用。

MVC里有Model层,APP也有Model层,因为需要数据传输模式,两个对象是一样的,采用Xamarin技术可以做到至少Model层在APP复用,跟后端代码也可以复用。比如校验,APP和服务器校验两次,要是原生开发APP可能需要用Java写一套,Objective-C写一套,C#写一套用Xamarin就可以跨过这三套。首先对C#的开发人员我们可以用最熟悉的C#工具做对象处理,非常快捷。其次是C#5.0的Async语法,也极大地提升生产力,APP是单线程的,必须不断做线程交互,有了Async之后,我们可以以串行方式做并行的事。

开发iOS需要在Mac上,有两种做法,比较常见的是在Mac上开发,里面跑一个Windows虚拟机,我认为效率不高;我是在Windows的PC上跑一个Mac的虚拟机,既可以保证我在Windows下面开发Android调试外围界面,还可以开发iOS。

潘正磊称,在收购宣布之后,Xamarin用户可以不用付费完全使用,Xamarin的日用户量马上就上涨3~4倍。微软认为,Xamarin的价格是最大的问题之一。

Xamarin最初并没有在中国推广,中国客户就算想买Xamarin也不知道哪里去刷信用卡,后来才有了CSDN软件商城与Xamarin的合作。中国作为Visual Studio是一个非常大的用户市场,潘正磊表示,微软也在跟Xamarin团队沟通,希望很快可以做好中文版本,推广给中国的开发者。

CSDN软件商城是目前Xamarin在中国的唯一合作伙伴,在三年的时间里已经为近两百家移动开发企业提供技术和培训服务。同时,CSDN也是微软MSDN产品在中国战略合作伙伴,为企业提供开发工具的优惠解决方案。CSDN软件商城旨在为企业提供高生产力的开发技术与工具,成为开发团队在技术合作上的最佳伙伴。更多产品信息请访问CSDN软件商城。

开放与开源:.Net Core技术

微软2014年11月开源了.NET技术,2015年11月发布了.NET Core第一个版本。潘正磊表示,.NET是微软14年前推出的为技术,在新的“移动为先,云为先”的大环境下,原有的.NET已经不适合在云端运行大量并发式服务,微软就把最核心的运行时.NET Core拿出来做技术更新。.NET Core的好处是非常小,只包括开发者需要的Class Library,非常模块化。

这套技术已经在Windows里第一次发布,会逐渐把它搬到服务端来。这上面微软会架构Base Class Library,一套统一内库,这就为前后端共享提供了技术支持,这会在2016年下半年推出。

网易游戏工程师周峰介绍了采用.Net Core开发《绝代双骄》游戏后端的经验。

前端用的是Unity引擎,非常自然的想法就是在后端也用C#来写,因为网易后端一直用Linux作为操作平台,积累了大量运维经验和开发经验,像监控、容灾、机房各方面配套都在Linux上,所以非常希望后端能够享受Linux成熟生态系统的便利。采用.Net Core之后,可以享受前端和后端语言一致性的好处,有非常多的开发语言的重用,特别是游戏行业有非常多验证逻辑需要在前端和后端一起跑,比如一场核心战斗。游戏行业会有独特的挑战,像外挂,需要在前端后端做非常强的验证,这些验证的逻辑如果分两套语言来写的话,会带来非常大的问题,还有非常现实的成本和进度的考量。另一方面的好处是人才培养,统一开发语言和编程环境之后,我们可以真正聚焦问题的核心,思考用户情景和商业价值,而不是思考优先队列在不同的平台上有几种写法,用不同的编程语言如何实现,这是更深远的好处。

很多游戏特别是手机弱视交换游戏后端都可以抽象地称为Web式架构,这是.Net Core特别得心应手的。我们在做后端架构时最重要的有两点,一是单台机器的性能要特别好,二是可延展性和扩展性要特别好,所有的逻辑都要做到平行扩展,做到备份与容灾,我们的逻辑纵向切分为逻辑服务器和共享的团队服务器。我们曾经碰到一个技术问题:在Linux上总是会有大量第三方依赖,微软技术和这些第三方生态能否够和谐融合在一起?我们花了几个月的时间和微软工程师紧密合作,迅速地把重依赖库结合到了产品中。

我们完整的架构和逻辑都在Linux上,能够为游戏前端丰富的展现提供坚实的后台支撑。这里也分享一些性能数据,做后台一方面服务是要能够平行扩展,能够应对突发的;另外一个关键的因素是投资回报率:用多少服务器来承载用户量,对游戏公司特别重要。和以前用Java和典型的服务器架构做横向比较,.Net Core在典型的用户情景上对我们的支持非常有力。业内典型手游服务器至少要做到一万人同服,上千人同时响应,无论是测试环境还是生产环境.Net Core都能很好地解决问题,还有独特的优势:例如性能非常稳定。当我们进行硬件更新换代和升级时,.Net Core带来的边际效应更好,这是合作中令人欣喜的地方。原来我们标准服务器是两套,用了.Net Core之后非常有可能把两台服务器变成一台,一台服务器就可以支撑一个大区的游戏玩家。

潘正磊谈到开源的体会时表示:微软所有的代码开源之后,开发者可以在自己使用场景中发现问题,然后发现一些优化的途径,然后把优化的代码直接给微软了,所以微软在开源过程中能够非常好地跟社区、跟开发人员、使用人员一起把产品做的最好,这也是没有开源之前比较难想象的一件事情。

DevOps:核心是四个持续

DevOps中文译为开发运维一体化,但潘正磊认为DevOps最核心的是四个持续:持续开发、持续交付、持续监控和持续学习。持续开发,希望每一次开发都是高质量的,很多功能三个星期迭代之后需要交付,这种持续发布是运维的一部分;通过持续监控,收集到及时的反馈,把遇到的问题非常快地解决。持续开发、交付、监控和学习的一个流程,不管是开发内部服务,还是云服务都是适用的。

微软支持DevOps开发模式的是SaaS的服务Visual Studio Team Services。微软内部,无论是服务器产品还是网络服务,都是用三个星期迭代的。Visual Studio IDE有一个DevOps,核心是一个持续开发、持续交付、持续监控和持续学习的闭环。而2012或者之前的版本没有这种能力,只能给开发人员一个全新的完整版本,没办法进行功能模块的更新。

网上服务每三个星期发布一次,最新功能三个星期之后会发布在Visual Studio上面,我们内部的也是三个星期一次内部的发布,我们的工程师会实时使用上一个迭代的产品来开发下一个迭代,每六个星期就会把我们最新的产品作为一个技术预览版的形式放在外面,给所有用户下载来收集及时的反馈这些都是为我们的持续交互来做延伸。通过持续监控,收集到及时的反馈把遇到的问题非常快地解决,这就是我们DevOps的体验。

潘正磊表示,很多DevOps在Visual Studio 2015最新版本中都得到了体现,这些功能和工具可以为不同企业做定制。工具是辅助开发团队达到所需效果,要知道自己的方法论是什么。TFS 2015在敏捷的项目规划、统一的版本管理、测试,质量管理、自动化部署等方面都有非常多新功能,为不同的工作方式打造了基础。微软在Microsoft Azure上也部署了Visual Studio Team Services,对不需要长久维持私有TFS Server的企业也是不错的选择。


原文地址:http://geek.csdn.net/news/detail/77485


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java程序员最常犯的 10 个错误

转载自 Java程序员最常犯的 10 个错误 这个列表总结了Java开发人员经常犯的10个错误。一 、把数组转成ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: List list Arrays.asList(arr); 使用Arrays.asList()方法可以得到一个ArrayList&…

mysql5.1升级5.5_mysql数据库迁移,由版本5.1升级至5.5.29,需要注意哪些

caching_sha2_password认证插件提供更多的密码加密方式,并62616964757a686964616fe59b9ee7ad9431333433636131且在加密方面具有更好的表现,目前MySQL 8.0选用caching_sha2_password作为默认的认证插件,MySQL 5.7的认证插件是MySQL_native_pas…

dotnetConf 2016 线上虚拟大会

为期三天(6月7日-9日)的Channel9 免费.NET线上虚拟大会,微软产品团队及.NET社区精英一起徜徉在.NET的世界! 与大咖Scott Hunter, Miguel de Icaza (Xamarin CTO) , ScottHanselman及其他.NET大牛一起学习如何利用.NET开发跨…

mysql的on和in用法_数据库中in、on、with的用法及示例。

with用法:创建一个表:create table regr (pid integer,id integer, name char(20))alter table regr alter id set not null add primary key(id)insert into regr values(-1,1,library),(1,2,news),(2,3,world news),(2,4,politics),(2,5,bussiness)(2,…

文档数据库RavenDB-介绍与初体验

不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了。虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来。今天就给大家介…

双机热备的原理

转载自 双机热备的原理夜半惊魂 上次的文章《负载均衡的原理》中讲到,张大胖在Bill的指导下,成功地开发了一个四层的负载均衡软件, 把流量“均匀地”分发到了后面的几个服务器中, 获得了老板的1000块钱奖励。但是张大胖心中隐隐不…

c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法

mysql 语句操作:创建数据库:create database hotelATMDb;use hotelATMDb;C#连接mysql1、引用 dll MySql.Data.dll 下载地址:http://download.csdn.net/detail/chen504390172/67461312、引用 using MySql.Data.MySqlClient;连接语句&#xff1…

微软CEO纳德拉开讲,2016微软开发者峰会在京召开

6月1日,2016微软开发者峰会在京召开。 来自微软总部的高层、技术大拿, 以及来自微软亚洲研究院、微软亚太研发集团、Xamarin 总部团队、微软中国开发体验及平台合作事业部的技术专家对各平台的开发进行技术探讨,向开发者展示了一系列引人入胜…

Linux下如何避免误操作执行 rm

转载自 Linux下如何避免误操作执行 rm最近IT圈子流行着一个段子:某个蠢萌的程序员,不小心在公司的服务器上输入了 rm -rf/ 指令,结果......现在还没出狱呢。当然,绝大部分程序员不可能犯下如此低级的错误,更何况也没有…

Consul入门

简介 为什么要用consul,这里就不详细介绍了,本文重点是Consul的搭建和使用过程。 Consul搭建 参考文献:http://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/ 下载consul和consul UI 官方地址&…

Java Socket编程----通信是这样炼成的

转载自 Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的…

mysql级联复制转换成一主两从_一主两从转级联复制

一主两从 转 级联复制 示意图如下M ---> S1\ > M ---> S1 ---> S2\ --> S2如果有开启GTID操作起来方便多,GTID是唯一的,直接操作即可。如果使用file_name、position可以使用如下办法(现在还没开启gtid真的是无力吐槽)# 步骤1、# 现将S2的…

细说ASP.NET Core与OWIN的关系

前言 最近这段时间除了工作,所有的时间都是在移植我以前实现的一个Owin框架,相当移植到到Core的话肯定会有很多坑,这个大家都懂,以后几篇文章可能会围绕这个说下,暂时就叫《Dotnet Core踩坑记》吧,呵呵。 接…

mysql 外键和事务_Mysql (五)事务和外键

一、 什么是事务:简单说,所谓事务就是一组操作,这组操作要么都成功执行,要么都不执行。二、 事务的使用流程1. 第一步:开启事务,start transaction;2. 第二步:正常操作SQL语句&#…

微软发布正式版SQL Server 2016

微软于6.2 在SQL 官方博客上宣布 SQL Server 数据库软件的正式发布版本(GA),历时一年多,微软为该软件发布了多个公共预览版和候选版本,而今天最终版本终于上线了。在博客中,微软数据集团的企业副总裁 Josep…

怎样用bootsrapcol-md来实现四分屏_用会议平板提升会议效率,做好这两点

图片:皓丽编辑:好哩据相关科学研究显示,百分之 90% 的会议,完全可以在低于 30 分钟的时间内完成,而人的注意力集中的时间差不多也是在 40-45 分钟,所以提升会议效率,保持会议节奏的连续性和抓住…

JAVA 通过 Socket 实现 TCP 编程

转载自 JAVA 通过 Socket 实现 TCP 编程简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层…

Asp.net core与golang web简单对比测试

最近因为工作需要接触了go语言,又恰好asp.net core发布RC2,就想简单做个对比测试。 下面是测试环境: CPU:E3-1230 v2 内存:16G 电脑有点不给力 操作系统:Centos7.0(虚拟机单核2G内存) asp.net core rc2 golang v1.7beta1 下面是各…

mfc定义了变量仍提示未定义标识符_JavaScript-变量

好好学习,天天向上本章主要内容是:变量声明、命名规则、赋值变量变量(variables) 是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存 储的数据变量相当于一个容器,内部可以存储任意类型的数据…

Java基于socket服务实现UDP协议的方法

转载自 Java基于socket服务实现UDP协议的方法这篇文章主要介绍了Java基于socket服务实现UDP协议的方法,通过两个简单实例分析了java通过socket实现UDP发送与接收的技巧,需要的朋友可以参考下本文实例讲述了Java基于socket服务实现UDP协议的方法。分享给大家供大家参考。具体如下…