Silverlight 初学者 - 为什么选择 Silverlight?
本文解释了为何需要 Silverlight。它解释了理解 Silverlight 工作原理所需的基本知识。初学者必须从本文开始学习。
引言
本文解释了为何需要 Silverlight,为何我们应该转向 Silverlight,它还解释了 Web 服务器、Web 浏览器和 Silverlight 之间的关系。
为什么选择 Silverlight?
是什么让我真正投入时间学习 Silverlight?希望这能帮助那些想了解“为何选择 Silverlight?”的初学者。
我将尝试每天发一篇帖子,但我的第一篇帖子将重点关注“是什么让我转向 Silverlight?”。第二篇帖子将包含更多 Silverlight 的技术方面。在几篇帖子之后,我将编写一个应用程序,它将帮助我们从登录、WCF、数据绑定、Prism、ADO.NET Entity Framework 开始理解 Silverlight,这将提供一个完整的流程并帮助我们理解 Silverlight。如有任何建议或问题,请随时通过 dhaneel.shanthpure@gmail.com 联系我。请务必在帖子上留言。
那么,让我们开始吧。
在开始深入了解 Silverlight 之前,我们首先应该知道
- 为什么选择 Silverlight?
- Silverlight 的重要性?
- 在哪里使用?
- 底层架构
在我开始学习任何新语言之前,我总是想知道它是什么语言?如何使用它?以及它背后的架构是什么?
我将通过一个案例研究来回答这些问题。这样,你们都会非常清楚地理解它。
去年我接了一个项目。客户的需求是开发一个用于某种产品的网站,该网站将包含树形控件、菜单项、UI 元素和业务逻辑等。然后我接下了这个项目并开始着手工作。
我写了一些 JavaScript 来做一些事情。当我们与客户进行了一个小型演示时,他非常沮丧,说道:“这就是写 JavaScript 代码的方式吗?你写的是什么代码?命名空间在哪里?”他们开始冲我大喊。他们非常了解 JavaScript,而我从不知道 JavaScript 中有所谓的命名空间!我开始在网上搜索,但找不到任何关于 JavaScript 的相关信息。以前我一直认为 JavaScript 是一种非常简单的语言,但我 100% 错了。我一直认为很少有人使用 JavaScript,也从未想过要学习它,因为我的一位大学师兄说 JavaScript 是一种非常简单的语言,他给我看了下面这个 JavaScript 程序。
<html>
<head>
<script type=”text/javascript”>
function load()
{
alert(’Hello World..’);
}
</script>
</head>
<body onload=”load()”>
</body>
</html>
当我用浏览器打开它时,它会显示“Hello World”。在那之后,我再也没有费心去学习更多关于 JavaScript 的知识。但你可能不相信 JavaScript 是互联网上部署最广泛的应用程序!!!不相信我吗?我将告诉你原因……
在此之前,请理解 JavaScript 与 Java 语言没有任何关系。当时在网景公司开发 JavaScript 的人受到 Java 的启发,所以他使用了 Java 中的一些标签,然后将其命名为 LiveScript,但当他们想与 Sun Microsystems 合作时,他们将其命名为 JavaScript。我不想过多讨论这个。但请记住一件事,JavaScript 和 Java 完全不同。如果你想了解更多,这里有链接……他们说 JavaScript 是世界上最被误解的编程语言……J……
- http://www.crockford.com/javascript/javascript.html
- http://www.htmlgoodies.com/beyond/javascript/article.php/3470971
每台机器,无论是 Windows、Mac 还是 Linux,都有一个网络浏览器,对吗?而且每个网络浏览器中都有 JavaScript。所以 JavaScript 是互联网上部署最广泛的应用程序。你只需使用 HTML 和 JavaScript 编写代码,无需担心在客户端机器上部署的问题。
我回到我的问题上来.. .. 在被客户训斥之后,我开始在网上寻找更多信息。我请客户给我一些时间,以便我可以学习 JavaScript。我在网上没有找到任何关于 JavaScript 的好文章,也没有提到任何关于命名空间的内容。我花了整整 30 天的时间来学习 JavaScript。当我得知 JavaScript 中有继承、类等时,我真的震惊了。当时,我发现在雅虎开发者网站上,Douglas Crockford 正在 JavaScript 上做很多事情,我认为他是一个真正的天才。如果有人对 JavaScipt 了解更多感兴趣,这里有链接
Douglas Crockford 有 4 个视频——“JavaScript 编程语言”。
在这里你找不到简单的 Hello World 的东西。
再次回到我的问题。我学习了 JavaScript 并开始为我的客户编写代码。每个 UI 控件对我来说都花费了大量时间,因为我是一个初学者。由于他们支付的费用足够高,我想我会从另一家公司购买控件。有一些公司,比如 Infragistics [http://www.infragistics.com/],你可以从那里购买控件。但在雅虎开发者网站上,你可以找到大量的免费 JavaScript 资源。所以请务必先看看它,然后再自己编写或从其他人那里购买。
我总算设法完成了项目并交付了。同一个客户又来找我,说他要向他的客户演示这个应用程序,需要一个好的用户界面,并说会为此付钱给我。然后我说好,我会研究一下,然后我才知道在 Adobe Flash 中,我们可以做很多很棒的用户界面、动画等。我只有很少的时间来交付这个,所以开始寻找 Flash 设计师。然后我找到一个做得很好的。他创建了一个非常漂亮的用户界面,菜单从顶部下拉,非常棒的爵士风格用户界面。然后最大的问题摆在我面前。我如何从 Flash 调用事件???该死……在 Java 中有一种叫做 ActionScript 的东西可以完成这项工作。我找不到 ActionScript 程序员。懂 Flash 的人只懂用户界面和动画,他们不懂 ActionScript。我费了很大力气才找到一个开发人员并完成它。最后我学会了
- ASP.NET
- JavaScript
- Flash
- ActionScript
所有这些都需要不同的专业知识,我真的非常沮丧地学习它们。我什么都懂,但我对其中任何一个都不精通。拿上面提到的任何一种语言来说。它们都需要更多的时间和精力才能掌握。我所做的一切都是在浪费时间和金钱,将每件事都外包给其他公司,却没有给客户一个非常好的产品。
后来我发现微软正在推出一款名为 Silverlight 的产品。他们非常清楚开发人员面临的问题。他们将所有东西都捆绑到 Silverlight 中。为了简单解释,Silverlight 无非是 JavaScript、Flash(或任何其他 UI 开发工具包)、HTML 的替代品。当我说替代品时,我也应该提到替代它们对应的东西,所以我列出了以下内容
- HTML 被 Silverlight 取代
- JavaScript 被 C# 取代
- Flash 被 WPF 取代

Silverlight
我是一名优秀的 ASP.NET 程序员,而且我精通 C#。所以,我可以用 C# 进行客户端编码,而不是 JavaScript。太酷了……这很好……然后 Flash 被 WPF 取代,WPF 就是 Windows Presentation Foundation,它在 Visual Studio 中提供了像拖放一样的控件,并具有丰富的用户界面。而且它们背后的代码又是 C#。这太棒了。HTML 被 XAML Silverlight 取代,XAML Silverlight 是一种类似 XML 的标记语言,但唯一的区别是 TAGs 是预定义的,不像 XML 中我们可以将任何东西作为 TAG 名称。所以我只需要专注于 C# 和 XAML。我已经知道 C# 了,现在只剩下 XAML,它和 XML 完全一样。让我向你展示一个示例 XAML 语法。
<TextBox Name=”txtBox” Text=”Hello Silverlight!”>
</TextBox>
上面的 XAML 代码将创建一个 `TextBox`,其中写着“`Hello Silverlight`!”。这非常简单。现在我拥有了一项值得学习的技术。
那就是 Silverlight。现在你可能已经对“为何选择 Silverlight?”有了足够的了解。
现在我们可以转到 Web 浏览器、Web 服务器和 Silverlight 之间的关系。
我们将尝试理解网络浏览器、网络服务器和 Silverlight 之间的关系。
- Web 浏览器
- Web 服务器
- HTTP 协议
这篇文章专门讨论这些。
1. 网络浏览器
网络浏览器只不过是一个驻留在操作系统上的应用程序,它将渲染 HTML。
渲染意味着它会知道如何呈现 HTML 标签。了解网络浏览器的工作原理非常重要,这里的大部分内容都将讨论网络浏览器和网络服务器。
我将用一个例子来解释。
当你输入 http://www.dhaneel.com 时,你会看到我的博客,但我将要解释的是幕后发生的事情。
网络浏览器所做的事情与我们使用 telnet 命令对它所做的事情相同。
- 当你输入 http://www.dhaneel.com -> 正在发生的是它连接到远程主机上的网络服务器并返回页面给我。
请注意,Web 浏览器默认连接到端口 80。现在打开命令提示符。您可以通过“开始”->“运行”并输入以下内容来完成此操作
telnet www.dhaneeel.com 80
[ 注意:Telnet 随 Windows 一同提供。它是一个程序,可用于连接到任何机器上的任何端口。例如,您想连接到 Google 的 SMTP 服务器。然后使用此命令。`telnet smtp.gmail.com 25` ]
图 1.0 显示了使用 telnet 连接到 Web 服务器(端口 80 - 默认)的用法。
一旦连接到 Web 服务器,您就需要以 Web 服务器可以理解的语言与其对话,这些语言被称为协议。Web 服务器主要支持两种协议
GET
POST
Get
GET
协议通常用于请求页面,POST
协议用于向 Web 服务器提交数据。我们将讨论 GET
协议。
Web 服务器期望的是一个名为 `GET` 的 `字符串`,后面跟着它想要获取的页面。
GET “page url”
所以连接到web服务器后,你需要输入以下内容
GET http://www.dhaneel.com/msbuild-for-silverlight/
主要是按两次回车键。这就是协议的设计方式。就是这样。现在你将收到服务器返回的 HTML 代码。
如果您将所有这些数据保存到扩展名为 `.html` 的文件中,并在浏览器中打开它,您将看到与您访问 http://www.dhaneel.com/msbuild-for-silverlight/ 时相同的内容。
整个 HTML 作为 DOM 文档发送到客户端,每次向服务器发出新请求时都需要替换。让我举一个例子。假设您想删除收件箱中的一封邮件。那么将向服务器发送一个新请求,然后不包含已删除邮件的整个 HTML 响应将返回。然后我们需要刷新整个屏幕。
然后添加了新的概念,那就是 AJAX(异步 JavaScript + XML)。你可以在这里阅读更多关于它的内容。这为我们提供了修改浏览器上可用的 DOM 的功能。因此,每次你删除一封邮件,一个异步请求就会发送到服务器,并带回一个标志,根据这个标志,我们改变 DOM。在 DOM 中实现的这个新功能被称为 Inner HTML 属性。这使我们能够使用 AJAX 类型的调用。
希望现在我们对 Web 浏览器和 Web 服务器已经清楚了。让我们继续,找出 Silverlight 是如何工作的。
对于 Silverlight,微软开发了一个插件,可以称为轻量级 .NET CLR。它可以安装在浏览器上(目前可以安装在 Internet Explorer、Firefox、Chrome 上)。该插件只不过是精简版的完整 .NET CLR。
您可以使用它用 C# 编程。您几乎可以使用 .NET CLR 中所有基本数据类型。
关注点
微软正尝试在客户端放置一些轻量级 CLR。我认为这是一种桌面应用程序,但我们正在利用网络浏览器将必要的组件放入其中。
历史
- 2009 年 5 月 26 日:初始发布