zoukankan      html  css  js  c++  java
  • 【Dynamics AX 6】axmodel新特性

    这里有篇文章介绍了Dynamics AX 6在MorphX上的又一个新特性:axmodel。axmodel其实是一个layer下的另一种应用程序组织形式,在6.0以前,客户自定义的开发都是在一个特定的layer下进行的,这样会产生一些问题,比如我从两个ISV购买了两套产品,如果是直接使用AOD文件,我没办法将两个产品同时应用在bus层,而只能逐个导入XPO。那么今后如果某个ISV的产品有了升级,我又要在这两套产品上进行整合,所有的Application Objects被塞到同一个AOD文件中。

    现在AX 6.0引入了axmodel的概念,使得一个layer可以包括多个model,每个应用都对应一个model,于是就可以针对model进行import、export、update等操作,这样的话,我可以以xcopy的方式,将两个不同的model装在同一个layer下,而且可以分开管理,非常方便。

    axmodel的具体形式就是文件,这感觉跟AOD文件差不多。与AOD不同的是,axmodel文件是可以自描述的,它包含model的meta data,比如名称、描述、版本、供应商等信息,这使得ISV发布各自的应用程序变得非常方便。不仅如此,axmodel支持数字签名,这意味着ISV可以使用.NET下的强名称工具sn.exe生成密钥对,然后使用AxUtil.exe程序对axmodel进行签名,确保AX6在import这个axmodel的时候,能够相信它是来自可信任的ISV的,而没有被第三方修改过。

    axmodel同样也有缺陷,这也是layer下所特有的缺陷,即同一个object在某个layer下只能有一个版本。比方说,如果你的应用程序修改了CustTable数据表,而在导入另一个axmodel的时候,发现它的更改与你的修改有冲突,此时你就需要作出选择,是创建一个新的axmodel以保存这些冲突的对象?还是直接overwrite?或者是直接discard?That's up to you

    最后说说我的想法。我感觉axmodel和layer的关系,有点像.NET开发中assembly和solution的关系。axmodel和assembly都可以是单独的应用,都可以支持签名等安全特性。所不同的是,.NET开发中使用命名空间解决同名问题,而axmodel则不得不沿袭原本的Prefix/Suffix的方式来解决这个问题。

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/daxnet/p/1686955.html
Copyright © 2011-2022 走看看