c#

位置:IT落伍者 >> c# >> 浏览文章

.NET Compact Framework概述


发布日期:2019年02月08日
 
.NET Compact Framework概述

NET Compact Framework 是 NET Framework 全功能版的子集它实现了约 % 的 NET Framework 全功能版类库还包含特定于移动开发和嵌入式开发的功能和类

本文并没有囊括两个框架间的所有差异而是列出开发应用程序所需的一些重要差异

应用程序域

NET Compact Framework 目前不支持将程序集加载到非特定于域的代码区域中供多个 NET Compact Framework 中的应用程序域 使用

数组

尽管某些语言支持不为零的数组下界但是公共语言运行库不提供这样支持当第一个元素不是 它将引发 MissingMethodException

ASPNET

NET Compact Framework 主要是胖客户端平台不提供 ASPNET 支持要开发用于移动设备的网页可以使用 ASPNET 移动 Web 控件要开发用于个人计算机或 Web 服务提供程序的网页请参见 ASPNET 文档

程序集和文件格式

这两个 Framework 的应用程序都使用程序集这两个 Framework 都访问可移植可执行 (PE) 文件这类文件包含 Microsoft 中间语言 (MSIL) 和定义 NET Framework 应用程序的元数据PE 文件可以引用由其他程序集文件定义和共享的编程命名空间

有关更多信息请参见与 NET Framework 全功能版的二进制兼容性

程序集和全局程序集缓存

NET Compact Framework 目前不支持多模块程序集但确实支持附属程序集

类和类型

NET Compact Framework 支持 NET Framework 类库的一个子集此子集适合于旨在资源受限制的设备上运行的应用程序并且在语义上与 NET Framework 中的同名类兼容

有关确定 NET Compact Framework 支持内容的信息请参见如何使用 NET Compact Framework 的类库

COM Interop

NET Compact Framework 版支持 COM interop该版本还具有增强的封送功能有关更多信息请参见 NET Compact Framework 中的互操作性

公共语言运行库

这两个 Framework 中的公共语言运行库都具有托管代码执行实时 (JIT) 代码编译和垃圾回收的优点它们支持公共语言规范 (CLS)

这两个 Framework 都有内置的基元类型以及其他在生成应用程序时可以使用和派生新类型的类型

NET Compact Framework 的公共语言运行库的大小大约是 NET Framework 全功能版公共语言运行库的 %

控件

NET Compact Framework 支持 NET Framework 全功能版中的大部分 Windows 窗体控件并且包含特定于 NET Compact Framework 的控件

Windows 窗体控是专门为 NET Compact Framework 生成的有关更多信息请参见NET Compact Framework 中的控件

当前目录

Windows CE 操作系统中不存在当前目录的功能因此 NET Compact Framework 不支持 GetCurrentDirectory 和 SetCurrentDirectory 方法

NET Compact Framework 支持 ProcessStartInfo 的 WorkingDirectory 属性但是后续启动和文件加载时运行的可执行文件不保留该属性的上下文

数据

NET Compact Framework 提供 ADONET 的子集实现并且包含 SQL Server Mobile 数据提供程序SystemDataOleDb 命名空间不受支持

有关数据支持的更多信息请参见数据访问和 XML 支持

数据类型和浮点精度

NET Compact Framework 不支持 MidpointRounding 枚举

在除法运算中如果除数非常大或是最大浮点值或者除数非常小或是最小浮点值则运算返回零而不是正确的计算结果

MIPS 平台不支持二进制浮点算术标准规范指定的完全精度可能会导致不可预知的结果出于性能考虑NET Compact Framework 不为此平台提供浮点模拟功能

在命令提示符处进行调试

NET Compact Framework 不支持 NET Framework 版提供的新的 NET Framework 命令行调试器 (MDbgexe)两个 Framework 的 版都否决了旧的 CLR 调试器 (DbgCLRexe)

部署应用程序

部署非常容易只需通过以下几种方式之一将程序集复制到目标设备即可使用桌面计算机的电缆连接或红外端口连接使用无线 Internet 或 Intranet 连接在 Microsoft Visual Studio 可在调试时直接部署到设备

诊断跟蹤

NET Compact Framework 不支持用于跟蹤的配置文件但您可以使用性能计数器有关更多信息请参见性能和诊断

已释放对象

NET Framework 全功能版不保证对已释放对象的属性或方法的访问总能成功但是NET Framework 中访问 Text 之类的某些属性通常确实能够成功由于 NET Framework 与 NET Compact Framework 之间的实现差异NET Compact Framework 中访问已释放对象的方法或属性差不多总是失败

编码和本地化

本地化或全球化支持(如适合于区域设置的日期格式和排序表)尽可能服从基础操作系统以实现兼容性和精简高效

NET Compact Framework 依赖于操作系统进行数据排序因此对于某些区域性有可能出现意外的排序结果

NET Compact Framework 不支持每个线程一个 CurrentUICulture 设置

有关全球化支持的更多信息请参见 NET Compact Framework 中的编码和本地化

事件

NET Compact Framework 支持 GotFocus 和 LostFocus 事件但不支持 Activated 和 Deactivated 事件异常说明字符串

NET Compact Framework 在一个单独的 DLL (SystemSRDLL) 中提供异常错误消息字符串从而可以节省内存

也可以提供适合其他区域性的异常字符串使应用程序得以本地化

文件名和路径

Windows CE 将未指定路径信息的文件名解析为位于设备的根目录下而不是在应用程序目录下

为了确保操作成功请指定绝对路径信息

NET Compact Framework 处理以 file:// 方案为前缀的 URI 字符串的方式与 NET Framework 全功能版不同相对的 file://myfile 解析为 \\myfile使用 file:///myfile(三个斜槓)将解析为根目录中的 \myfile

可通过 Version 获取程序集的版本但其支持依赖于设备制造商并且无法保证

若要获取包含应用程序的目录的名称请参见如何获取应用程序目录

高分辨率

NET Compact Framework 版中将在 Visual Studio 项目中自动处理 DPI 分辨率有关高分辨率的更多信息请参见如何处理方向和分辨率更改

输入/输出 (I/O)

由于设备操作系统的差异I/O 模型存在约束和限制……NET Compact Framework 不提供文件更改通知

由于设备 I/O 在 RAM 中发生因此无法设置或访问文件和目录属性

安装和 CAB 文件

可以使用 CAB 文件并创建 MSI 应用程序来分发应用程序

语言

NET Compact Framework 支持使用 Visual Basic 和 Visual C# 进行开发但是目前不支持 C++

Math

并不是所有的 Math 方法在所有的设备平台上都可以得到支持但为了兼容起见将这些方法包括在 API 中

内存

NET Compact Framework 经过了优化特别适合于用电池供电的系统并且避免了高强度地使用 RAM 和 CPU 周期有关节省内存的更多信息请参见设备内存管理和如何提高性能

网络

NET Compact Framework 提供了用于建立红外连接的红外数据协会(IrDA) 类以及用于为设备的 HTTP 请求提供服务的 Web 侦听类这些类仅在 NET Compact Framework 中可用有关更多信息请参见网络和连接

性能测试

NET Compact Framework 不支持代码分析或系统监视器中的 Perfmonexe 文件但是您可以使用性能计数器请参见

性能和诊断了解更多信息

代理代码

NET Compact Framework 不支持所有由 Web 服务描述语言工具 (Wsdlexe) 生成的代码若要确定不支持哪些代码请参见如何使用 Wsdlexe 生成的代理

反射

NET Compact Framework 不支持 SystemReflectionEmit 命名空间

在比较 MethodInfoFieldInfoPropertyInfoEventInfoMemberInfoMethodBaseConstructorInfo 和 ParameterInfo 等反射对象时NET Compact Framework 目前不支持相等运算符 (==)作为替代方法请参见实现 Equals 方法

远程处理

NET Compact Framework 不支持远程处理可以为其他解决方案使用 NET Compact Framework 中的消息队列

安全消息传递

NET Compact Framework 不支持使用 HTTPS 的客户端证书和身份验证使用基本身份验证

安全性

NET Compact Framework 中的安全中介绍了一些重要的安全性差异和注意事项

序列化

出于大小和性能方面的考虑NET Compact Framework 不支持使用 BinaryFormatter 的二进制序列化和使用 SoapFormatter 的 SOAP 序列化

但是对于在 XML Web services 中使用 SOAP 传输对象数据提供序列化支持并且支持将数据集序列化为 XML

大小

NET Compact Framework 的大小是 Net Framework 全功能版可再发行包的 %由于 Windows CE 文件系统压缩因此在磁盘上的大小要小 %

套接字

不是所有的套接字选项都受支持有关更多信息请参见套接字编程

字符串处理正则表达式

使用 NET Compact Framework 的正则表达式的应用程序与使用 NET Framework 全功能版的正则表达式的应用程序的二进制代码不兼容但它们的源代码兼容

线程

一个 NET Compact Framework 应用程序最多可以创建四个线程

主应用程序线程

用来控制可由系统或应用程序安排的各种时间段计时器和超时的线程用来跟蹤活动 TCP/IP 接口更改的线程(模拟 Windows XP 中提供而 Windows CE 中未提供的介质检测行为)

用来运行对象终结器的线程在对第一个可终结对象进行垃圾回收时创建该线程

有关线程处理支持的更多信息请参见 NET Compact Framework 中的线程处理

时间间隔

Now 返回的值只精确到秒而不是毫秒可以使用 TickCount 属性获得更精确的度量值

计时器

不支持 SystemTimersTimer 的 Start 和 Stop 方法但是将 SystemWindowsFormsTimer 的 Enabled 属性设置为 true 或 false可以启动和停止计时

Visual Basic My

NET Compact Framework 支持 Visual Basic 的 My 功能(请参见使用 My 开发)但下列 My 对象除外

MyApplication MyComputer MyUser MySettings

Web 服务

Web 服务客户端直接运行 wsdlexe 生成的程序集

请不要使用 localhost 在设备上创建 Web 服务因为 localhost 是指运行应用程序的设备即该设备本身应使用计算机名称或其 IP 地址

XML

出于大小方面的考虑NET Compact Framework 不支持 XML 架构验证它确实支持 XML 文档对象模型 (DOM)有关更多信息请参见数据访问和 XML 支持

上一篇:C# 实现ListBox的Item自定义高度

下一篇:.Net Framework 2.0中的事务处理