昨天晚上看了微软的Build 2015大会第一天第一场演讲,时间还挺长,足足3个小时,不过也挺震撼的。里面提到了windows 10、Microsoft edge浏览器、Azure云平台、Office平台、Cortana助手、Visual Studio Code轻量级编辑器、Android程序在VS中开发及移植到.NET平台,Objective C编写的IOS程序在VS中开发、HoloLens的3D全息虚拟现实技术及眼镜等,微软一如既往地支持企业级应用,并提供平台式租用服务。说说我的感受,第一、我对游戏和个人应用开发不怎么在行,主要是做企业级信息系统的开发,因此微软的Azure、Office、Dynamic、SharePoint等企业级平台还是很关注的,这方面以后要多研究;第二、Windows 10会针对各个设备进行大一统,同时Visual Studio对跨平台、跨设备和开源、免费、社区等的支持力度进一步加强,所以今后在以.NET为主线的同时要了解更多的知识;第三、Project Spartan被命名为Microsoft Edge,这个Edge被定义为创造与消费的边界,而且这款全新浏览器已经被打造为Modern Browser,甚至只需要改动少量代码就可以移植Chrome浏览器上的扩展程序,这样看来以后走B/S路线的Web开发者,要放手学习前端开发知识,因为可恶的IE6被抛弃,兼容性的问题以后不会是大问题了;第四、VS Code可在Windows、Mac OS、Linux系统上使用,而用JAVA/C++编写的Android程序和OC编写的IOS程序也可以在VS中开发或移植,这说明今后不能只会传统的Web开发或本地程序开发,还要逐步学习移动程序开发;第五、最后就是很牛叉的HoloLens,这个实现的效果很炫,但是体验的人还不多,这个产品微软还没有完工,因此还在做一些保密工作,不过在一个亲临现场并预约到现场体验的人发回的帖子中看到,这个需要先用Unity 3D建模,然后在VS中编译生成这么一个过程,好吧,以后Unity 3D的知识也需要学习了。上面扯完废话了,顺便说一下学到的一个单词——App,以前一直一个字母一个字母地念:“a-p-p”,现在发现老外不这么念,查了一下有道词典,它的音标为[æp]。接下来,今天就在微软的Microsoft Virtual Academy中(以后简称MVA)找到了一个免费视频进行学习,现做一个系列学习笔记,由于是个人学习笔记,不是专业教程,因此如有错误,请到MSDN中确认。
进入正题,第一课是简介,该课程的名字叫“快速入门:使用HTML和JavaScript开发Universal Windows Apps,讲解老师是Michael和Jeremy。老师首先说明了该课程受众,要求具备一点Web开发知识:HTML、CSS、JavaScript,另外若做过Web开发或Native开发更好,还有想要解决一套程序能够在不同设备上适用这一问题的人。还有老师给了一些技术支持网站,有msdn.com、codeshow.codeplex.com等。接下来简单介绍了MVA社区,这是一个很不错的免费教程视频学习网站,同时在这里学习(Learn)时还可以获取积分(Earn),有了积分应该可以做一些事情,关于积分这点还没研究。
这门课主要讲解Universal Apps——通用程序,老师把程序分为3个部分,我觉得这么划分很有道理,数据层、逻辑层、UI表现层。对于Web App,云端(通常也叫服务器端)具有数据层、逻辑层和表现层的控制权,然后浏览器端(也叫客户端)从服务器上获取这些功能,并在本地运行。有人会提出JavaScript可以在浏览器端运行,但是从某种意义来说,那些只是为了增强用户体验,最终控制权还是归服务器端,因为浏览器端的各种操作只有被服务器端处理了才有意义。然后再来看Native App,同样的三层,不过数据层和逻辑层都是在云端和客户端同时具有各自的控制权,而UI表现层还是只在客户端存在(这个不是从服务器端获取到的)。传统的两种App介绍完了,那么Universal App是什么呢?老师举个例子,如果手机程序有个集合,windows程序有个集合,则Universal App就是这两个集合的交集。
前面介绍完了相关概念,下面进行实践。打开VS,File-New-Project,在左侧列表的模板中展开VC#,再展开Store Apps,里面赫然出现3种项目模板,它们分别是Universal Apps、Windows Apps和Windows Phone Apps。这里说明以下,这个Store Apps跟原来的Windows DeskTop开发和Web开发不是一回事,这里开发的程序,是出现在Windows应用程序商店中的,而Windows Apps是给原来类似Windows RT系统(也可以理解为平板)开发的程序,Windows Phone Apps是给手机开发的程序,而Universal Apps是对这两种程序的统一,稍后会进一步说明如何统一。这里老师在课程的讲解中也提到了,为平板开发出程序的效果与为手机的不一样,比如说同一个程序,在平板上可能是横向滚动,而到了手机上就会变成纵向滚动,因此这两种程序有共通之处,但是也有少许不同,这就是为什么同时有两种模板类型的原因。但是开发者总是希望自己的代码能够复用,因此就推出了Universal Apps模板(我翻译为通用程序)。巧合的是这次2015开发者大会中,有一个图片讲解了微软对程序的构想,最顶层是Windows Store,接下来是Universal Platform(通用平台),而底层则是四种类型:Web、.NET/WIN32、Android App、IOS App,所以我总结微软最想做的一件事,就是对技术的统一,开发者只要写一遍代码,剩下的至于给哪个平台使用等等交给微软来完成(怎么感觉微软成为了巨大的中间件?嘿嘿!)。回到正题,这里以空白项目为例,VS会自动生成3个解决方案文件夹,这里老师还特意讲解了解决方案文件夹和文件夹的区别。解决方案文件夹是把多个项目放到一起,给人的感觉就是一个项目,但是实际上在文件浏览器中是不存在这个文件夹的;而文件夹,比如在某个具体项目中添加一个文件夹,这时VS会在磁盘上创建一个真实的文件夹,可以用文件浏览器查看到,并且老师希望学习者能够区分这两者的差别。而在这个解决方案文件夹中存在3个项目,一个是{你的项目名称}.Windows8.1,另一个是{你的项目名称}.WindowsPhone8.1,还有一个是{你的项目名称}.Universal。前面提到Windows Apps(以下简称Win)和Windows Phone Apps(以下简称Phone)这两种项目,可能你已经做了一个平板或手机程序,这时你存在一个已有的Win项目或Phone项目,现在你打算在这个已有的解决方案中添加另一种项目,VS就会提示你,需要将你的项目类型转换为Universal Apps,同时会生成一个空的Universal项目。所以不管怎样,最后都是3个项目。
接下来再说说这3个项目的关系。你想让你的程序跑在平板上,那么就生成提交Windows8.1后缀的那个项目,而想跑在手机上,就生成提交WindowsPhone8.1后缀的那个项目。而在生成的过程中,VS会检测生成目标项目(Win或Phone)与Universal项目中不同文件结构的部分,会把检测到的部分也编译生成进去,而相同文件结构的部分则以目标项目为准。也可以说目标项目中的文件代码把Universal项目中具有相同文件结构的文件代码给替换了,注意这里是替换,不是合并(Merge),这点老师特意强调的。想想Config配置文件,如果当前目录中有,以此为准,如果没有则找上一级目录,如果还没有则可能会到系统文件夹中去找;或者再想想类的继承,当子类重写了父类的方法,那么对于子类对象是不知道有父类方法的,它会执行子类重写的方法。这些思维是多么类似啊!再说说“相同文件结构”,就是从项目根一级往下走,一直到文件名,比如说Win项目中有一个子文件夹js,下面有一个文件default.js,而Universal项目中也有一个子文件夹js,下面同样有一个文件default.js,这两个文件就是具有相同文件结构。这里老师给出一点建议,根据约定,JavaScript文件只能在Universal项目中出现,Win项目中和Phone项目中不要出现,这个其实很好理解,js文件代表了逻辑层,通用文件的意义在于复用逻辑层的代码,这样逻辑层代码只写一遍即可,如果Win项目或Phone项目中都写自己的js代码,那就没实现代码的复用,就直接分别写各自的项目就可以了,还要通用项目何用?但是这毕竟只是约定俗成的东西,也就是不会强制性要求,譬如在逻辑上平板和手机就有那么一点点的区别,也可以对这点区别在各自项目中分别写js文件。这里老师给出了建议总结:Win项目和Phone项目中会经常出现HTML代码(可以理解为表现层),而CSS代码不会很经常出现,至于JavaScript代码则是很少出现或尽量不出现。
最后老师要给出Demo,就是前面提到过的codeShow,这是一个开源项目,可以在线浏览代码,也可以将代码打包下载,还可以克隆代码库,甚至参与代码开发并提交改进的代码。这里老师提到一点,很有道理,就是在提交代码时需要提供Twitter账号,然后会在codeShow最后面显示为这个项目贡献过代码的人,他说这么做可以提高你的知名度并能展示你的实力,所以以后我也要多参加开源项目,并贡献有效的、高质量的代码。最后本课总结(Summary),Web程序和本地程序的关系、区别以及介绍,通用程序的介绍,和通用程序如何设计。
这节课的课后答题错了3个,看来还有待提高,课程本身是全英文,英文听说能力差是很大阻碍,还好微软给出了中文字幕,希望自己能在学习过程中提升自己的英文听说能力。这节课的学习笔记就写到这里,让我们等待下节课的笔记!
MVA Universal Windows Apps系列学习笔记1的更多相关文章
-
Developing Universal Windows Apps 开发UWA应用 问答
开始是一些欢迎,就不翻译 Question: Is the code already there? Answer: There is some code on that codeplex site, ...
-
使用 .NET 平台,如何玩转 Universal Windows 应用?
2015年7月30日 本文作者是 Managed Languages 团队项目经理 Lucian Wischik. 不久前,Visual Studio 2015上新增 Windows 10 应用的开发 ...
-
DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS &; PUBLISHING THEM TO THE MICROSOFT STORE
原文: DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM ...
-
[原]Universal Windows问题:winapifamily问题:WINAPI_PARTITION_DESKTOP问题:WINAPI_PARTITION_APP问题:WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)问题
问题回顾: 我新建的生成dll的vs问题: 此vs项目包含需要GL.h 结果此文件声明的GLint找不到! 进去发现#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITI ...
-
storysnail的Windows串口编程笔记
storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...
-
将Win8.1/WP8.1应用迁移到Universal Windows Platform
在上一篇在VS2015 RC打开CTP中创建的工程,我们介绍了怎么在RC中打开CTP中创建的Universal 工程,这一篇我们来讲下怎么将Windows 8.1/WP8.1的应用迁移到Univers ...
-
使用 Portable Class Library(可移植类库)开发 Universal Windows App
今天在这里跟大家聊聊关于 Windows Universal 应用夸平台的问题,首先Universal Windows App的定义相信大家已经有所了解了(如果你是一个刚刚接触 Universal A ...
-
如何使用 App Studio 快速定制你自己的 Universal Windows App
之前我为大家介绍过 App Studio 这只神器可以帮助大家快速制作一个 Windows Phone 8 的应用,今天之所以在写一篇关于 App Studio 的文章是因为,App Studio 经 ...
-
怎样使用 App Studio 高速定制你自己的 Universal Windows App
今天之所以在写一篇关于 App Studio 的文章是由于,App Studio 经过了几次升级功能得到了明显提升还能够调用系统功能了.而且能够更方便的和应用商店关联公布 Universal Wind ...
随机推荐
-
JavaScript 中 Number()、parseInt()、parseFloat()的区别
Number(): 概述:Number 对象由 Number() 构造器创建,是经过封装的能让你处理数字值的对象.在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换. ...
-
面向对象分析设计-------02UML+UML各种图形及作用
一.UML是什么?UML有什么用? 二.UML的历史 三.UML的上层结构(Superstructure) 四.UML建模工具 五.UML的图(重点) 1.用例图(use case diagram) ...
-
UVALive 7261 Xiongnu&#39;s Land (扫描线)
Wei Qing (died 106 BC) was a military general of the Western Han dynasty whose campaigns against the ...
-
IOS基础开发二(iphone计算器)
今天做了个iphone的小例子计算器:才用mvc设计模式 项目目录: 代码如下: CalculatorViewController:(MVC的控制器) // CalculatorViewControl ...
-
Git + Maven + Jenkins 实现分布式部署
一.安装 和 准备工作 我们选择了用 Tomcat 服务器下 war 包的安装方式.Jenkins 的下载地址:http://mirrors.jenkins-ci.org/,打开链接后,表格有war列 ...
-
PCA与LDA介绍
PCA(主成分分析) PCA是一种无监督降维方式,它将数据投影到一组互相正交的loading vectors(principal axes)之上,并保证投影后的点在新的坐标轴上的方差最大 记数据集\( ...
-
linux入门--Linux和UNIX的关系及区别
UNIX 与 Linux 之间的关系是一个很有意思的话题.在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞 ...
-
两种常用的全排列算法(java)
问题:给出一个字符串,输出所有可能的排列. 全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法. 1.字典序法: 如何计算字符串的下一个排列了?来考虑"926520"这个字符 ...
-
JAVA判断是否是手机设备访问
package com.common.util; import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 检测是否为移 ...
-
Win10下python不同版本同时安装并解决pip共存问题
特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似. 使用python开发,环境有Python2和 python3 两种,有时候需要两种环境切换使用,下 ...