动态.NET

Silverlight 的重要功能之一是支持动态语言(如 IronRuby 和 IronPython)。通过这一集成功能,可以使用 Silverlight 平台来开发富 Internet 应用程序 (RIA) - XAML 用于表示层,动态语言用于代码隐藏。本文演示 Silverlight 与动态语言的集成功能以及 Microsoft Bing Map 控件。首先,我将简要介绍动态语言,然后深入讨论 Silverlight 对这些语言的支持。最后,作为总结,我将演示如何使用 Microsoft Bing Map Silverlight 控件和 IronRuby 生成交互式 3D 动画位置查找 Silverlight 应用程序。

动态语言基础知识

Read-Eval-Print Loop (REPL) 环境通过使用动态编程语言(在运行时动态类型化和编译的语言),为开发人员提供轻型“即写即用”编程功能。您不需要声明特定数据类型的变量。所有代码均由运行时通过表达式上下文进行处理。

我们更熟悉的语言(如 C# 和 Visual Basic)是静态类型语言,在灵活性上稍逊一筹。与这些需要编译和分发输出的静态语言相比,使用动态语言进行开发和部署更为简单。不过,在使用动态类型语言时,仍然需要验证和测试类型安全性。

使用动态语言时,可以创建一个函数,然后将它赋给变量或作为参数传递给另一个函数。这样,可以更方便地使用闭包和将函数作为参数进行传递。通常,闭包有两个明确的特点:可以将代码块(函数)赋给变量;对于在创建时可访问的变量,代码块能够保留访问权限。

下面是用 C# 编写的传统 ShortWords 方法,该方法返回一个单词列表子集,其中包含符合单词长度不超过 3 这一条件的单词:

public static List<string> ShortWords(List<string> wordList) {
  List<string> shortWordList = new List<string>();
  int maximumWordLength = 3;
  foreach(string word in wordList) {
   if(word.Length <= maximumWordLength) {
    shortWordList.Add(word);
   }
  }
  return(shortWordList);
}

使用 LINQ 可以更加高效地实现类似功能,如以下代码段所示:

public static List<string> ShortWords(List<string> wordList) {
  var maximumWordLength = 3;
  return wordList.Where(w => w.Length <=
    maximumWordLength).ToList<string>();
end

用 IronRuby 等动态语言实现该方法(Microsoft .NET Framework 的 Ruby 编程语言实现)类似于在 C# 中使用 LINQ 方法,但比传统方法简短得多:

def ShortWords(wordList)
  maximumWordLength = 3
  return wordList.select {|w| w.Length <= maximumWordLength}
end

只要对比一下上述算法的这两种实现,就可对 IronRuby(以及其他动态语言)有不少了解。IronRuby 代码非常简洁,不包含任何数据类型关键字(如 string 或 int)。

此 IronRuby 代码块中,最令人感兴趣的是花括号之间的闭包。这里的闭包实际上是一个函数,它被传递给 Select 方法。Select 方法使用闭包提取集合的子集。构成该闭包的代码实际在 Select 方法内执行(此处,闭包提取集合 wordList 中符合条件的字符串),但保留对其原始作用域中的变量(在本示例中,即 maximumWordLength 变量)的访问权限。

闭包的功能非常强大,此简单示例仅作演示之用。闭包类似于在 C# 中使用 LINQ 或向 Exists 或 Find 方法传递委托,此外,闭包还有一个优点,可保留对其原始作用域的访问权限。有关闭包的详细信息,请参阅我与 Jeff Scanlon 合著的“Accelerated Silverlight 3”(Apress,2009 年 7 月)一书。

时间: 2024-09-20 00:10:19

动态.NET的相关文章

PS制作方脸猪GIF动态图

  PS制作方脸猪GIF动态图.这篇教程是向小编介绍用photoshop软件制作QQ表情动图之方脸猪wink方法,教程很不错,很值得大家学习,一起来看看吧. 方法/步骤 首先新建图层,画一个粉色的矩形,作为猪脸. 用钢笔画出耳朵,栅格化图层,填充为粉色,描边为黑色,复制耳朵图层,水平翻转,按住shift键移动到水平对面,并合并两个耳朵图层.裁剪图像,只剩矩形大小. 分类: PS入门教程

jquery实现动态改变div宽度和高度

  这篇文章主要介绍了jquery实现动态改变div宽度和高度,效果非常不错,而且兼容性也很好,有需要的小伙伴可以参考下. 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x

学ASP动态网页必备:IIS 错误代码

iis|错误|动态|网页     400 无法解析此请求.     401.1 未经授权:访问由于凭据无效被拒绝.     401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝.     401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝.     401.4 未经授权:Web 服务器上安装的筛选器授权失败.     401.5 未经授权:ISAPI/CGI 应用程序授权失败.     401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问

Spring实现动态数据源,支持动态添加、删除和设置权重及读写分离

当项目慢慢变大,访问量也慢慢变大的时候,就难免的要使用多个数据源和设置读写分离了. 在开题之前先说明下,因为项目多是使用Spring,因此以下说到某些操作可能会依赖于Spring. 在我经历过的项目中,见过比较多的读写分离处理方式,主要分为两步: 1.对于开发人员,要求serivce类的方法名必须遵守规范,读操作以query.get等开头,写操作以update.delete开头. 2.配置一个拦截器,依据方法名判断是读操作还是写操作,设置相应的数据源. 以上做法能实现最简单的读写分离,但相应的也

动态字段名-linq 字段名动态改变 动态添加数据

问题描述 linq 字段名动态改变 动态添加数据 我遇到的问题是: 我要添加的一张表的字段名是动态的,也就是说A网页调用A数据表,B网页调用B数据表.我现在希望写一个基类,来完成这两个表的添加数据操作,而不是采用 表名A.字段名a = 值; 表名A.字段名b = 值; 表名B.字段名c = 值; 表名B.字段名d = 值;的方式进行赋值.我希望的格式为: 表名(是个变量).字段名(是个变量)= 值.谢谢! 解决方案 http://www.cnblogs.com/gmtyt/archive/201

link中使用动态算子实现排序的机制是什么,怎么样能优化?

问题描述 link中使用动态算子实现排序的机制是什么,怎么样能优化? link中使用动态算子实现排序的机制是什么,怎么样能优化? 解决方案 使用dynamic其实是运行时反射,要想效率高,用查询表达式,google MakeMemberAccess LINQ

Linux架设支持Mysql的动态Web服务器

本文是笔者在Linux服务器上安装PHP动态Web服务器.Mysql数据库的安装配置手册.通过在服务器安装Apache.Mysql.PHP 等功能实现一个建立一个PHP全动态的Web站点.本文是以Redhat9.0 Linux作为操作系统平吧, Apache版本是1.3.29;数据库 Mysql的牌本是3.23.58.PHP的版本是4.3.4! Linux系统的安装在此不在讨论,本文是以Redhat 9.0最小化安装加上内核开发包的基本上进行配置安装的.对于其它安装有apache,mysql和p

动态网页制作:ASP、JSP、PHP三种技术比较

js|比较|动态|网页 目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor). 简 介 ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的.互动的.高性能的WEB服务应用程序.ASP采用脚本语言VBScript(Java script)作为自己的开发语言. PHP是一种跨平台的服务器端的嵌入式脚本语言.它大量地

动态网站制作:ASP,PHP,JSP的比较

js|比较|动态 目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(Java Server Pages),PHP (Hypertext Preprocessor). 简 介 ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运行动态的.交互的.高性能的WEB服务应用程序.ASP采用脚本语言VB Script(Java script)作为自己的开发语言. PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量

帝国之争 动态网页编程语言谁主沉浮?

编程|动态|网页 ASP JSP PHP是动态网页编程语言中的三大霸主,ASP的全称是Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和运行动态的.交互的.高性能的WEB服务应用程序.ASP采用脚本语言VBScript(Java script)作为自己的开发语言.JSP是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病,脚本级执行(据说PHP4也已经在Zend的支持下,实现编译运行).Sun公司借助自己在Java上的不凡造诣,将J