注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

创新改变世界

you changed the world

 
 
 

日志

 
 

Win8编程代码重用的三种方式  

2011-10-27 11:25:04|  分类: win8 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在编写程序的过程中难免会出现重复编写同样功能代码的困惑,我们需要花费很大的精力来整理代码,用最少的代码完成最多的功能。在Win8开发中微软为我们提供了三种方式来重用代码,减少程序员的工作量。

Win8代码重用的三种方式:重用平台代码、重用框架代码(如Jquery)、重用自己的代码

1、重用平台代码

微软所讲的重用平台代码即是利用Win8平台提供的一些API来帮助AP开发者实现某些功能,例如:Windows contracts、search等;

2、重用框架代码

此处的框架代码指别人已经帮你写好的一些公共的代码程序,如Jquery框架等。

3、重用自己的代码

 在实际的编程中,我们对一些公共的、经常使用的代码需要单独提取出来,以备下次继续使用。很高兴,我们在Win8当中也看到了此功能,微软允许我们把这类代码写到WinRT里面去,编译之后会生成一个.winmd文件,我们可以把它引用到我们的工程当中去,有点类似于引入类库,并且在编写这些代码时我们可以使用自己熟悉的任何语言(C++、C#、VB),VS编译之后会统一生成公共的可以调用的代码文件。

实现外漏的方式有两种:

Win8编程代码重用的三种方式 - 江湖笑 - 江湖笑
 
 code:

(1)WindowsRT
#pragma once
using namespace Platform;
namespace WFC = Windows::Foundation::Collections;
#include <collection.h>
#include <algorithm>
#include <cmath>
namespace mycomp
{
    public ref class LangSample sealed
    {
        // Backing store for propertyA.
        int _propertyAValue;
    public:
        LangSample()
        {
            _propertyAValue = 21;
        }
        .....................................
   }
}

(2)HTML
<button id="callwinrt" onclick="CallWinRT()">Call WinRT</button>
<p></p>
    <label id ="Label1">Activation Result::  </label><label id ="loaded"></label>
    <p></p>
    <label id ="Label2">Input Vector::  </label><label id ="inputvector"></label>
    ........................................
<p></p>

(3)javascript
function CallWinRT() {
    // activate the native Windows Runtime component
    var nativeObject = new mycomp.LangSample();
    document.getElementById('loaded').innerHTML = nativeObject;
    // call the method to sort an integer array
    var inVector = [14, 12, 45, 89, 23];
    document.getElementById('inputvector').innerHTML = inVector;
    var outVector = nativeObject.sortVector(inVector);
    document.getElementById('outputvector').innerHTML = outVector;
    ..................................
}

--------------------------------------------------------------------------------------------------------------------------------
Windows RT(Windows Runtime)的介绍:

WinRT

WinRT是一个新的API 集合,具有以下特性:

  • 它实现了Metro UI规范的UI库
  • 为Windows开发人员提供一个简单的UI编程模型,你不需要学习Win32API的那些复杂的API了
  • 它使用XAML-base的UI系统
  • API都设计成了异步的
  • 它和.NET一样是个沙箱的API,自成体系,用于创建AppStore上的应用程序。
  • API的元数据格式是ECMA335,和.NET一样的标准。这是不是意味着以后Mono也可以在xUnit上去实现这样的API呢?

WinRT包装的新的用户界面系统,和Win32API一样是Com的上层。

WinRT Projections

我们所说的“Binding”,微软现在叫做“Projections”,又是一个新名词。Projections就是向三个环境 Native (C and C++), HTML/Javascript 和.NET 暴露接口的过程。所以在Win8上各类开发者依然可以用着不同的工具,但是却是使用着统一的模型。

如果开发者使用.NET或者C++ 写的组件,它的API被存储在一个WinMD文件里,你可以在三种环境(原生、javascript和.NET)。即使你的组件是用C++ 写的,也不需要通过COM向外暴露,使用起来更像是一个面向对象的C++ API。

WinRT的底层定义了一套基本的类型和各种环境的映射,这是不是很像.NET环境里面对不同语言的支持哈。

异步API

微软认为,当给开发者一个使用同步和异步的API的选择的时候,开发者会选择简单的同步API,这在我们的.NET 编程实践中得到证明,.NET有很成熟的异步编程模型,还有特意为并行和异步处理而设计的F#,结果是什么呢,各位同学心里有数。

在WinRT中,微软一直遵循一个简单的规则:如果一个API预计耗时超过50毫秒,那么API就是异步的,也就是说API是异步的哦,这样就能确保Metro UI上的操作体验是最好的。

异步编程历来是一个繁琐的过程,回调和状态,还有异常处理等。为了简化这个过程,C#和VB也扩展了支持 F#-inspired await/async 模型,异步编程变成了欢乐之旅。

 (API接口异步访问这一点很不错。。。)


http://msdn.microsoft.com/en-us/library/windows/apps/hh441569(v=VS.85).aspx
  评论这张
 
阅读(251)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017