五一,五一之后
小气的神
2002.05.01
Article Type: Overview
难度等级:2/9
版本:1.48
五一是劳动节,可以休假,所以有时间做一些你平时想做而没有做的事情,比如下面我叙述的这一件。
Microsoft大约在3周之前发布了Microsoft Smart Device Extensions Beta 1 (SDE), SDE有一些不错的特性,不过更多的开发人员会关注两个方面:功能和.NET Compact Framework。
功能上它提供了如何使用dotNET技术开发嵌入式设备的一个解决方案,使得嵌入式开发人员在原来的Microsoft eMbedded Visual Tools 3.0之外有另外的开发工具和平台,同时使得更多的其他领域的开发人员对自己的应用向嵌入式开发转移方面更加平滑和经济。SDE是集成在 Visual Studio.NET (VS.NET)中的,那么可以预见未来的eMbedded Visual Tools的发展是有些扑朔迷离的,SDE Beta 1只支持使用Visual Basic.NET (VB.NET) 和 Visual C# (C#)来建立Smart Device Project ,至于C++的用户目前还无法在VS.NET中使用SDE特性。看来Microsoft要将dotNET作为一个和Windows、MSN一样的品牌,深深印在你的脑海中。在Gates的眼中dotNET是一个有很多Value的技术平台,在Steve Ballmer的头脑中dotNET一定要是一个赚钱的品牌。dotNET要让你看得见、听得到,摸得着、享受得了;它会无时无刻、无所不在、无所不能。(后面两句纯属杜撰但版权所有haha)
第二个是.NET Compact Framework,dotNET一出世,就有听闻.NET Compact Framework的概念,相信SDE使得它真正提出成为现实,我一直认为.NET Compact Framework比SDE本身更重要,它属于一种概念,这将允许在未来有更多其他厂商产生自己的平台,只要它符合.NET Compact Framework的规范和Microsoft某种的认证。值得一提的是.NET Compact Framework 的大小,根据SDE文档上的说明:The common language runtime for the .NET Compact Framework is approximately 12 percent the size of the full .NET Framework runtime. 现在dotNET 的运行库大约是22M(dotnetfx.exe), 22M的12%,应该说很小了。在后面我的例子中,最后打包的安装文件是15K左右,但这里面不包括任何运行库文件,在CompactFrameworkSDK\v1.0.3300\Windows CE\wce400 目录中发现的netcf.all.wce4.x86.cab是2M左右,如果加上SQL Server CE的开发库和VS.NET安装支持等文件我想最后的.NET Compact Framework大小是在3~5M左右。和以前我猜想的结果相似:比Java的运行库小,比VB的运行库大。12%,看得出是一个不断努力才能达到的指标:)
至于.NET Compact Framework和Full .NET Framework之间的异同我根据SDE的文档列了一个表,由于Beta版本未来可能会有所变化。(详细内容见文档不保证个人理解有误)
比较 | 特性 | 说明 |
相同点 | Common language runtime | 都是” managed code”执行,同样的JIT,垃圾收集机制,全面支持CLS |
Assemblies and file formats | 都使用的assemblies,有相同的PE格式和MSIL,但是两种平台下二进制不兼容,由于编译后遵循各自目标平台的存储介质要求(strong binding rules.),所以一个Framework下的执行文件不能到另一个Framework下执行,需要重新编译 | |
Multiple language support | Cross-language interoperability 是内建的,目前最先支持Visual C# and Visual Basic .NET. | |
Common type system | 两者是相同的,并且都支持从内建的原始类型进行继承,进行扩展。 | |
Threading model | 两者是相同的线程模型,支持多线程。 | |
Standards Support | 核心的技术实现都遵循 ECMA 标准 | |
不同点 | Application domains | 不支持 Full Framework中可以将assemblies装载到” domain-neutral”代码区从而被其它application domains使用 |
ASP.NET | 不提供ASP.NET的支持,对于mobile devices则使用ASP.NET mobile Web controls | |
Classes | 支持Full Framework的一个子集,并且有相同的命名。但具体的数目目前还没有提供文档说明。 | |
COM interop and callback functions | 只支持系统平台下原始DLL的交互调用(P/Invoke),不支持使用COM interop。意味着不能直接和COM交互。但如果原始DLL调用COM,则它变相的和COM交互。 | |
Data | 不支持System.Data.OleDb 支持ADO.NET并包括SQL Server CE的一个子集 | |
Data Types | 对于临界(极大或极小)的除法运算会返回不正确结果。 支持Math.Round(double a)但不支持两个参数的Round | |
Delegates | 不支持asynchronous delegates | |
Deploying applications | 简单的Copy方式。使用对应目标平台的cable包和Infrared port传送部署。 | |
Exception description strings | The .NET Compact Framework provides exception strings as a setup option for conserving space on the device. | |
Globalization | 支持Globalization ,但依赖目标的操作系统 | |
Input/output (I/O) | Because of differences in device operating systems, there are constraints and restrictions on the I/O model. 不支持 file change notifications. | |
Memory | 针对battery-powered systems进行了优化和设计。 | |
Networking | 独特的Infrared Data Association (IrDA) classes 可以用它和Web listening classes处理HTTP请求。 | |
Performance testing | 不支持code profiling和Perfmon.exe,针对.NET Compact Framework特定用途的performance tools已经开始开发了 | |
Reflection | You can shift up to 64 bits using the OpCodes.Shl field. Any larger specification is rest to 64. | |
Security | There are several important security differences and considerations. | |
Serialization | 不支持BinaryFormatter or SoapFormatter进行序列化。但支持在XML Web services中使用SOAP序列化传送对象数据。 | |
String manipulations, Regular Expressions | 可以使用System.Text.RegularExpressions.dll但应用程序仍然是二进制不兼容的,不同Framework需要重新编译。 | |
Windows Forms and graphics | 这部分是专门设计的,和Full Framework有些不同。 SDE安装文件中有具体的说明,并且列举了一些。 | |
XML | 仅支持DOM 不支持XML文档的 Schema验证和XPath查询 |
类库方面目前没有具体的清单和对应说明,可以明确的是,有关Infrared和SQL Server CE的类库是新增的,Full Framework中还没有。
Microsoft的Beta1软件是著名的“玩具性”,不过近来的稳定性都不错。关于SDE依然还是有些有趣的东东和技巧,我先说明一些,然后我们看一个例子:
1. SDE不支持Win98 ,WinME,最低是Windows 2000 Pro SP2起。
2. RTM5 之后的VS.NET都可以了,如果没有PocketPC机器那么不用安装ActiveSync 3.5
3. 内存大量的内存,Window2000要256M以上,XP就在256M+128M另外模拟器需要再加64M
4. 安装方法十分古怪,如果你安装过PDC版本的SDE,那么连VS.NET都要Uninstall,不要挑战这个规则,因为挑战者最后格式化了硬盘,连操作系统都重装。
5. 糟糕的是安装之后,因为SDE会覆盖Full Framework的若干文件,目前没有任何保护措施,这意味着如果你Uninstall SDE,那么VS.NET会被破坏,你需要先uninstall VS.NET再重新Install VS.NET ,目前Microsoft采用事先征询的方式,你先同意这个规则再安装SDE
6. 安装完毕,你原来VS.NET的工具栏可能会紊乱,不要害怕。先关闭VS.NET再启动一次VS.NET。另外也不能直接看见SDE的帮助文档,需要按照Readme文档的说明再设置一次,然后再重新启动VS.NET一次,如果工具条在启动并提示安装新的帮助文件成功之后又紊乱了,那么不要害怕,再重新启动一次VS.NET
7. 没有PocketPC机器的一定会使用Emulator,那么注意三点,一:如果你的内存或CPU不够大那么呢要有足够的耐心,等待它出现美丽的彩色画面为止,开始我一直以为安装失败。二:按文档说明建立一个Microsoft Loopback Adapter网络连接,如果你在局域网内就不用了,Emulator似乎要检查网络连接,试图和它的客户(VS.NET)建立一个TCP的端口,机器最好指定一个固定的IP。三是:机器有一个串口或并口要可以用,不然Emulator可以启动,但在最后运行看结果时会失败,也就是说什么也程序结果也看不到。
好吧,开始一个例子测试一下吧,很不好意思有手误,first被输入成Frist , 这不是第一次了,上一次我将boss错输成bose,结果稍稍有些不同:)
目前只有C#和VB.NET有这个选项,然后选择一个Windows的应用程序吧(Microsoft号称这是SDE的强项)
如果你熟悉WinForm的编程,那么几乎没什么不同,就是Form的大小有限制。所以你看到控件的排列上有些不同:
之后如果编译通过,那么就是最振奋人心的时刻了,现在要把你的Project部署到PocketPC机器或PocketPC 的Emulator上,如果你使用Emulator那么建议你先选择Tools->Options->Device Extensions->Devices然后选择Transport的Configure选项,看下面的对话框,确定你有一个空闲的端口,最好是有一个可以用的串口。
然后关闭窗口,再选择Connection,也就是预先连接一次,往往这次成功了才是OK的,第一次连通的过程是痛苦的,你唯一可以看得是VS.NET下面的状态栏,会有很小的字表示正在建立连接,要等很久,只到看到Devices Ready你就可以大松一口气,注意这小字几乎一闪就过,恢复成VS.NET的状态栏。如果是Failed那么就惨了,它不会给任何提示或失败原因。我开始就忽略了串口,结果为了连通花了近两个小时,几近绝望差点Uninstall,想想还要Uninstall VS.NET还是坚持下来了,所以先祝你好运。
结果象下面这样,目前还不支持中文(可能象上面表格中所的,取决于OS),我把标签都改了。
SDE依然给我们带来了许多振奋的信息和东东,开始我很难理解会舍弃Full Framework来在这个局限性比较大的环境下编程,经过实践之后发现它依然有许多不同的特性和体验,当然如果有一部PocketPC机器那就更好了,感觉会更真实。任何嵌入开发人员都可以从SDE获得一些和以前不同的开发体验,另外需要澄清的是任何Full Framework的开发人员不要简单的以为有了SDE,那么嵌入式开发就极其简单了,只用将原来的程序重新编译一下就可以运行了。了解之间的不同做到最平滑的移植(当然如果你有这样的应用或需求)对每个开发人员仍然是一个挑战。不过发现和体验这些都需要花费你不少的时间,所以它适合你在这个五一假期来做(不仅是SDE,可以是任何平时你想做而借口没有时间做的事情),你可以有充分的时间决定是否要体验一下,如果不满意,可以重新安装你的VS.NET:)
好了,最后感谢淡蓝蓝,如果不是他我现在为争取获得SDE而经历Microsoft迷幻而优雅的Beta Test申请程序。很喜欢他的网站,特别是他FTP中的那句话:来自热血、来自热血、来自热血、值得信任。它让我想起五一之后的五四青年节,烧毁赵家楼,向北洋军阀宣战是需要勇气和热血的,所以五一之后是五四,这个值得我们缅怀和敬慕能够激起许多埋藏已久积极而跳跃情感思绪的中国青年节。
特别:
本文CSDN署名首发,转载或改编请注明作者和出处。如果有问题,请发电子邮件给[email protected]
以上文字和图片涉及其他人的隐私和个人权利,所有文字和图片只用于内部交流,不作任何新闻发表和商业用途。
本文地址:http://com.8s8s.com/it/it46033.htm