Dns 创建域的多语言版本的最佳方法是什么?

Dns 创建域的多语言版本的最佳方法是什么?,dns,dsl,Dns,Dsl,我想用多种语言创建一组域对象,以便针对不同的平台。我一直在寻找外部DSL作为为我的领域定义语言的一种方式,然后可能编写适配器,为我感兴趣的语言生成代码。这是解决这个问题的最好办法吗?或者只是维护项目的多个版本更简单?如果不了解您计划使用DSL的目的,就很难提供帮助 可移植性是您的主要问题吗? 要成功地针对这些不同的平台,您可能必须维护特定于plaftorm的层(生成或不生成) 如果您计划在DSL中编写整个应用程序,然后使用您自己的编译器将其转换为每个平台的可运行代码,那么这很可能是一个坏主意,过

我想用多种语言创建一组域对象,以便针对不同的平台。我一直在寻找外部DSL作为为我的领域定义语言的一种方式,然后可能编写适配器,为我感兴趣的语言生成代码。这是解决这个问题的最好办法吗?或者只是维护项目的多个版本更简单?

如果不了解您计划使用DSL的目的,就很难提供帮助

可移植性是您的主要问题吗? 要成功地针对这些不同的平台,您可能必须维护特定于plaftorm的层(生成或不生成)

如果您计划在DSL中编写整个应用程序,然后使用您自己的编译器将其转换为每个平台的可运行代码,那么这很可能是一个坏主意,过于复杂且工程过度

然而,如果您有一个定义良好的独立于平台的逻辑块,那么DSL是一个不错的选择。只需在每个目标平台上为它编写一个解释器(如果性能不重要,这也比生成代码更简单、更容易)。

我认为这可以满足您的要求

创建域的多语言版本的最佳方法是什么

这就是我的想法。引用维基百科:

模型驱动的体系结构方法 使用 平台无关模型(PIM)使用 适当的特定领域 语言(DSL)

然后,给出了一个平台定义 与CORBA相对应的模型(PDM), NET、Web等,PIM是 翻译成一个或多个 特定于平台的模型(PSM) 计算机可以运行。这需要 映射、变换和 也应该建模

PSM可能使用不同的域 特定语言(DSL),或 通用语言(GPL)类 Java、C#、PHP、Python等自动化工具 执行此翻译

根据域的复杂性和MDA工具的可用性,这可能是一个选项(实现成本较低)

另见
  • (一定要读这篇)

    • 很抱歉回答得太晚,但正如您提到C#是您的主要语言一样,这种几乎完全受支持的基于Visual Studio的技术正是您想要的

      您必须理解您想要用DSL抽象什么,但除此之外,多平台支持是微不足道的

      免责声明:这是我们的技术,但它是公开的,它完全解决了问题中提出的问题


      注意!请注意当前下载的“alpha”阶段,我建议您跳过压缩下载并获取最新的源代码。我在相对不远的将来更新更好的结构。查看“Production/Dev/AbstractionTemplate”解决方案中的“Context”实现。

      您使用的是哪种编程语言?我的主要语言是C#,但我可能也希望针对android和iphone(Java和Objective-C)。这些域对象是有行为还是只有数据?除了数据之外,它们还有行为。我们的想法是在DSL中创建定义良好的独立于平台的逻辑块,然后使用它生成或以某种方式创建不同语言的版本。你说的翻译是什么意思?是的,可移植性将是主要关注点。