【问题标题】:Choosing the right architecture Silverlight web app accessing JSP webpages选择正确的架构 Silverlight Web 应用程序访问 JSP 网页
【发布时间】:2011-02-06 12:56:37
【问题描述】:

我需要一个可以针对我的问题实施的架构解决方案。我们有一个在 apache 上运行的 JSP 网站,该网站在 unix 服务器上运行。客户决定这个网站的前端应该在 Silverlight 中设计。

当我们进行概念验证时,我们所做的如下:

设计了一个示例 silverlight Web 应用程序(只是登录屏幕和帐户摘要页面)。使用 .net Webclient 类,我们调用 .jsp URL,读取并解析响应,将它们转换为 C# 对象并将这些对象/数据绑定到我们的 UI。我们还了解到,可以在 apache/unix 平台上托管 Silverlight Web 应用程序,因为 Silverlight 应用程序只会被下载(仅*.xap 文件就足够了),并且所有执行都发生在客户端。

我们尝试这种方法只是因为我们的经理(来自 MAINFRAME 背景)刚刚要求我们重用现有的 *.jsp 代码/网站。

现在有几个问题需要考虑。会话在 .jsp 代码/网站中创建,silverlight 无法控制或访问该会话。而且我们用来解析 *.jsp 响应的代码不是一个很好维护的代码。

大多数时候 *.jsp 返回的响应是 JSON 格式,我可以将它们解析为 JSONArray 并在我的代码中使用它,或者进一步将它们转换为我的实体。

我们不确定在不久的将来我们是否会面临任何其他问题。

所以我的计划是 1) 不是通过调用 URL 来重用 *.jsp 代码,为什么我们不能在 .net 本身中编写整个应用程序

2) 问题交给java开发者写一些java webservice来暴露服务返回我们需要的数据,silverlight只能消费这些服务。

非常感谢任何想法或cmets。

【问题讨论】:

    标签: silverlight json jsp


    【解决方案1】:

    所以要明确一点,Silverlight 客户端调用的 .jsp 页面是返回 HTML 还是 JSON?如果是 HTML,那么是的,当然,您需要重写该应用程序以通过某种 Web 服务返回数据。解析 HTML 实在是太脆弱了,无法将其作为应用程序的主干。但是,如果他们返回 JSON,那么解析 JSON 是一种合理的方法。在这种情况下,您基本上可以将 JSP 页面视为一种 REST API,虽然手动调用反序列化步骤有点痛苦,但它可能只是整个应用程序的一小部分,我也不会担心很多关于它。

    也就是说,创建真正的 Web 服务(无论是 .NET 还是 Java,无论是 REST(使用 JSON 还是 XML)还是 SOAP)肯定是一种更优雅的架构。您会发现,我很确定,.NET/WCF 在各种小而重要的方面都比基于 Java 的 Web 服务更干净地与 Silverlight 一起工作,即使它们都基于 SOAP。真正的问题是平衡创建“真正的”Web 服务(无论是 .NET 还是 Java)所需的工作与维护不太优雅的 Silverlight 反序列化代码所需的工作。在没有大量更多信息的情况下,这里的任何人都不希望聪明地回答这个问题。

    我不太清楚您所说的“会话是在 JSP 代码中创建的,Silverlight 无法控制或访问该会话”是什么意思。如果您的意思是“Silverlight 不能直接访问缓存在 JSP 后端会话中的任何内容”,这当然是正确的。如果您的意思是“任何 Silverlight 调用都将被解释为属于不同的会话,而不是直接来自 Web 浏览器的调用”,那么这不一定正确。默认情况下,所有 Silverlight HTTP 访问都通过浏览器自己的 HTTP 堆栈,因此,如果用户通过浏览器/HTML 登录,并在后端网络服务器上创建了会话,默认情况下,来自 Silverlight 的任何调用都将被解释作为同一会话的一部分。 Silverlight确实有自己的替代 HTTP 堆栈,例如,它能够同时打开比浏览器堆栈通常所做的更多的客户端请求。此堆栈维护自己的 cookie 数据库,因此从备用 Silverlight HTTP 堆栈对 Web 服务器的任何调用都将被有效地视为来自同一台机器上的不同 Web 浏览器。但是您必须在 Silverlight 开始使用它之前启用备用堆栈。 (这有意义吗?)请参阅here 了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      相关资源
      最近更新 更多