2010-02-12 57 views
7

我们正在考虑将成熟的GWT(Google Web Toolkit 2.0)应用程序与现有的ASP.NET 3.5应用程序集成。我的第一个直觉反应是这是一个可怕的弗兰肯斯坦的想法。但是,客户坚持我们使用由第三方开发的这个应用程序。从ASP.NET 3.5应用程序的IFRAME中运行GWT应用程序(包括Applets)?

我几乎没有控制GWT应用程序的开发。

我的第一个想法是实际尝试将其嵌入到iFrame中。由于GWT在Tomcat/Jakarta下运行,因此它位于与.NET应用程序不同的服务器上,因此iFrame src将位于另一台机器上的URL上。

我需要利用我们自己的ASP.NET授权方案来限制对嵌入式GWT应用程序的访问。 GWT应用程序还使用嵌入式Java小程序,目前似乎不在iframe中工作。 GWT应用程序调用后端服务器(使用GWT-RPC?)。

任何人都可以看到这种方法的任何主要问题?在不同的机器上托管GWT会在iframe上工作吗?

注意:简单地添加一个同名的DIV不适用于此!

回答

6

为了阐述托尼说的话,GWT可以在任何页面上生活。在最低级别,GWT通过其ID或body元素挂钩为div,如RootPanel,并从那里向其添加小部件。

只需在您的ASP页面中添加一个div,例如<div id="gwt-root" />,并在您的GWT代码中以RootPanel root = RootPanel.get("gwt-root")开头。然后,您可以开始添加小部件到该面板来构建页面的GWT部分。

你还需要在你的GWT,使生成的代码与script标签,就像这样:

<script type="text/javascript" src="gwt-app-name/gwt-app-name.nocache.js"> 

另外,如果你想,GWT可以使用使用常规的JavaScript网页的其他部分进行交互JSNI

+0

请注意原始问题。我无法访问原始的GWT源代码,并且它被托管在另一台机器上,因此您的建议实际上会是XSS问题吗?由于我无法在其他服务器上引用* .nocache.js文件。 – 2010-04-13 14:32:14

+2

您可以从任何站点引用JS文件(只要该文件可读)。只需将您的脚本标记更改为绝对URL为http:// otherserver.com/gwt-app-name/gwt-app-name.nocache.js。在这种情况下,您可能遇到问题的地方在于制作GWT-RPC请求......您可以像在另一台服务器上托管的iframe中所说的那样运行GWT应用程序。 – 2010-04-13 15:12:43

1

你不需要IFRAME。 Writeyour应用程序,以便主面板托管在具有特定ID的div内。如果你的ASP.net可以提供一个具有相同ID的div,那么你所要做的就是包含生成的JavaScript文件(+一些样式表),你的应用程序将显示在div内。

相关问题