【发布时间】:2011-07-16 20:11:42
【问题描述】:
在我多年来完成的所有项目中,我从未遇到过这样的要求,尽管在纸面上看起来很容易:为许多知名 CMS 编写插件。
显然,每个插件系统(或扩展系统)都是不同的,这需要通过适配器模式进行特定的桥接代码。但是核心应该写一次。我不希望 WordPress 用户使用 PHP-Java 桥接器,也不希望 DotNetNuke 用户使用 .NET-Native 桥接器(尽管这更容易构思)。
在我看来,核心应该可以在涵盖大多数 CMS 系统的三个主要领域中编译:
- 本机、中间语言可以是 C 或 C++。 Target 可用作 PHP 扩展。
- 基于 .NET 的语言的 MSIL/CIL
- 基于 Java 的系统的 Java 字节码
C# 和 Java 可以很好地相互转换,但 C 和 C# 更难。最终,最好添加其他目标,以免强迫 WordPress 或 WikiMedia 用户在使用插件之前安装扩展。
我相信这也是其他人的想法。解决此类问题的常用方法是什么?我应该先定义一个 DSL 并使用 DMS 或类似方法进行转换吗?其他选择?
【问题讨论】:
-
就针对多种语言而言,您可能正在寻找haxe.org/doc/intro(尽管尚不支持.NET 和JVM)
-
@mario:这似乎非常接近,非常有趣的语言!我会调查的。
-
性能应该如何?可能一个 WS 解决方案可能是有序的或类似于 protobuf 的东西..
-
@mario 现在在 Haxe 中提供了对 C# 和 Java 的实验性支持。
标签: c# java php metaprogramming cross-compiling