昨天晚上看了微软的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的更多相关文章

  1. Developing Universal Windows Apps 开发UWA应用 问答

    开始是一些欢迎,就不翻译 Question: Is the code already there? Answer: There is some code on that codeplex site, ...

  2. 使用 .NET 平台,如何玩转 Universal Windows 应用?

    2015年7月30日 本文作者是 Managed Languages 团队项目经理 Lucian Wischik. 不久前,Visual Studio 2015上新增 Windows 10 应用的开发 ...

  3. 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 ...

  4. [原]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 ...

  5. storysnail的Windows串口编程笔记

    storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...

  6. 将Win8.1/WP8.1应用迁移到Universal Windows Platform

    在上一篇在VS2015 RC打开CTP中创建的工程,我们介绍了怎么在RC中打开CTP中创建的Universal 工程,这一篇我们来讲下怎么将Windows 8.1/WP8.1的应用迁移到Univers ...

  7. 使用 Portable Class Library(可移植类库)开发 Universal Windows App

    今天在这里跟大家聊聊关于 Windows Universal 应用夸平台的问题,首先Universal Windows App的定义相信大家已经有所了解了(如果你是一个刚刚接触 Universal A ...

  8. 如何使用 App Studio 快速定制你自己的 Universal Windows App

    之前我为大家介绍过 App Studio 这只神器可以帮助大家快速制作一个 Windows Phone 8 的应用,今天之所以在写一篇关于 App Studio 的文章是因为,App Studio 经 ...

  9. 怎样使用 App Studio 高速定制你自己的 Universal Windows App

    今天之所以在写一篇关于 App Studio 的文章是由于,App Studio 经过了几次升级功能得到了明显提升还能够调用系统功能了.而且能够更方便的和应用商店关联公布 Universal Wind ...

随机推荐

  1. 搭建JavaWeb服务器

    JDK安装可以参考 http://www.cnblogs.com/a2211009/p/4265225.html Tomcat安装可参考 1.由于服务器配置比较低综合考虑,选择ubuntu系统进行搭建 ...

  2. [转]ubuntu 14.04 如何开启和关闭触控板

    转自:http://lxn348567248.blog.163.com/blog/static/1201759252014649443513/ 禁用触摸板的命令:  sudo rmmod psmous ...

  3. php上传文件大小限制修改

    打开php.ini 1.最大上传文件大小: upload_max_filesize=2M 改成自己需要的大小 2.最大post大小: post_max_size=2M 改成自己需要的大小,第二个一般比 ...

  4. 在Navicat for MySQL中打开视图时,提示视图没有主键的问题

    一直把视图理解为一个select语句而已,视图一般就是用于查询,不会通过视图来更新表或视图本身的数据,所以视图根本不需要什么主键.今天自己建了一个视图view_test: drop view if e ...

  5. [转]Unchecked Exception 和 Checked Exception 比较

    Throwable类是所有异常的始祖,它有两个直接子类Error / Exception:   Error仅在Java虚拟机中发生动态连接失败或其它的定位失败的时候抛出一个Error对象.一般程序不用 ...

  6. 解决Django发送中文邮件时的编码及乱码问题

    参考自---http://blog.csdn.net/clh604/article/details/9274793 #-*- coding=utf8 -*- from email.message im ...

  7. jquery若干问题

    1.获取服务器端的控件 $("#<%=photopath.ClientID%>").uploadPreview({ Img: "ImgPr", Wi ...

  8. 解决VM虚拟机MAC OS X 10.10.x的卡顿问题

    点此链接下载beamoff安装到虚拟机即可.

  9. java 基础第一季

    1. i安装jdk ii 配置环境变量:JAVA_HOME 配置jdk的安装路径 path            配置命令文件的位置 bin目录的安装路径 PATH_HOME 配置库文件的位置   l ...

  10. C#在类中用调用Form的方法

    class 你的类 { private Form1 frm; //构造函数 public 你的类( Form1 form) { frm = form; } //调用form方法 private voi ...