zoukankan      html  css  js  c++  java
  • Ax系统的Label技术

          首先解释一下什么是Ax系统中的Label。起初我们的应用程序是为某个特定的国家的客户来编写的,而且这家客户只是在某个国家内进行交易,因此他们的语言是相同和单一的,在这样的前提下我们的应用程序只需要把客户能够理解的语言把系统的提示和界面上的信息显示出来即可。这样子就可以满足使用单一语言的客户了。接下来我们发现更多的特殊的客户需要我们的系统尤其是他们具有很多的跨国子公司,那么肯定在这些子公司中不会完全使用一种语言来***作系统,因此我们的应用程序需要把程序内信息改成相对应的语言给指定的国家的子公司,这样子我们需要把信息按照语言分成很多类然后只要设定一个开关就可以把不同的信息发布给需要那种语言的客户,也就是一个参数。现在假定我们有一些VC的编程经验马上就会联想起来它有一个String Table,它存放了很多的字符串用于交互信息的显示,并且作为应用程序的一种资源文件放置在VC的工程中,而且这些String table是以国家来分开的,也就是在不同国家和语言的应用程序版本中呈现的内容将不一样,更加方便了使用应用程序的客户使用。
    在Ax中的Label技术也是一样的目的,为了在符合多个国家个语言和习惯而分别设定了多种显示信息。它的Label ID是由
    '@'字符加上Layer名再加上一个从1(你可以设定从某个特定的数字)开始的数字来组成一个ID(比如:@SYS4678),后面再跟这个Label代表的信息内容(比如: sample info content)。你可以打开AxSYSen-us.ald来看到某一行:
    @SYS4678 sample info content,这就是Ax中label技术的物理文件结构。
    但是Label在Ax中的处理很有意思。它并非一般的交由物理文件(Labelfile)来简单的管理,而是与数据库中的syslabellog表一同来完成的。每当我们新增一个Labelfile后,系统不会自动创建这些Labelfile 的三个文件(.ald.alc.ali),而是在你实际在这个Labelfile中增加了Label才会让系统去创建那三个文件。并且在使用三层结构的时候需要在关闭AOS的时候,或者在多Client采用共享Appl使用两层结构时需要保证所有Client都退出,系统才会把你新建的Label添加到物理Labelfile中。当你把那三个文件删除后(有个时候需要关闭你的AOS才能删除.ali文件),系统中将看不到这个Labelfile了,而且你也不能再在其中增加有效的Label了(所谓有效的Label,也就是新增以后可以起作用的Label,因为删除后只要你能看到那个三个字符代表的Label标识,意味着你还是可以在其中新增Label,但把它放到系统中使用并不会起作用);这个时候并不用担心你的Label不见了,你还可以从菜单下的tools/development tools/label/label file wizard向导重新创建Labelfile,然后系统会重新把你刚才删除的Label重新创建成File来。在Ax4中我们的Label可以从tools/development tools/label/label log这个form上recreate,也就是重新创建(当然前提时这个label的labelfile已经被删除了),而这个功能在3.0下必须要有个前提就是label的状态必须是delete,可是我找了很多地方也不能把这个label的状态改为delete,除非你到SQLSERVER中去强行(呵呵,我并不建议温和的developer这么粗野)。由此发现它实现的原理是,到系统的数据库的syslabellog表中把记录好的label再写回到Labelfile上去,同时我们看到系统会把你在系统上创建所有的Label全部记录在这个表中。那么Ax Label技术的核心思想就是用Labelfile来保存实际被使用的Label而不是采用数据库来存储,这样的好处是可以把Label的处理负载分担到Ax体系结构中的文件服务器,而降低了对数据库服务器的负载压力。那么数据库中存储一张label log的表的目的是为了防止万一Labelfile错误或者丢失的情况下的一种数据冗余和备份的作用。
    因此我们在不小心误删除了Label file后,不用担心,它还是可以重新创建的。在Ax增加了这样的机制后尽管在***作上有些麻烦,但是它的确可以保证我们的Label数据的完整性和安全性。
    啊哈,现在我们可以放心使用它了。

  • 相关阅读:
    c# 24种设计模式
    .net如何处理高并发socket,建立高性能健壮的socket服务
    对于devexpress gridview 内插图加加进度条等的一点解读
    devexpress 如何读demo源码 总结
    DevExpress之TreeList节点绑定图片
    DevExpress LookUpEdit 下拉框基本操作
    dev NavBarControl控件
    DevExpress如何实现皮肤的添加及本地化
    vs2015未能计算子级
    c#networkcomms protobuf-net 文件加载出现问题
  • 原文地址:https://www.cnblogs.com/Fandyx/p/2761599.html
Copyright © 2011-2022 走看看