前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.NET for Visual FoxPro Developers(二)

.NET for Visual FoxPro Developers(二)

作者头像
firstxinjie
发布2024-12-06 14:46:08
发布2024-12-06 14:46:08
960
举报
文章被收录于专栏:X#(XSharp)X#(XSharp)

第一章 .NET简介

每隔六七年,微软在技术上都有一个巨大的飞跃。在 2002 年 2 月出现的是 .NET。什么是 .NET ?它对 Visual FoxPro 开发者意味着什么?这一章将介绍 .NET、.NET FrameWork及语言,并解释为什么针对你的软件开发项目要调研 .NET 。

.NET大张旗鼓的突然出现在软件开发领域,并伴随着来自微软的大量营销。在许多方面,.NET 和微软先前提供的技术背道而驰;在其他方面,它有着更多的演变,以至于是一场革命。

尽管存在一个崭新的 .NET 语言 C#,但是它也包括一个经过完全修改的 Visual Basic .NET,以及包括 COBOL 在内的其他许多语言的 .NET 化,Visual FoxPro 不是 .NET 语言,并且微软也不打算这么做。作为一个 Visual FoxPro 开发者,这对你意味着什么?为什么要使用 .NET 技术?什么时候使用?在哪里使用?这一章将告诉你这些问题的答案。

什么是 .NET?

最初,微软对 .NET 的定位是“一个建设、部署、运行、整和、强大的 Web 服务平台”。这样的定义使大多数人认为它只能建立 Web 应用程序。此外,因为 Web 服务流行的很慢,它导致了很多开发者的观望。你可以把这比喻为,仅仅因为Visual FoxPro 具有建立 Web 服务的能力而大力销售它——尽管你可以使用 VFP 来建立 Web 服务,但是这不是它的主要功能。

几个月后,微软承认了它市场营销的错误,并在 2002年 8月由比尔·盖茨提供了一个关于 .NET 的新的定义:“.NET 是用来连接信息、人、系统和设备的软件。”我想这个主题思想可能更好些,但是我并不确信它是足够清晰或者说足够明确的。我认为更好的解释是——至少从一个开发者的观点来说——.NET 是微软提供的针对建立桌面、移动以及基于 Web 应用的新的编程模型。

什么是.NET Framework?

当很多人提及 “.NET” 时,他们通常指的是 .NET Framework 。在 .NET Framework 中,实际上包含下面三种含义:

  • 一个统一标准的核心类库(统一编程类),用于应用程序的流水作业。
  • 提供用于建立ASP.NET 和Windows Forms 应用的类。
  • 公共语言运行库(Common Language Runtime,简称 CLR),你的.NET 程序执行的环境。

.NET Framework类库

在 .NET 之前,Windows API 是你访问 Windows 操作系统服务的基本方式。Windows API 已经发展了好多年,要学习和使用它是非常困难,它已经成为实现功能的泥潭。相反,.NET Framework 提供了一套类,它们具有属性、事件、方法,你可以通过它们用一种更具有逻辑性更直观的方式来访问同样的服务。

例如,.NET Framework 有一个 Environment 类,你可以使用它来得到和设置应用程序运行平台和其环境的信息。下面包含在 Environment 类的属性看上去很直观,并且是自解释的:

  • CurrentDirectory
  • MachineName
  • OSVersion
  • SystemDirectory
  • UserDomainName

你不需要像专家那样理解 Environment 类中下面的这些方法如何运行的:

  • GetCommandLineArgs
  • GetEnvironmentVariables
  • GetLogicalDrives

获取同样的信息,这种方式相比于去学习使用Windows API 是一个更快更容易的方式。

也就是说,针对 .NET 的最大学习曲线是 .NET Framework 类。这里有一个比较——Visual FoxPro 中,你可以在你的应用程序中使用不同的 35 个基类,包括文本框、组合框、表格、容器、自定义类、数据工作期等等。与此相反,.NET Framework 却拥有超过 2000 个基类!你需要领会哪些类对你是可用的,在特定的情况下使用哪些,这些是学习曲线所在。

然而,一个在 Visual FoxPro 和 .NET Framework 类之间公正的比较是这样的:在Visual FoxPro 中,你需要记忆超过 500 个函数、大约 430 个命令以及超过 75 个系统变量。相比而言,.NET Framework 类的结构可以使你更容易的找到你需要的功能。例如,在 Visual FoxPro 中,存在几十个用于字符串处理的命令。当你第一次学习Visual FoxPro 时,你可能学习了这些命令中很少的一部分(也许你到现在也没有完全掌握它们!)。

相反,.NET 执行所有这些字符串处理是通过 String 类的单独方法来进行。一旦你使用了 String 类,你就可以随心所欲的进行字符串处理。在 .NET Framework 类中,你会发现所有相似的不同类型的功能。

公共语言运行库(CLR)

除了一些关键性的差异外,公共语言运行库(CLR)和 Visual FoxPro 的运行库的功能相似。Visual FoxPro 是一个解释型语言;实际执行的是伪代码(pseudo-code,简写 p-code)。当它执行时,伪代码被 Visual FoxPro 运行库解释为机器代码(图1)。

图1. Visual FoxPro 运行库在运行时刻解释伪代码为机器代码

在 .NET 中,代码被编译两次——第一次在你开发用的机器上被编译为 MS中间语言(MS Intermediate Language,简写 MSIL),第二次是在运行时被 CLR 编译。正如你在 图2 中所见,无论源代码使用哪种语言书写,它也许是 C#,也许是Visual Basic .NET,也许是 C++,它都被编译为同样的中间语言(IL) 。通常情况下,你分发这个中间语言给最终用户。

图2. .NET 代码被编译两次。第一次为 MSIL ,第二次在运行时刻被 CLR 编译。

当 MSIL 在最终用户的机器上执行时,它通过一个 .NET Just-In-Time(JIT)编译器再次编译为机器代码。这种方法的好处是,特定 CPU 的 JIT 编译器可以在最终用户的机器上编译 MSIL 代码到机器代码。所以,如果编译代码的机器具有更新型的处理器和更先进的能力,那么 JIT 编译器就可以利用这些优势。

JIT 编译器仅在代码执行时编译代码。代码执行的结果被缓存起来直到应用程序结束,所以,当同样的代码被再次执行时并不需要再次编译。这和 Visual FoxPro 在运行时解释伪代码到机器代码是不同的(并且,不会将作为结果的机器代码像 .NET 那样缓存起来)。

未完待续......

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 .NET?
  • 什么是.NET Framework?
    • .NET Framework类库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档