4

我在想是否可以将 asp.net、php 和 java 桥接成一个页面。

其实我现在不需要任何这样的东西。这只是一个想法,因为某些语言的某些功能很好,某些功能或其他一些语言很好,所以我在想如果我将所有这些功能组合成一个会怎么样

我的意思是,我正在创建一个页面,其中包含来自所有 3 种语言 asp.net php 和 java 的代码。

<asp code></asp code>
<php code></php code>
<java code></java code>

或者

<html>
    <asp code>
    <php code></php code>
    <java code></java code>
    </asp code>
</html>

或类似的编译器识别不同的代码段并将它们发送到他们的编译器上运行以执行。并且输出可以被XML中的其他语言识别和使用

我并不是说所有语言都可以相互交互。虽然它们可以通过 XML 相互交互。但我只想说文件被编译为具有不同编程语言代码的单个实体,这些代码被发送到各自的编译器以执行并最终返回到父编译器

我正在考虑一个可以开发的编译器,它可以识别不同的语言代码并将它们发送到他们的编译器,就像 .net 框架所做的那样,例如 MSIL

4

6 回答 6

5

是否可以?

引用《辛普森一家》中的洛夫乔伊牧师的话:“简短回答不,如果。长回答是,但是。”

不,如果您使用当前可用的技术 ,目前是不可能的。

的,它需要您推出自己的服务器,该服务器将充当 shim,拆分不同的代码部分并将它们发送到必要的语言解析器 + 编译器,然后将这些单独的部分重新组合在一起以显示页面。

编辑: @Shantanu:我很高兴。实施完全由您决定,因为我根本没有调查过这样的事情。

最终,我觉得这不是最有成效的事情,因为您可能会遇到大量问题。

最大的问题是:来自一种语言的代码将不知道其他语言正在做什么。

即,如果您在 ASP 中使用值定义了一个变量,那么 Java 或 PHP 版本如果不付出巨大的努力就不会意识到它,更不用说它们将完全无法从彼此的进程中访问内存。

但是,如果您确实想走这条路,我建议您研究像ANTLR这样的解析器生成器。它将帮助您编写一个可以查找您的特殊标签的解析器(注意,如果需要,可以使用正则表达式或手动解析器来完成)。

获得拆分代码后,您将希望将其发送到每种语言的编译器,您应该能够从中接收文本输出。一旦你有了那个文本,它应该是所有的 html + javascript,然后可以组合在一起来显示页面。

我会说,如果你想让这 3 种语言交互,你将创建一个巨大的项目。使用 .Net 框架并为其编写 PHP 和 JAVA(可能已经存在)语言可能会更容易,从而允许您放弃创建整个服务器堆栈。

于 2010-01-05T17:27:37.413 回答
1

不是,不。作为服务器端的脚本,整个文件将依次传递给每个服务器(asp.net/php/java),我相信其他代码会导致解析错误。

它也会非常低效。

于 2010-01-05T17:17:18.513 回答
0

我使用 ajax 混合了多种语言。在您的情况下这可能是有道理的,但您没有提供足够的细节。

于 2010-01-05T17:16:34.350 回答
0

虽然不是我想的那样,但生成包含多种客户端语言的页面很简单。只需type为脚本标签定义不同的属性,例如:

<html>
    <script type="text/javascript">...</script>
    <script type="text/vbscript">...</script>
    <script type="text/someothersupportedscript">...</script>

    <body>
        ...
    </body>
</html>

另一方面,如果您想在服务器端使用不同的语言生成 HTML - 当然可以,但我不知道有任何框架可以让这变得简单。问题是,几乎每个生成页面的服务器端库都希望根据 HTTP 响应的内容形成一个完整的 HTML 页面。

解决此问题的最简单方法可能是将一种语言指定为您的“主要”语言,让该语言实际生成网页 - 然后让它进行外部调用,最终提供由其他语言生成的页面部分(以及用逻辑将它们拼接在一起)。这些调用可以是直接进程调用、带有包装器的 RMI、Web 服务调用(对本地或远程主机)等。

仍然 - 我真的不确定你为什么要这样做。:-)

于 2010-01-05T17:22:11.810 回答
0

ESI

http://www.akamai.com/html/support/esi.html

本质上,页面是由一系列瓷砖组成的。Oracle 在其 webcache 产品中实现了这一点,但自己编写解析器就足够简单了。

C。

于 2010-01-05T17:27:57.897 回答
0

我认为必须设计一个新的编译器来根据一些标签识别不同的源代码

<aspX>- 表示 asp.net
<php>- 表示 php
<C#X>- C# 代码

像这样当这个编译器看到这段代码时

它应该将相应的代码发送给它的编译器。

例如

<aspX>
<asp: Textbox....../>
<C#X>
xyz=abc();
</C#X>
</asp>

类似的东西

于 2010-01-05T17:34:27.133 回答