在 .NET 中,依靠命名空间(namespaces)来避免类名的重复。命名空间是一种命名机制,它允许你针对你的类有逻辑的予以声明。例如,在 .NET Framework 中,存在像下面这样的命名空间:
一开始的时候,许多 Visual FoxPro 开发者认为命名空间等同于 VFP 的类库,但是它们之间真的是有很大的不同。一个 VFP 类库是控制一个或多个类的物理容器。而一个 .NET 命名空间却和类的物理位置无关——它纯粹是一个将类区别开来的逻辑名称。
命名空间的组成通常是从左至右、先常规后具体的方式。这在概念上和生物学的分类方法很相似。例如,图 9 显示了红狐的分类层次。国家、门、亚门等等,每个层次都是从常规到特定的种类。这样的约定可以对整个生物学进行分类。
图9. 命名空间允许你像生物学分类方法那样对你的类进行分类。
微软建议你用以下的方式来定义你的命名空间:命名空间的第一部分是你的公司名,第二部分是你的产品名,第三部分是特定的类的分类名,如此等等。例如,我定义了我公司的所有商业对象都隶属于“OakLeaf.MM.Business”。Oak Leaf 是我公司的名字,MM 是产品名(Mere Mortals Framework),Business 指商业对象类。
关于如何指派类到一个命名空间,请参看第3章“C# 入门”和第4 章“Visual Basic .NET 入门”。
正如这里所说的一样,有三种主要的 .NET 语言你可以选择:Visual Basic .NET、Visual C# .NET、Visual C++ .NET。由于大多数 Visual FoxPro 开发者选择 Visual Basic .NET 或 Visual C# .NET 作为他们的软件开发语言,所以这本书将着重于这两种语言,分别提供示例,以便帮助你作出适合自己的决定。
尽管“Visual C# .NET”是语言的“官方”名称,但是你也经常看到它被简单的称呼为“C#”(读音为 C sharp),在本书中我也将使用这个约定。
C# 是针对 .NET 所写的全新的语言,并且它也带来很多振奋人心的东西。事实上,微软使用它创建了 .NET Framework 基类。截止本书为止,已经有很多的 Visual FoxPro 开发者选择 C# 作为学习 .NET 的开发语言。
因为 C# 是“C”家族之中的一员,它的语法和 C++ 很相似,但是它更多的更像 Java。C# 也被用来创建Windows Forms、Web Form 应用、XML Web 服务、控制台应用程序以及类库等等,更重要的是,C# 在设计时结合了 C 和 C++ 的能力和控制,并结合了Visual Basic 的易用性来获得更高的生产力。关于 C# 的详细资料,请参看第3章“C# 入门”。
(略)
微软已经提出了一个针对 .NET 语言的命名规范。他们希望更多的开发者可以接受这个规范,以便于在开发人员之间增强代码的可读性。一个令很多开发者感到惊讶的规定是停止使用匈牙利命名法。
你可以在下面的站点找到正式的命名规范:
http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconnamingguidelines.asp
(翻译者注:最新版的中文版命名规范:
https://learn.microsoft.com/zh-cn/dotnet/standard/design-guidelines/naming-guidelines?redirectedfrom=MSDN)
在这一章,在一个更高的层次上给出创建一个 .NET 应用的开发步骤是恰当的。从全局角度讲,全书的每一章都和开发步骤有关联。
在你开始书写代码之前,你需要收集针对应用的需求。这些年以来,许多的开发商都开始在为这一目标使用统一建模语言(Unified Modeling Language,简写 UML)和统一软件过程(Rational Unified Process,简写 RUP)。微软已经认可了这种分析的重要性,并计划通过在他们的 Visio diagramming tool 中增加 UML diagrams 来使 Visio 和 Visual Studio .NET 更好的协同工作。
在本节中我使用的 UML 数据你或许并不熟悉。要学习关于统一建模语言的知识,请查阅书籍,例如由 Addison-Wesley 所著的《The Unified Modeling Language User Guide》。
在调查完需求后,你需要建立一个开发计划。这包括确定项目周期以及组件的实现顺序。如果你使用 UML ,你就可以更进一步的分析、设计和实施。
在实现设计期间,你可以使用 cases 并针对每个使用需求建立商业对象。这意味着在商业对象类中增加方法以包含大多数的应用逻辑。这种方法和现在许多 Visual FoxPro 开发者使用的方法大不相同——他们将大多数应用逻辑放置于用户界面。然而,使用商业对象可以使你的应用程序更灵活、更易于伸缩、更具有可维护性。
通常情况下,你需要在 C# 或 VB.NET 中创建一个类库项目来包含你的商业对象。这个项目可以被编译为一个程序集以便其他应用程序可以使用它(Windows Forms、Web Forms、Web 服务等等)。
关于设计实现商业对象的更多信息,请参看第8章“.NET 商业对象”。
与设计商业对象一样,你要开始考虑应用的数据模型。即使我在设计一个C/S架构的应用时,我也经常发现在 Visual FoxPro 中创建原型表是一个伟大的“概念验证”技术。因为 Visual FoxPro 开发者倾向于从数据的角度来看这个世界,把数据放入表中可以帮助他们更快的找到对象模型和用其他方法无法找到的缺陷。
最终,在你真正开始使用所选择的语言创建商业对象前,你要完成和建模相关的工作。
关于在 .NET 应用中访问数据的更多信息,请参看第7章“使用 ADO.NET 进行数据访问”。
如果你正在创建一个 Windows Forms 或者是 Web Forms 应用,你就需要去设计实现用户界面。你可以使用 Visual Studio .NET 来创建新的 Windows Forms 或 Web Forms ,并在项目中增加一个到商业对象库的引用,以便你的用户界面可以使用这些类。
正如前面提到的一样,你并不需要在你的界面中放置应用逻辑。把你的用户界面当做你的应用的“skin”,它可以很容易的使用其他的skin 来替换。
你可以在你的用户界面中放置一些代码来实例化商业对象,并调用它们的方法去完成像检索数据、操作和保存数据、进行计算等等这些服务。
关于建立应用程序用户界面的更多信息,请参看第9章“建立 .NET WinForm 应用程序”和第10章“使用 ASP.NET 建立 Web 应用”。
如果你正在创建一个 XML Web 服务,那么你可以在 Visual Studio .NET 中创建一个新的 Web 服务项目。然后,你可以在 Web 服务项目中增加对商业对象的引用,以便 Web 服务可以使用这些类。
关于建立 XML Web 服务的更多信息,请参看第12章“XML Web 服务”。
微软正在 .NET 上下赌注。他们已经在 .NET 上投入了大量的资源,并取得了一些非常令人深刻的技术。在技术上它是一个巨大的转变,并引起了所有的关注——包括 Visual FoxPro 开发者。本书的其余部分将帮助你做出明智的决定——为什么要使用 .NET?什么时候使用?在哪里使用它进行你的软件开发?
未完待续......