第1章 简介
这份报告是在哥本哈根IT大学2004年的一个为期4周的项目的总结. 这个项目源自同微软商务解决方案Microsoft Business Solution(Vedbaek, Danmark)的合作. 它是一个初级项目, 作为一个硕士论文的准备, 目的是建立一个对领域特征语言X++详尽的理解.
X++是一个专门为Axapta产品所设计的面向对象语言, 包含处理数据库查询的内建结构. 这份报告主要任务是描述X++的语法和语义, 它的大纲是模仿Java Precisely(一个简明的Java编程语言的描述), 适合熟悉编程语言以及对语法语义和编译器解释器的关系有所了解的读者.
这些公开的章节将提供一些细节, 这些细节是关于研究问题域和Axapta架构的描述的方法论.如果熟悉Axapta系统将会增强理解X++中某些组成的效果. 在依次深入研究该语言每种结构之前, 我们会先概览一下X++的基本概念. 这些基本概念包括程序框图, 命名规则, 保留字, 数据类型, 类, 接口, 表达式和语句. 本报告将会以X++语言的建议和往后发展的可能性作为结束.
我们要向来自微软商务解决方案的Luis Mourâo, Laurent Ricci, Anna Lomova,
Peter Villadsen和Michael Fruergaard Pontoppidan表示感谢, 他们提供了支持,领导及提供环境. 同时也要感谢Peter Sestoft和Martin Elsman以及他们自始至终的帮助和合作.
第2章 目标定义和方法论
2.1 目标定义
本项目的目标是为将来的X++语言新的编译器的开发打个基础. 为了成功设计和实现一个已定制编程语言的编译器, 深入理解该语言的语法和语义是必要的. 这个问题域可分解成2部分:
X++的语法
X++的语义
2.2 方法论
贯穿本报告中的许多实例都是同Java语言来比较的. 这是因为Java语言在IT界是广为人知的, 并且是精心制定的. 同时X++和Java在许多特征上相似. 其它相关的编程语言在需要时会被提及.
我们可以在一个叫做Job的小程序中测试X++代码. 这些小程序是在Application Object Tree (AOT)下Jobs节点里创建, 并且类似于Java中执行static main方法. 这允许一些小段代码在这里测试分析. 这就是用来做测试和表述X++语言的方法论.
static void Job1(Args _args)
{
}
实例 2-1
第3章 Axapta
根据文档, Axapta是一款被设计成具有高度灵活性, 高性能和高度可扩展性的Enterprise Resource Planning (ERP)系统. 这一部分将简述Axapta的部署架构, 集成开发环境(IDE) Morphx, X++语言, 编译器和运行时环境.
3.1部署架构
Axapta系统的功能是由许多组件组成的. 因为这些组件部署在应用程序架构中的, 在讨论应用程序架构之前, 我们将依次了解它们.
关系数据库: 在表中存储所有商业数据. 一张表对应一种类型数据, 比如Customers, Suppliers, Products和Orders. (这通常成为SQL数据库)
应用程序对象数据(AOD): 这是一系列保存X++源代码, 对象bytecode和元数据的文件.
应用程序对象服务器(AOS): 这是Axapta的运行时环境. X++ bytecode将在AOS中执行.
应用程序对象树(AOT): 应用程序对象树为应用程序中包括开发工具等所有对象提供一个图形化的界面. 这些都是Axapta对象集合的子集: Classes,
Macros, Forms, Reports, Queries, Jobs, Menus和Tables.
这些要素大多数可部署在当前很流行的两种商业应用程序架构上. 它们分别被称作2-tier和3-tier. 我们将会简要概览一下这两种结构.
3.1.1 2层架构
2层架构有2个核心组件组成, 分别称为client和SQL database. 如下图所示的拓扑结构, 用户接口和应用程序逻辑在同一平台上. Client维护X++ bytecode的运行时环境(AOS)和应用程序对象数据(AOD). 所有计算都在client端. Client端直接在SQL Database里查找更新数据.
SQL database server
应用程序: AOS 位于client端
3.1.2 3层架构
3层架构将应用程序逻辑拆分开来单独做成一层. AOS从而成为一个执行X++ bytecode服务器. 应用程序逻辑由AOS提供给所有用户. SQL database保持不变. Client在这种情况下可再分为2种: "瘦"客户端和"胖"客户端.
"瘦"客户端(Thin Clients): 有关应用程序对象的用户界面, 比如窗体,和报表, 都运行在客户端机器上.
"胖"客户端(Fat Clients): AOS和AOD运行在本地机器. 其他的应用程序对象, 例如queries, classes, 和其它应用程序逻辑可在客户端机器上执行. ("胖"客户端又被称作Intelligent Axapta Clients (IAC))
"胖"客户端有2个运行时环境: server AOS (AOSserver )和local AOS (AOSclient ). X++语言提供指明bytecode应在哪一层执行的结构. 程序员所写X++源代码会保存在AODclient文件中, 它们必须和AOSserver同步, 以保证该应用程序逻辑能被其他用户使用. 综上所述, Axapta的部署结构的类型对应用程序编程者来说是显而易见的.