1

我正在制作一个中型标准 LOB 应用程序。目前它是一个 Web 应用程序,但我正在制定一项将其改造成桌面远程应用程序的提案。我的意思是数据库和应用程序服务器将托管在远程位置。客户端应用程序将通过互联网通过(WCF / Webservices / Remoting)与服务器通信。

我的问题是:我将其从 Web 平台转移的唯一原因是由于 Web 的限制(我不想使用 AJAX 或 Java 脚本来最小化这些限制,所以请不要推荐 JS/AJAX)。我制作了传统的桌面应用程序,它们的速度相当快,但我从未制作过远程或分布式应用程序。我不确定应用程序的速度是否会比网络更快。

据我了解,远程桌面应用程序会快得多。一方面,不会有任何回帖,(我非常讨厌他们)。数据显然将来自互联网,所以在这方面,仅仅为了速度和力量而转移到远程桌面会更好吗?

在正确方向上的任何帮助都会非常有用。非常感谢。

泽山

4

3 回答 3

1

您的术语有些模棱两可 - 您想要在用户机器上运行的客户端应用程序,还是想要在服务器上运行并且用户通过远程桌面 (RDP) 连接的应用程序?

如果您谈论的是通过 WCF 等与服务器通信的客户端应用程序,那么是的,它会比标准 Web 应用程序更快,尽管它仍然比本机桌面应用程序慢。它比 Web 应用程序更快,不仅因为缺少回发,还因为您将通过网络发送纯数据,而不是与您的数据结合的大量 HTML/Javascript。对于客户端应用程序,您有多种选择,因此请仔细考虑它们 - 您想要 Silverlight、WPF 还是本机 WinForms 应用程序?每个人都有其积极和消极的一面。

如果您谈论的是在服务器上运行客户端应用程序,然后用户通过 RDP 访问该客户端应用程序,那么您还有其他考虑因素需要考虑。对于两个以上的并发用户,您需要考虑购买 CAL,以便用户可以连接到服务器。此时,您还应该考虑是否应该运行终端服务器或 Citrix 类型的设置,而不是使用远程桌面。

编辑

在 WAN(互联网)上使用 WCF 时,您当然必须考虑如何保护它。WCF 使保护通道变得微不足道,但您需要考虑如何进行身份验证 - 有几种不同的方法,但您可以轻松地自行搜索这些内容。由于用户的资源或技能有限,您选择的方法将很重要。

至于你用什么写的,如果你的经验在哪里,你就不能与 Winforms 争论。就个人而言,我永远不会再将 ASP.NET/Ajax/etc 用于 Web 类型的应用程序,它将一直是 WPF 或 Silverlight(我只会将 ASP.NET 用于简单的网站)。您可以使用 Visual Studio 的快速(免费)版本来编写它,您不需要 Expression(它只是一个不错的选择,并且更多地针对设计方面而不是实际编码方面)。部署应用程序并不困难 - Silverlight 或 WPF xbap 是通过 Web 交付的,用户无需执行任何操作(除了简单安装 Silverlight 插件或为 WPF 安装正确的 .Net 框架 -检查此链接)。Winforms 或独立的 WPF 需要更多的工作,

无论您选择哪种方式,请确保您不会低估开发时间(因为您会有一点学习曲线),并确保您预算足够的时间来测试它 - 特别是它的安全方面:)

于 2009-12-24T08:15:13.790 回答
1

我认为桌面客户端相对于 Web 应用程序的最大优势是 UI 设计的自由度,您不必担心客户端环境中的任何不一致,尽管如果您使用的是在 silverlight 上运行的客户端,这些都不是问题。

就我个人而言,我不喜欢需要大量用户交互的 Web 应用程序,其中一些使用起来很愉快,但我认为很容易以错误的方式进行操作,最终会出现错误或响应速度不快应用程序(可能是因为浏览器不兼容,我的电脑上安装了 IE、Firefox 和 Chrome,我在某些网站上使用其中一个,因为它们在上面运行得更快,而另一些则用于其他网站,因为网页只能在它们上面正确显示) . 虽然这对于 silverlight 客户端可能不是问题。

在网络速度的情况下,取决于线路上的事情,即使使用二进制序列化远程处理也可能会有相当多的开销。例如,它连同数据一起写入完整的类名、库名和它们的版本,因此即使对于少量数据它也可以变得非常大和慢(尽管它应该仍然比 HTTP 更小)。它也存在与 HTTP 在不可靠连接上的问题相同的问题,因为它使用了类似的协议。对于一个项目,我们必须为某些对象编写自定义序列化程序,因为仅二进制序列化就生成了 200K,但我们为这些对象自定义的序列化程序生成了 50K。然后我们最终编写了自己的网络协议,因为运行时附带的协议经常在不可靠的无线网络上停滞不前,而远程处理则没有

(我假设您询问的是远程处理与 Web 应用程序。不是远程桌面与 Web 应用程序,因为您关于回发的注释,您无法通过远程桌面会话避免它)

仅仅为了速度而重写应用程序?不,因为用户可能不会看到响应时间有太大差异。

于 2009-12-24T09:35:25.173 回答
0

我也遇到过类似的情况,虽然是从 Winforms LOB 应用程序开始的。

这是我们在 WinForms 中发现的...

  • 在您的发布周期中部署到所有客户端机器将变得更加困难。
  • WinForms 不能轻易地在其他操作系统上运行。(单声道除外)
  • WCF 端点可能会变得复杂,您需要为应用程序的发布/版本管理端点。
  • 身份验证、授权和安全性可能很难正确处理!

这就是为什么您应该坚持使用 html Web 应用程序的原因。

  • 这将更容易部署,因为您只需将一组 DLL 复制到 bin 文件夹中。可以从持续集成或登台服务器编写脚本。
  • 通过使用 SSL 证书,安全性将变得容易。
  • Silverlight/Flash 应该填补 HTML 遗漏的空白。

Microsoft 还在 .net 3.5 中组合了连接的系统,他们现在将其称为 WCF(ASMX/Remoting/etc...)。4-5 周的学习曲线相当长。

于 2009-12-24T08:24:08.950 回答