基于Curl的RIA系统开发入门(五)

4. 用程序开发

 

4.1

    在开发Curl的应用程序时,如果是中小规模的程序,那么仅需建立几个源程序文件,然后将其内插到启动程序start.curl中即可。但是,如要进行大规模开发,则最好使用包。使用包的优点有:
① 程序可以分层同时开发;
② 组件可以共通化;
③ 可以进行压缩;
④ 可以根据需要动态调入(dynamic import)
⑤ 可以不按顺序定义变量和类。

    包可以由一个文件构成,也可以由多个文件构成。包的名字可以自由命名,如COM.CURL.XYZ等。包的声明如List 12所示。包文件的扩展名为.scurl。一般来说,包的定义文件名采用load.scurl。当然,根据需要可采用带意义的名字。此外,包还可以单独使用目录。List 12所示的包的名称是COM.QX.SIMPLE-GRID,它包含了3个文件,SimpleDataGrid.scurlSimpleDataGridPrint.scurlpopup_menus.scurl。和curl内置的标准包一样,也用import来调用。如想在调用包时不指定包的路径,那么需要事先将其定义到manifest文件中。Manifest文件的定义如List13所示,而其调用则如List14所示。通过pcurl化包,可以大幅地压缩源代码。一般来说,可以压缩到1/3。压缩率与源代码的书写风格有关。目前,没有公开的pcurl程序还原方法,所以,在进行pcurl化时需注意保留源代码。用List 15所示的简易程序便可对包pcurl化。Surge Lab(IDE)也有pcurl功能。Pcurl化的包的后缀名是.pcurl。包和应用程序(applet)不同,不会自动导入诸如浏览器接口,图形绘制以及IOcurl内置标准包。所以,开发者需要在包定义文件中,明确地导入相关的标准包和超级标准包。相反,应用程序(applet)则会默认地自动导入许多标准包和超级标准包。
List 12  包的定义文件load.scurl

{curl 6.0 package}

{package COM.QX.SIMPLE-GRID,

    version = "1.0",

    {compiler-directives

        stringent? = true,

        allow-implicit-open? = true,

        allow-any-calls? = true,

        allow-implicit-any-casts? = true,

        allow-slow-spliced-arguments? = true

    }

}

{include

        "SimpleDataGrid.scurl",

        "SimpleDataGridPrint.scurl",

        "popup_menus.scurl"

}

{import * from CURL.GUI.STANDARD}

{import * from CURL.GUI.CONTROLS}

{import * from COM.QX.MISC-TOOLS} 

 

List 13  manifest定义文件manifest.mcurl

{curl 6.0 manifest}

{manifest QX_PACKAGE_LOCATIONS,

    version = "1.0"

}

{component package COM.QX.CHART,

    location = "../chart/load.scurl"

}

{component package COM.QX.TREE,

    location = "../utility/tree/load.scurl"

}

{component package COM.QX.SIMPLE-GRID,

    location = "../sdg/load.scurl"

}

 

List 14  start.curl指定manifest

{curl 6.0 applet}

{curl-file-attributes character-encoding = "utf-8"}

{applet manifest = "./manifest/manifest.mcurl"}

{import * from COM.QX.COMMONS}

|| 以下为主要源程序

 

List 15  将pcurl化的程序

{curl 6.0 applet}

Start...

{let applet:Applet = {get-the-applet}}

{do

  {pcurl-file {url "xml/load.scurl"}}

  {applet.set-status "1/3"}

  {applet.flush}

  {pcurl-file {url "sdg/load.scurl"}}

  {applet.set-status "2/3"}

  {applet.flush}

  {pcurl-file {url "util/load.scurl"}}

  {applet.set-status "3/3"}

  {applet.flush}

}

End

 

4.2 程序的构建

基于Curl的RIA系统开发入门(五)_第1张图片

如图2所示,Curl程序的开发大体可以分为四层,即①数据层、②模型层、③表现(显示)层、④布局层。各层都有数据保持和表现的静态结构以及从数据到数据和从数据到表现的动态转换结构。各层是纵向连接处理,主要组件有回调和程序间的通信处理的。一般来说,各组件根据层和功能分成包进行开发。包的路径(location)一般是由manifest管理的。如果能完善地设计各组件之间的接口,那么就可以实现平行开发;如果能完善地设计并构建各组件,那么维护将变得更加简单,并且可以进行再利用。多数情况下,应用程序是由这些组件组成的,因此,图2中的组件被称为应用程序的基础组件。
 
 

你可能感兴趣的:(基于Curl的RIA系统开发入门(五))