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

Silverlight 初学者 - 为什么选择 Silverlight?

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.05/5 (25投票s)

2009年5月26日

CPOL

10分钟阅读

viewsIcon

61343

本文解释了为何需要 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……

每台机器,无论是 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

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 之间的关系。

  1. Web 浏览器
  2. Web 服务器
  3. HTTP 协议

这篇文章专门讨论这些。

1. 网络浏览器

网络浏览器只不过是一个驻留在操作系统上的应用程序,它将渲染 HTML。
渲染意味着它会知道如何呈现 HTML 标签。了解网络浏览器的工作原理非常重要,这里的大部分内容都将讨论网络浏览器和网络服务器。

我将用一个例子来解释。
当你输入 http://www.dhaneel.com 时,你会看到我的博客,但我将要解释的是幕后发生的事情。

网络浏览器所做的事情与我们使用 telnet 命令对它所做的事情相同。

  1. 当你输入 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 - 默认)的用法。

Figure 1

一旦连接到 Web 服务器,您就需要以 Web 服务器可以理解的语言与其对话,这些语言被称为协议。Web 服务器主要支持两种协议

  1. GET
  2. POST

Get

GET 协议通常用于请求页面,POST 协议用于向 Web 服务器提交数据。我们将讨论 GET 协议。

Web 服务器期望的是一个名为 `GET` 的 `字符串`,后面跟着它想要获取的页面。

GET “page url”

所以连接到web服务器后,你需要输入以下内容

GET http://www.dhaneel.com/msbuild-for-silverlight/

主要是按两次回车键。这就是协议的设计方式。就是这样。现在你将收到服务器返回的 HTML 代码。

Figure 2

如果您将所有这些数据保存到扩展名为 `.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 日:初始发布
© . All rights reserved.