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

时间:2010-07-09 19:00:32

标签: dns dsl

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

4 个答案:

答案 0 :(得分:2)

我认为Apache Thrift可以满足您的要求。

答案 1 :(得分:1)

对于迟到的回答感到抱歉,但是当你提到C#是你的主要语言时,这个几乎完全支持的基于Visual Studio的技术正是你所寻找的。

您必须了解您想要使用DSL进行抽象的内容,但多平台支持在此基础上是微不足道的。

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

http://abstraction.codeplex.com/

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

答案 2 :(得分:0)

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

便携性是您的主要问题吗? 为了成功地针对这些不同的平台,您可能必须维护特定于plaftorm的层(生成与否)。

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

但是,如果你有一个明确定义的平台无关逻辑块,那么DSL就是一个不错的选择。只需在每个目标平台上为它编写一个解释器(假设性能不重要,这比生成代码更简单,更容易)。

答案 3 :(得分:0)

  

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

这是({?}}的想法。从维基百科引用Model Driven Architecture (MDA)

  

模型驱动架构方法   使用a定义系统功能   平台无关模型(PIM)使用   适当的域特定   语言(DSL)。

     

然后,给出一个平台定义   模型(PDM)对应CORBA,   PIM,Web等,PIM就是   翻译成一个或多个   特定于平台的模型(PSM)   电脑可以运行。这需要   映射和转换   也应该建模。

     

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

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

另见