假设您正在编写一个基于网络的 WinForms 应用程序,由于客户站点的限制性公司政策,该应用程序应该在“偏执”环境中运行。这种恶劣的环境有什么样的限制,你做了什么围绕它们设计的?
一些例子开始:
- 问题:有一个非常严格的防火墙,只允许出站端口 80 流量。解决方案:仅使用 HTTP 进行网络连接。
- 问题:不允许使用 .NET 框架。解决方案:将您的应用程序转变为网络应用程序。
您在现实生活中的客户情况中遇到过哪些此类限制,例如在银行软件中(通常需要生活在特别严格的环境中)?
假设您正在编写一个基于网络的 WinForms 应用程序,由于客户站点的限制性公司政策,该应用程序应该在“偏执”环境中运行。这种恶劣的环境有什么样的限制,你做了什么围绕它们设计的?
一些例子开始:
您在现实生活中的客户情况中遇到过哪些此类限制,例如在银行软件中(通常需要生活在特别严格的环境中)?
好吧,问题的第一部分,我不确定。但是,至于您的要点。您可以在端口 80 上运行您的服务器,而不是使用 HTTP,而是使用您的自定义协议。另外,防火墙当然允许 SSL (443),您也可以将您的协议包装在 SSL 中。就不允许使用 .NET 框架而言,您可以使用 Xenocode 的 PostBuild 或类似的用于 .NET 的“静态链接”应用程序。此外,对于 HTTP 的东西,您可以让您的应用程序通过 HTTP 进行通信,但使用 Web 服务,因此仍然提供富客户端。
这是 PostBuild 的链接:
坚持使用IE6的公司。如果您尝试使用 Web 应用程序解决限制,这可能会增加整个开销。
Not giving their users admin rights to install stuff on their machine is also a big deal, as can be some security settings on the browser they may insist on.
强制所有网络流量通过端口 80 是一个不错的选择。然后需要端口 80 上的重定向器以允许多个服务器应用程序在一个端口上“侦听”,因为打开任何其他端口将是“安全风险”。
您可能会发现最大的问题是那些不定期运行 Windows Update 并且无法访问其计算机的 Internet 的公司。我的客户就是这样,但他们必须这样。
这意味着当你推出你的软件时,你需要知道他们有什么 .net 平台,并且告诉他们“更新到最新”并不总是一种选择。在没有互联网的情况下,在每个桌面上安装更新,并推出所有 .net 版本、服务包和 MS 补丁,这真的很痛苦。因此,如果您交付的代码需要用户没有的东西,您可能必须重写它。
在 .NET 2.0 发布 3 年后,被迫在 .NET 1.1 等旧框架中进行开发。还有桌面和服务器团队之间的脱节。桌面团队认为 .NET 不好且不安全,而服务器团队的反应完全相反,他们喜欢 .NET,因为它能够使用信任权限锁定环境。
您无法快速更改公司政策。让他们接受新事物是一个缓慢、非常缓慢的过程。