我正在开始一个新的网络项目,我正在考虑两个演示框架。我正在考虑 ASP.NET MVC 或 Silverlight。我倾向于使用 Silverlight,因为我是一位经验丰富的 .NET 开发人员,而我只有 ASP.NET 控件的基本知识。
11 回答
它主要是一个内部产品,所以浏览器不是问题。
您还没有写出关于您的应用程序性质的正确描述。如果不首先充分了解应用程序所应用的领域以及它旨在解决的问题,就很难评估哪种技术适合。
总体而言,Microsoft 将这些演示技术阵列定位在“ Reach vs Rich ”连续体上。一端有“普通的旧”HTML 和 Javascript,可以为大多数客户端机器所接受,而另一端则是最终的成熟 WPF,只有有限数量的机器可以处理。您确实提到这是一个内部应用程序,因此通过 XBAP 或 ClickOnce 的 WPF 也是可能的。
所以规模会这样排列:(范围)ASP.NET、AJAX、Silverlight、WPF(丰富)。
所以问题是你想要/需要它对用户有多丰富,直到它损害部署基础?坦率地说,如果您获取的只是表单、表格数据和统计信息,那么常规的 ASP.NET Web 表单就可以了。如果您想要动态调整大小的图形以及与后端 WCF Web 服务进行客户端交互,Silverlight 可以做到这一点。如果你想通过远程部署选项比 WPF 更强大的图形渲染是你的选择。
带有 RIA 的 Silverlight 3 似乎非常强大。在 VB6 工作后,我已经有 6 年没有编程了。我大约有一个月的时间,在这里我正在开发一个使用 SL3、WCF 和实体框架的 Web 应用程序,我感觉很舒服。
Silverlight 论坛和 stackoverflow ofcourse 非常活跃,对于我遇到的一些问题,我已经能够轻松获得解决方案。
我还不确定的一件事是性能。
无论是个人还是专业,我每天都为 Windows 窗体应用程序和 Windows 服务编写 C#。即使经过多年的努力,我发现使用 PHP 或 Python 开发 Web 应用程序要比使用 .NET 快得多。或许 Silverlight 改变了一切,但对我来说 ASP.NET 的学习曲线与回报相比是荒谬的。
编辑:以上是在我尝试 ASP.NET MVC 之前一年左右写的。我发现 ASP.NET MVC 非常直观和干净。
不要忘记 Silverlight 需要一个插件才能使用,据我所知,它还没有被“原生”添加到 IE 中,更不用说其他浏览器了。因此,仅此一项就可能存在大量维护/支持问题。PDF 文件现在被认为是“无处不在”,但您仍然会遇到一两个用户,他们的计算机上没有 Adobe Reader,而且它通常发生在一个糟糕的时间,然后您四处寻找安装程序。
从根本上说,这就是让我无法为我的 Web 应用程序使用 Silverlight 的原因。我认为它背后的技术很好,但考虑到现在你可以通过一个很好的 Webforms/MVC/AJAX/jQuery 组合(根据你的喜好混合和匹配)获得相同的可见性/功能,我会说坚持使用 ASP.NET。
IMO 使用 ASP.Net 可能会更好。虽然您会有一点学习曲线,但您将在经过验证的、可靠的、可扩展的模型上进行开发,而不是在测试版中进行开发,并且可能会在 RTM 之前发生变化。
此外,如今使用 AJAX 可以从 ASP.Net 中获得非常流畅的用户体验。
我会推荐 ASP.NET,不需要额外下载。
我使用了 Silverlight,但很多公司不允许用户安装任何东西,而且家庭用户也不乐意安装浏览器插件,Silverlight 并不是众所周知的 Flash 播放器。
对于初学者和高级程序员,您可以在以下位置找到视频教程。
在不知道您的应用程序是什么的情况下,很难推荐其中一个。无论您做出什么决定,请确保牢记目标受众;不是每个人都会在他们的计算机上安装 Silverlight。
就个人而言,除非我正在设计一个令人难以置信的交互式和漂亮的 Web 应用程序,否则我会选择 ASP.NET(有或没有 MVC 框架),只要它有大量的参考资料,而 Silverlight 仍然相对较新领土。
它主要是一个内部产品,所以浏览器不是问题。更多的是发展的代价。学习 Silverlight 模型还是 ASP.NET 模型更容易?我希望 Silverlight 基于 WebServices,因此它可能会将我的应用程序代码清楚地划分为业务逻辑(服务)和表示(silverlight 应用程序)。
鉴于您在 .NET 方面的背景但有限的 Asp .net 经验……我假设您更像是一个服务/客户端人员。这意味着您的 javascript 可能同样有限......如果是这种情况,我会选择 Silverlight。它将使您轻松进入 WPF,您将来可能会使用它。
但更重要的是,使用 Silverlight 2.0 感觉更像是构建沙盒桌面应用程序。不仅仅是一个网络应用程序。如果您之前的经验是使用客户端应用程序,那么您将更加熟悉 Silverlight。
如果您想进入构建网站/应用程序,请使用 ASP .NET MVC。
无论哪种方式,典型的 ASP .NET 控件的知识都不会走得太远,因为它们是用于 WebForms 的。
我会说——除非你需要类似 Flash 的动画和交互功能——选择 ASP.NET。它的编程更简单,并且不需要用户额外下载。
我认为只有在您想要创建像 Flash 这样的应用程序时才需要 Silverlight。这些应用程序组合成一个可执行文件,在客户端机器上下载一次。如果他们需要驻留在服务器上的任何数据或任何功能,他们可以与服务器通信。最终用户需要安装 Silverlight 环境插件来帮助运行这些应用程序。
然而,如果您创建一个 asp.net 应用程序,它的代码驻留在服务器本身上并执行,因此一个简单的 Internet 浏览器可以执行它。但缺点是,对于用户交互应用程序,当代码需要时,需要在服务器和客户端机器之间进行单独的调用。