将Silverlight用于电子表格类型的Web应用程序模块的缺陷?

时间:2010-01-08 09:47:55

标签: asp.net-mvc silverlight

这个问题包含很多背景信息,以确保您完全理解我们为什么要研究这些技术。

问题基本上是这样的:

  

对于我们需要为我们的应用程序的web模块开发的大型电子表格类型模块,如果我们决定使用Silverlight,我们应该知道哪些陷阱?

我们已经知道的问题,不需要任何讨论/提醒:

  • 我们知道使用插件类型解决方案的问题,可能会也可能不会安装在用户计算机上(在某些情况下,可能无法安装)。这些风险需要减轻,但我们已经意识到了这些风险。请不要挂断电话。
  • 我们是一家.NET公司,所以虽然ruby on rails和许多其他不同的平台和架构对这个解决方案都有好处,但它们不在这里的决定范围内。我们有很多代码已经用.NET编写,我们需要利用这些代码,否则无论平台如何,项目都永远不会完成。

背景

我们为我们的应用程序提供了一个Web模块,其中包含员工相关信息和一些输入表单。我们的Windows桌面应用程序主要是部门领导类型的应用程序,用于管理员工,但Web模块主要包含以员工为中心的功能。 Web模块主要包含报告类型的网页,用于列出系统中的信息或输入表单。

我们现在需要添加的模块更像是一个繁重的电子表格类型的应用程序。你改变一个地方的东西,然后在其他地方改变一些东西,比如总和,什么是启用/禁用等等。

我们知道我们可以使用AJAX管理所有这些,但另一个问题是应用程序可能会加载大量数据库数据以便将数据放在用户面前,而使用AJAXy解决方案,我们'再担心这里的请求/响应方法必须重新加载每个请求的大量信息,甚至回应看似简单的问题。

缓解这种情况的方法基本上是将信息加载到Session对象或类似对象中,但这是一个很大的禁忌,所以我们宁愿不这样做。这是一个多用户模块,有些数据是静态的,但有些数据也必须不时刷新,所以如果有10个用户将大量数据加载到会话中,那就是是一个非常大的记忆。

如果我们选择采用这种方式,即使用纯HTML和类似技术开发模块,我们将使用ASP.NET(MVC)。

然后我们查看了Silverlight,然后将所有信息加载到客户端上的Silverlight应用程序中。它将保持当前状态,并且只需要触摸数据库来刷新一些信息,而有些时候,我们认为ASP.NET(MVC)的请求/响应模型可以在每一点上运行请求。

但是,既然我们只使用Silverlight做过一些小事,我们就没那么经验过了,而且我们害怕我们可能拥有,陈述或无意识的一些假设被证明是错误的或有缺陷的,这将是使这个项目在某些时候不可能或很难管理。

例如,举一个例子,Silverlight应用程序允许加载多少内存是有限制的(我知道,如果我不得不问我可能买不起它),例如,如果有的话限制在10MB,那么在我们中途开始加载非常繁重的数据之前就知道了。

为了简化示例,我们假设我们正在构建一个包含大量数据的电子表格,对于简单的“在这里更改了一个数字,还有其他更改的数据”,数据库中的数据太多了加载一个正确的请求/响应模型,如果我们将整个事情移动到Silverlight,什么会使该项目变得困难或不可能?

了解这些事情至少可以让我们考虑价格是否可以接受。

  

简而言之,我们为什么为此使用Silverlight而是使用ASP.NET(MVC)?

再次,“使用Ruby on Rails”,这不是真正的答案。选项是ASP.NET(MVC),我们有经验,或Silverlight,我们不能但可以获得。

当然,如果Ruby on rails,考虑到我们必须从头开始基础架构,并且必须学习新的编程语言和框架,并下载和学习新的IDE /工具,如果它仍然允许我们将开发时间缩短一半,然后请给我们一些关于它可能如何工作的信息,但我敢说这不会真的发生在这里。

2 个答案:

答案 0 :(得分:2)

你应该知道Silverlight(版本3.0)不支持任何打印,这对我来说听起来像是一个巨大的showstopper(对不起,我无法抗拒)。好消息是版本4中添加了完整的打印支持,但仍处于测试阶段。谣言说如果一切按计划进行,它应该在夏天之前出来,所以如果这符合你的路线图,我会从一开始就使用SL4。

Silverlight中没有内存限制,但对于本地存储(IsolatedStorage)机制,默认限制为1MB。但是,您可以通过询问用户启动应用程序时增加本地存储空间的权限来轻松解决这个问题。更多相关内容:Silverlight Tip of the Day #20 – How to Increase your Isolated Storage Quota.

(编辑) 除了将在SL4中修复的缺失打印功能之外,我看不到您的方案有任何问题。如果我是你,我会轻松采用Silverlight路线,特别是因为你已经掌握了.NET / C#的广泛知识。

答案 1 :(得分:1)

对于你所描述的丰富界面,我肯定会使用Silverlight或Flash而不是html / javascript / ajax解决方案。

这些技术可以跨平台提供更好,更一致的界面,您可以购买各种组件来加快速度,并以更加结构化的方式支持复制粘贴和代码等功能。

另一个要素是技能,如果你具备在特定技术中实现它的技能,那么就去做。

对于答案,你质疑我能做到的最好方法;如果您决定使用闪光灯,则不应使用silverlight。

HTH