65.9K
CodeProject 正在变化。 阅读更多。
Home

构建 Silverlight 企业应用程序时的冒险:第 21 部分

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2009年9月8日

CPOL

7分钟阅读

viewsIcon

11322

我们为什么以及如何选择 Silverlight,以及我们(或者至少是我)如何学会使用 Silverlight 技术

引言

我今天从短暂的假期回来,读了 Tim Heuer 的这篇帖子。然后我意识到,在我写过的关于我们构建 Silverlight 企业应用程序冒险经历的全部二十篇文章中,我实际上从未详细阐述过我们为什么以及如何选择 Silverlight,以及我们(或者至少我)是如何学习使用 Silverlight 技术的。所以,现在看来是时候了。

让我做一个懒惰的作者,就顺着 Tim 提出的问题来回答吧。

决策依据

显然,当你要开始一个项目时,你必须决定你要使用什么以及为什么。如果你在考虑 Silverlight,有哪些因素会影响你的决定?

在我们的案例中,最重要的目标之一是从一个客户端-服务器的解决方案,带有一个(非常)笨重的客户端,转向一个多层解决方案,带有一个基于 Web 的客户端。最初的选择是采用 DotNetNuke,因为我们已经有一些经验;然而,正如你可能非常清楚的那样,它使用了常规的 ASP.NET AJAX 类解决方案,我们在 UI 方面发现它非常受限。当时,Silverlight 2 刚要走出 Beta 阶段,我们觉得我们至少应该好好研究一下它。我们需要一种相对容易实现,但又足够灵活以创建非常有用的 UI 的技术。

所以我们主要的决策因素是

  1. UI 的可能性 / 用户友好性
  2. 开发速度
  3. 灵活性

你的公司为什么选择采用 Silverlight(或选择不采用)?有没有选择其他更好的技术?为什么/为什么不?

我们选择 Silverlight 是因为它符合上述列表中的要求。我们觉得与 ASP.NET / AJAX 相比,使用 Silverlight 构建一个用户友好型的 UI 要容易得多。此外,我们在原型开发/概念验证阶段就发现,使用 Silverlight 构建 UI 所花费的时间更少,因为只使用了 XAML 和 C#。没有 HTML 或 JavaScript 代码让我们轻松了很多。

Silverlight 的另一个基本方面对我们来说很有价值。那就是你可以将控件嵌入到其他控件中并使用模板。结合声明式数据绑定,这在我们做决定时成了一个重要的话题。

同样,我们也在与 DotNetNuke 进行比较,DotNetNuke 也有一些优势。DotNetNuke 的一个优势是你可以直接从客户端代码访问数据库。回想起来,我很高兴我们不能用 Silverlight 这样做,而将所有逻辑都放在服务层中。这在很多我们已经遇到的场景中证明了更灵活。

在决定 Silverlight 是否合适时,最重要的事情是什么?功能集?现有技术?快速开发?其他原因?

当时,Silverlight 2 并不是一个完全成熟的技术,它才刚刚走出 Beta。这对我们来说是一个担忧,但 Silverlight 2 已经有了一个活跃且不断增长的社区,再加上微软已经有了更新计划,这些因素将我们推向了 Silverlight。功能集肯定很重要。数据绑定的实现方式对我们很重要,因为我们正在构建一个数据丰富的应用程序。此外,当时默认可用的控件,以及通过 Silverlight Toolkit 可用的控件,还有第三方公司积极拥抱 Silverlight 2 的事实,进一步减轻了我们的选择负担。

快速开发显然需要得到证实,因为当时还没有真实的实际案例。我们构建了不同规模的原型,并发现即使没有这项技术的使用经验,使用 Silverlight 2 也能足够快地构建出东西。

学习资源

关于学习——你如何最好地学习?你更喜欢“原子化”的示例吗?这些是可以直接嵌入并弄清楚特定任务的示例(例如,如何在 Silverlight 中打开文件?)。还是你更喜欢一种“课程计划”的方法?这将是一个基于任务的系列(例如,在 Silverlight 中构建媒体播放器)。

对我个人而言,课程计划方法是新的。我参加了部分 digg API 示例系列,但在几个步骤之后,我就失去了兴趣,主要是因为其中一些主题当时并不吸引我,而另一些主题对我来说又太简单了。这让我倾向于原子化示例,尽管作为起点,我可以看到为什么人们喜欢这种课程计划的东西。之后,原子化示例显然是最佳选择。它们的优点是只展示最少的实现,而不必经过前面的步骤来理解已有的代码。

关于媒介——在这两种学习路径中,你的偏好是什么?视频?书面的分步指南?实验?当你对一个主题完全陌生时,看视频是很好的。它减轻了跟踪文章的努力,只是让你看到事物是如何运作的。对于一些更深入的主题,代码较少、解释较多的内容,视频也很好。

如果我需要查找参考资料,或者我需要实际开始编写代码,我更喜欢书面材料,因为这样更容易浏览并找到你需要的代码片段或解释,而不是花费二十分钟的视频来寻找你需要的五秒钟镜头。

我过去尝试过实验,但我发现它们不适合我。我很容易感到厌烦,因为通常指令的水平让事情变得太简单了。而且,准备进行实验通常需要很多工作。

关于主题——学习一项新技术时,你期望的前三个主题是什么?当你对它一无所知时,你是如何入门的?你期望先学习工具吗?还是直接进入数据访问?

这实际上是一个非常难回答的问题。这很大程度上取决于技术的外观。在看 Silverlight 时,我觉得我对最重要的工具:Visual Studio 2008 已经足够了解了。当然,Blend 成为了我使用的工具集的一部分,随着时间的推移,我确实看了关于 Blend 的视频和教程,来学习一些技巧。所以对我来说,在学习 Silverlight 的过程中,直接深入到重要主题非常有帮助。我认为包含关于如何使用工具的提示很重要,只要这与当前主题相关。

例如,如果你在谈论数据绑定和数据访问,演示如何在 Blend 中做到这一点(包括使用示例数据)会很有帮助。如果这变得过于复杂,至少要确保你向公众指出这是一个你应该知道的实用功能,并告诉他们可以在哪里找到更多关于它的信息。

其他说明

在我开始接触 Silverlight 时,有一件事困扰了我很长时间,那就是有大量的资源是为 Silverlight 2 Beta 1 和 2 准备的。虽然这在说服管理层采用 Silverlight 方面非常有帮助,但当试图为 Silverlight 2 RTM 找到有用的资源时,却让生活变得艰难得多,因为很多时候重要的部分在 RTM 中根本无法正常工作。

我发现的另一件事是,尽管 silverlight.net 是学习 Silverlight 的一个绝佳资源,但它有点混乱。视频没有按照易于查找的方式进行分类,而且网站上没有合适的搜索功能。另外,我认为拥有一个只能搜索特定版本 Silverlight 内容的搜索引擎会非常有帮助。所以,如果我正在处理 Silverlight 3,我可能对 Silverlight 1.1 和 2 的内容不感兴趣。或者有时,我可能不在乎是 Silverlight 2 还是 3 的内容,因为它们很可能兼容。

最后,我想鼓励那些还没有做这件事的人,请去 Tim Heuer 的文章下评论。或者你也可以在这篇文章下评论。

© . All rights reserved.