RSS 2.0 Feed

Saturday, April 05, 2008

今天微软模式与实践开发团队发布了Unity 1.0。

Unity应用块(简称Unity) 是个轻量级的,可扩展的依赖注入容器,支持构造器,属性,方法调用的依赖注入,它旨在促进建造松耦合的应用,给.NET开发人员提供了下述好处:

  • 它提供了简化的对象生成,特别在分层对象结构和依赖的情形下 
  • 它支持需求的抽象化,这允许开发人员在运行时或在配置文件中指定依赖,简化横切关注点(crosscutting concerns)的管理 
  • 它通过把组件配置推给容器来决定,增加了灵活性 
  • 它提供了服务定位的能力,这允许客户端存储和缓存容器。在ASP.NET web应用中开发人员需要在ASP.NET会话变量或应用变量中持久化容器时尤其有用。

 

Unity的首页(包括下载地址,在线文档等)
http://msdn2.microsoft.com/en-us/library/cc468366.aspx

直接下载地址:
Unity Application Block
http://www.microsoft.com/downloads/details.aspx?FamilyId=6A9E363C-8E0A-48D3-BBE4-C2F36423E2DF&displaylang=en

文档下载地址:
Unity Application Block Documentation for Visual Studio 2008
http://www.microsoft.com/downloads/details.aspx?FamilyId=E9B364B2-08EA-4CFC-BE2F-0E0F2040D970&displaylang=en

 

CodeBetter的David Hayden推出过N个关于Unity的screencast,并且撰写了N个相关教程和例程:
http://www.pnpguidance.net/Post/Unity10ReleasedMicrosoftIoCDependencyInjection.aspx

.NET中还有多个开源的依赖注入容器,Scott Hanselman的这篇博客有个列表:
List of .NET Dependency Injection Containers (IOC)
http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx

另外,一个星期前,微软模式与实践开发团队悄然推出了 Enterprise Library 4.0的第一个CTP版:
http://www.codeplex.com/entlib/Release/ProjectReleases.aspx?ReleaseId=12142

目前这个预览版还没有集成Unity。

posted @ | Feedback (0) |

Monday, March 17, 2008

由MVP王少葵主持翻译的《C#与.NET 3.0高级程序设计(特别版)》(人民邮电出版社)终于出版了,我参与了其中第六部分的翻译。

原作者 Andrew W. Troelsen,微软MVP,是个多产作者,在微软平台技术,尤其是.NET方面有很深的造诣。该书的早期版本曾入围2002年Jolt大奖的最后提名,并获得2003年Referenceware编程图书类的Excellence Award。

原书中来自Slashdot的评论:

“本书极为全面、细致深入地探讨了C#与.NET 2.0框架的各种特性。其中对CIL的介绍和运用尤为精彩,超过了任何其他文章和图书。绝对值得拥有。”

posted @ | Feedback (6) | Filed Under [ 书籍 .NET ]

Wednesday, March 12, 2008

Mr.“IronRuby” John Lam在他的博客上登出了三篇贴子,其内容是他在MIX08大会上做的讲座的文字版
Microsoft Silverlight and Dynamic Languages
http://visitmix.com/blogs/2008Sessions/T28/

讲座录像的MP4版: http://msstudios.vo.llnwd.net/o21/mix08/08_MP4s/T28.mp4 (57.6MB)
讲座录像的WMV版: http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T28.wmv (84.1MB)

演示代码可以在这里下载:
http://dynamicsilverlight.net/

在第一篇《Dynamic Silverlight Part 1: Hello, World! in Dynamic Silverlight》中,主要介绍随Silverlight 2 Beta 1一起发布的Chiron.exe命令行工具。这个工具有2大主要功能,一是可以帮你把应用的文件,资源,程序集等转换压制成.xap文件,二是提供一个简单的web服务器的功能,让你使用文件系统就能开发Silverlight应用。由于Chiron是动态生成.xap文件的,你对文件做变动后,只要刷新浏览器就可以获得新的.xap文件,不用重启Chiron或浏览器,提供了很好的交互开发体验。

在第二篇《Dynamic Silverlight Part 2: Managed JScript and flickr》中,示范了如何使用托管的JScript (与我们在浏览器中的客户端Javascript不同) 与Flickr API做交互,让用户查询相关主题的照片,并将照片显示在Silverlight中。还演示了在Silverlight中,原封不动地使用Peter Norvig(AI大师)用Python编写的Spelling Corrector(拼写纠错器),提示用户输入的主题可能有错。

在第三篇《Dynamic Silverlight Part 3: Integrating Silverlight with ASP.NET MVC 》中,示范了如何与ASP.NET MVC应用做集成。通过Chiron生成.xap文件,用IronRuby在客户端动态生成WPF元素,使用WebClient与服务器端做交互等。

posted @ | Feedback (1) | Filed Under [ ASP.NET/IIS .NET IronPython/IronRuby/F# WPF/SilverLight ]

Sunday, March 09, 2008

【原文地址】Programming Silverlight with Dynamic Languages

 

 

介绍

这个快速入门例程展示了如何创建使用了托管代码和动态语言的基于微软的Silverlight的应用,以及如何在Visual Studio 2008中调试应用。

Visual Studio 2008之Siverlight工具Beta 1版本包含了动态语言运行时(DLR)和三门动态语言(IronPython, IronRuby, 和托管JScript)的快照。Visual Studio 2008目前还不提供动态语言的项目模板,但你可以使用Chiron.exe 工具来建造,运行和调试你的应用。

DLR和动态语言目前在Codeplex网站,尚处于开发之中。你可以在那里找到有关的详细信息,包括新的版本,源代码,和另外的Silverlight例程。新的版本会经常地发布出来。

 

本文讨论了下述主题:

  • 创建一个基于Silverlight的动态语言应用,并用Chiron.exe运行该应用

  • 创建一个.xap部署文件

  • 访问托管程序集中的类库

  • 使用Chiron.exe和Visual Studio调试基于Silverlight的动态语言应用

软件要求 (可从 Silverlight下载网站获取):

  • Silverlight 2 Beta 1版本

  • Visual Studio 2008

  • Visual Studio 2008之Silverlight 工具Beta 1版本

用动态语言创建基于Silverlight的应用

一个使用动态语言的基于Silverlight的简单应用包括下列组成部分:

  • 根目录的HTML或.aspx文件,作为浏览器的入口点

  • app.xaml文件,定义了你的基于Siliverlight应用的用户界面

  • app.py, app.rb, 或app.jsx 文件,内含在运行时处理事件的动态语言代码。对动态语言来说,这个文件是不被编译成一个程序集的,动态语言的代码是在运行时在客户端计算机上编译和执行的

    动态语言引擎和DLR程序集是包含在由Chiron.exe 生成的.xap 文件中,并下载到客户端计算机的。你不需要在你的项目中包含它们。

使用动态语言创建和运行基于Silverlight的应用

  1. 为你的应用创建一个文件夹.

  2. In the application folder, create two folders named app and assets. Use the assets folder for bitmaps and additional XAML files.在应用的文件夹中,创建2个子文件夹,分别名为app和 assets。用assets存放位图和另外的XAML文件。

    如果你想使用silverlight.js来在应用启动时做更大的控制,assets文件夹是存放silverlight.js的好所在。本例程中的应用不使用silverlight.js。你的应用不必局限于这个简单的文件夹结构。这只是一个可为Chiron.exe所用,不用指定任何特别参数的基本的结构。你的应用程序可以访问任意复杂的文件夹结构,可以包含任意数目的动态语言代码文件。

  3. 在app文件夹中,创建app.xaml。这个文件包含你的应用的根可视元素。一个简单的基于UserControl的app.xaml文件看上去也许会象这样:

    <UserControl
       xmlns="http://schemas.microsoft.com/client/2007"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       x:Class="System.Windows.Controls.UserControl"
       x:Name="Page" 
       >
       
       <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" 
          Foreground="Black" Text="Click Me." />
    </UserControl>

    将根可视元素基于UserControl是推荐的做法,使用本文一开始的“查看源码”按钮看一下另外一个app.xaml的例子。

  4. 在app文件夹中,创建一个动态语言源码文件,内含你的应用代码。下面的代码展示了一个响应鼠标按钮事件的非常简单的应用。

    jsx

    Import("System.Windows.*");
    Import("System.Windows.Controls.*");
    
    xaml = Application.Current.LoadRootVisual(new UserControl(), 'app.xaml')
    
    xaml.TextBlock1.MouseLeftButtonUp += function (sender, args) {
        sender.FontSize *= 2
    }
    
    

    py

    from System.Windows import Application
    from System.Windows.Controls import UserControl
    
    def OnClick (sender, args):
        sender.FontSize *= 2
    
    scene = Application.Current.LoadRootVisual(UserControl(), 'app.xaml')
    scene.TextBlock1.MouseLeftButtonUp += OnClick
    
    

    rb

    include System::Windows
    include System::Windows::Controls
    
    scene = Application.current.load_root_visual UserControl.new, 'app.xaml'
    
    scene.find_name('TextBlock1').mouse_left_button_up do |sender, args|
       sender.font_size = sender.font_size * 2
    end
    
    

    代码调用了LoadRootVisual(DependencyObject, Uri)方法,来设置一个根可视对象,你必须提供一个正确类型的对象,DLR会确保调用了正确的重载方法,并且提供所需的代码上下文。

    使用本文一开始的“查看源码”按钮,得到一个定义了App类的更复杂的例子。

    在随Visual Studio 2008之Silverlight工具Beta 1版本发布的IronRuby版本中,对每个给定的事件(例如MouseLeftButtonUp)只能连接一个事件处理函数。关于语言开发和更新版的详情,请参考Codeplex网站

  5. 在你的应用文件中,创建一个HTML页面来启动你的应用。使用“查询源码”按钮,拷贝为所有三门语言所用的Default.html文件。如果你遵循了本步骤中的命名约定,不做任何改动,你就可以使用这个Default.html文件。

    Default.html 中最重要的一行是指定了app.xap 文件的这一行,该文件包含你的源代码和DLR程序集。

        <object data="data:application/x-silverlight," 
          type="application/x-silverlight-2-b1" 
          width="100%" height="100%">
          <param name="source" value="app.xap"/>

    Default.html还有另外的特性,包括在你调试你的应用时,一个用以显示错误信息的<div>。

  6. 如果你以前没用过Chiron.exe ,将它的路径加到路径环境变量中。

    Chiron.exe位于SDK安装的Tools文件夹之中。如果你使用了默认的安装路径,这个文件夹在\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools。

  7. 要运行你的应用,使用命令行窗口,以/browser (/b)选项运行Chiron.exe。从应用文件中运行Chiron.exe。

    Chiron.exe 将你的应用文件夹中的内容提供给浏览器。

    在默认情形下,Chiron.exe使用“app”作为包含你的入口代码的文件夹,你可以使用/directory (/d)来改变这个默认选项。

    Chiron.exe 会一直在命令行窗口中运行,显示状态消息。

  8. 在浏览器中,点击Default.html来运行应用。

    Chiron.exe 会按需生成.xap文件。你的Silverlight的应用就会打开,点击其中的文字就会增加字体大小。将浏览器开着。

  9. 为表示.xap文件确实是按需生成的,编辑源码文件。改动增加字体大小的那行代码,将它变成减小透明度:

    jsx

    sender.Opacity /= 2
    
    

    py

    sender.Opacity /= 2
    
    

    rb

    sender.opacity = sender.opacity / 2
    
    
  10. 在浏览器中,刷新网页。

    Default.html请求app.xap,Chiron.exe会生成一个新的app.xap文件。应用会重启,点击控件,注意文字的透明度现在会减小。 你可以使用这个技术反复编辑和测试你的应用,而不用重启Chiron.exe。在后面的一个步骤中,你将看到在用Visual Studio调试时,如何进行同类的迭代开发。

  11. 关闭浏览器。

  12. 在命令行窗口中,按CTRL+C中止Chiron.exe。

创建一个.xap部署文件

要部署你的应用,你必须创建一个.xap文件,内含你的动态语言源码,manifest,XAML,以及象位图,语言编辑器,和DLR程序集等资源。Chiron.exe能做此功能。

创建.xap文件

  1. 使用命令行窗口,使用 /directory (/d) 和 /zipdlr (/z)选项运行Chiron.exe。从应用的文件夹中运行Chiron.exe ,就象你在开发和测试应用时做的那样。

    /directory 选项指定了包含应用入口点的目录,而/zipdlr 选项指定了.xap文件的名称。对在上面开发的应用,所用的命令看上去象这样:

    Chiron.exe /directory:app /zipdlr:app.xap
  2. 把Copy Default.html和app.xap拷贝到想要的地点去。

Chiron.exe有个命令行帮助,列出了所有的选项,或者你也可以在Chiron.exe同个文件夹中的Readme.txt文件中找到列出的这些选项。Readme.txt 文件还包含了如何配置Chiron.exe 来使用其他动态语言的信息。

访问类库

要编写基于Silverlight的应用,你需要访问Silverlight类库,加上任何你想用的其他基于Silverlight的类库。在默认情形下,DLR提供了对下列程序集的引用:

  • mscorlib.dll

  • System.dll

  • System.Windows.dll

  • System.Windows.Browser.dll

  • System.Net.dll

 

对这些程序集,你可以略过添加程序集引用的步骤。你还可以访问DLR程序集,Microsoft.Scripting.dll 和 Microsoft.Scripting.Silverlight.dll。你不用导入Microsoft.Scripting.Silverlight 命名空间。

从IronPython中访问基于Silverlight的类库

  1. 使用import语句装载clr模块

    import clr
  2. 使用clr.AddReference函数装载程序集,使它们的内容可作import之用

    clr.AddReference("MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089")
  3. 使用import语句,向当前的上下文添加命名空间或装载模板。 你必须在使用命名空间前先将它们导入

    import System.Windows
    import System
    import MyPythonModule
  4. 使用from … import语句将一个命名空间或模板的内容加到当前上下文

    from System.Windows import *
    from System.Windows.Controls import UserControl*

     

从托管JScript中访问基于Silverlight的类库

  1. 使用AddReference函数装载程序集,使它们的内容可作导入之用

    AddReference("MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089")
  2. 使用Import函数把命名空间导入到当前上下文,你必须在使用命名空间前先将它们导入

    Import("System.Windows")
    Import("System")
  3. 使用Import函数将一个命名空间的内容导入到当前上下文

    Import("System.Windows.*")
    Import("System.*")

    除了搞乱全局上下文外,加入System中的所有类型还会把托管JScript的Array类型替换成System.Array,你也可以导入特定的类型。

  4. 使用ImportAlias函数以别名将一个命名空间或类型导入到当前上下文中

    SW = ImportAlias("System.Windows")
  5. 使用LoadModule和LoadModuleFromFile函数装载模板,这些方法返回装载的模板,LoadModuleFromFile的第二个参数指定了模板的类型,"js" 或 "py"

    util = LoadModule("MyUtilities")
    util = LoadModuleFromFile("MyUtilities", "py")

     

从IronRuby中访问基于Silverlight的类库

  1. 使用require语句装载程序集,使它们的内容可作包含之用

    require MyAssembly
  2. 使用include 语句将命名空间加到当前上下文

    include System.Windows
    

使用Chiron.exe和Visual Studio调试基于Silverlight的应用

在Visual Studio 2008之Silverlight工具Beta 1版本中,你可以使用Visual Studio 2008来调试用了动态语言的基于Silverlight应用。你的基于 Silverlight的应用必须下载到浏览器里才能运行,调试器必须在代码下载后才能启动。你可以在调试外改动你的代码,重新装载代码而不用重新连接浏览器进程。

调试动态语言应用

  1. 把你要调试的动态语言文件装载进Visual Studio,设置断点

  2. 从应用文件夹中,以/browser (/b)选项运行Chiron.exe,将目录内容提供给浏览器

  3. 在浏览器中,点击Default.html启动应用

    Chiron.exe会按需生成.xap文件,应用的启动代码将运行

  4. 在Visual Studio中,在Debug菜单上,点击Attach to Process(连接到进程)

    因为你的应用是在浏览器中运行的,你必须连接到浏览器进程中才能调试

  5. 在Attach to Process对话框中,在Available Processes列表中,在Process一列,点击选择适当的浏览器实例

    如果你有打开着的其他的浏览器实例,给Default.html一个标题,使之可从Title一列中易于识别

  6. 点击Attach.

  7. 转到浏览器,点击F5刷新Default.html

    你的应用将在调试器中重新装载,你现在就可以开始调试了。你在起始代码中设置的任何断点就会在应用重新装载时触发。

    重要注意事项

    你必须在连接打调试器之后,刷新页面,重载你的应用。如果你没有先刷新页面,就开始与你的应用做交互,你的断点一个也不会被触发的。

  8. 使用第二个 Visual Studio实例或另一个编辑器,对你的代码做改动,然后将其保存。

    你不能在连接到浏览器进程的Visual Studio实例中对代码做改动。【译注:好像是可以的】

  9. 在浏览器中,刷新你的HTML页面

    Chiron.exe会生成一个新的.xap文件,你的应用的起始代码会运行。如果你在起始代码中有断点,它们就会被触发。

  10. Visual Studio会告诉你源码文件被作了改动,询问是否要重新装载。点击Yes,重新装载文件,继续你的Visual Studio调试会话。

     

    如果你在另外的编辑器里保存你的改动时,你的Visual Studio调试会话正处于一个断点在单步调试进代码时,你无法转换到浏览器。而是转到你的Visual Studio调试会话,你会被询问是否要重新装载源码文件。然后你必须刷新浏览器。

    你可以继承在调试和改动代码之间转换,而不用中止浏览器或Chiron.exe。

  11. 调试完毕后,脱离进程。关闭浏览器,使用CTRL+C 中止Chiron.exe。

     

调试特性的状况

包含在Visual Studio 2008之Silverlight工具Beta 1版本中的 DLR和动态语言快照支持大多数的调试特性。例如,你可以使用F10和F11跳过或步入代码。使用 Locals 窗口查看变量数值,以及在Immediate窗口中设置变量数值或执行代码。

在IronPython中,但你使用F10,超过函数的结尾,控制返回到浏览器时,Visual Studio 2008会显示一个对话框告诉你没有可用的源代码。点击OK关闭对话框,然后点击F5继续。

一些语言中的支持会比另外一些语言中的好。调试支持将会随语言的开发继续扩充。欲知最新的信息,请访问Codeplex网站

posted @ | Feedback (4) | Filed Under [ ASP.NET/IIS .NET WPF/SilverLight ]

Saturday, March 08, 2008

已经可以直接观看或下载了:

http://sessions.visitmix.com/

Luciano Evaristo Guerche先生在博客里列出了一些录像的直接链接:

Mix 2008, 65 presentations so far (WMV direct links)
http://weblogs.asp.net/guerchele/archive/2008/03/07/mix-2008-65-presentations-so-far-wmv-direct-links.aspx

 

跟Silverlight有关的录像,

Keynote I (第一天的主题演讲)
Dean Hachamovitch, Ray Ozzie, Scott Guthrie
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/KYN0801.wmv

Building AOL's High Performance, Enterprise Wide Mail Application With Silverlight 2
Eric Hoffman, Marc Katchay, Stefan Gal
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BT01.wmv


Building Rich Internet Applications Using Microsoft Silverlight 2, Part 1
Joe Stegman, Mike Harsh

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/CT01.wmv

Building Rich Internet Applications Using Microsoft Silverlight 2, Part 2
Joe Stegman, Mike Harsh

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/CT02.wmv

Creating Rich, Dynamic User Interfaces with Silverlight 2
Karen Corby

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T20.wmv

Encoding Video for Microsoft Silverlight
Ben Waggoner
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BCT07.wmv

Exploring Moonlight: Novell's Implementation of Silverlight on Linux
Miguel de Icaza

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T31.wmv

From Flash to Silverlight: A Rosetta Stone
Rick Barazza
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T30.wmv

Integrating Media in Silverlight Applications
Ed Maia
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BCT05.wmv

Internationalizing XAML Applications in Windows Presentation Foundation and Microsoft Silverlight
Ken Azuma, Laurence Moroney, Ted Kitamura

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T15.wmv

Mobile Devices and Microsoft Silverlight: A Primer on the New Technology
Amit Chopra, David Kline
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T12.wmv

Real World Design: Working with Silverlight and WPF in the Design Studio
Beau Ambur, Chip Aubry, Chris Bernard, Nathan Dunlap, Rich Weston
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/PNL16.wmv

Silverlight and Advertising
Eric Schmidt
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BT06.wmv

Silverlight as a Gaming Platform
Joel Neubeck, Scott McAndrew

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/CT03.wmv

The Business of Microsoft Silverlight
Danny Riddell
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/B01.wmv

Using Microsoft Silverlight for Creating Rich Mobile User Experiences
Giorgio Sardo
http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/C02.wmv

Working with Data and Web Services in Microsoft Silverlight 2
Eugene Osovetsky

http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T13.wmv

posted @ | Feedback (1) | Filed Under [ ASP.NET/IIS .NET WPF/SilverLight ]

Friday, March 07, 2008

Jesse Liberty,the Silverlight Geek,正在silverlight.net上发表一个《Silverlight教程系列》。目前已经发表了四篇,看上去很不错:

教程0: 路线图

教程1: 控件

教程2: 数据绑定

教程3: 样式和模板

posted @ | Feedback (2) | Filed Under [ AJAX/ATLAS WPF/SilverLight ]

【来源】silverlight.net网站上 的 《Silverlight Overview》文章

 

功能 Silverlight 1.0 Silverlight 2 Beta 1

  2D 矢量动画/图形

  AJAX 支持

  跨浏览器 (Firefox, IE, Safari)

  跨平台 (Windows, Mac)

  框架语言
  (Visual Basic, Visual C#, IronRuby, Ironpython)

-

  HTML DOM 集成

  HTTP Networking

  隔离存储(Isolated Storage)

-

  JavaScript支持

  JSON, REST, SOAP/WS-*, POX, 和RSS Web Services (以及对Sockets的支持)

-

  跨域网络访问

-

  LINQ to Objects

-

  Canvas布局支持

  StackPanel, Grid 和 Panel布局支持

-

  托管的控件框架

-

  整套控件(TextBox, RadioButton, Slider, Calendar, DatePicker, DataGrid, ListBox等等)

-

  Deep Zoom 技术

-

  托管的HTML桥

-

  托管的异常处理

-

  媒体 – 内容保护

-

  媒体 – 720P 高清晰 (HD) 视频

  媒体 – 音频/视频支持 (VC-1, WMV,
  WMA, MP3)

  媒体 – 图像支持  (JPG, PNG)

  媒体记号

  丰富的核心框架(例如泛型,集合等)

-

  安全执行

-

  Silverlight ASP.NET 控件  
  (asp:media, asp:xaml)

  类型安全确认

-

  Windows Meda Server支持

  XAML Parser (基于WPF)

  XMLReader/Writer

-

posted @ | Feedback (1) |

IE8带来了一堆改进和新功能,这些改进包括CSS 2.1 兼容,开发者工具,更好的AJAX开发支持等,详见
How do I make my site 'light up' with Internet Explorer 8?
http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/DevelopersNew.htm

比较关心的是涉及AJAX开发的,更为详细的文档在这里
Better AJAX Development
http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&ReleaseId=581

这些改进包括:
1.AJAX导航支持(前进,倒退按钮工作了!)
2.DOM储存(简洁的API,每个域可在本地保存10M的数据)
3.网络连接事件(online以及offline事件,还可以通过window.navigator.onLine来监测连接状态)
4.把per host的并发连接数从2增加到6
5.XMLHTTPRequest改进,包括添置了timeout属性,以及ontimeout事件,以允许开发人员中止请求

更为激动人心的是对跨域请求(XDomainRequest-XDR)的支持!不再需要通过同源服务器来作为代理服务器,只要异域返回 XDomainRequestAllowed=1的header就可以(譬如通过Response.AppendHeader("XDomainRequestAllowed","1") ):

// 1. Create XDR object
xdr = new XDomainRequest();

// 2. Open connection with server using POST method.
xdr.open("POST", "http://www.contoso.com/xdr.txt")

// 3. Send string data to server.
xdr.send("data to be processed")

以前曾在博客里谈到如何通过URL的hash来在来自不同域的网页之间通讯,绝对是比较丑陋的方案:
http://blog.joycode.com/saucer/archive/2006/10/03/84572.aspx

IE8现在支持跨文件消息通讯(Cross-Document Messaging-XDM)!通过onmessage事件和postMessage方法,两个来自不同域的网页可以进行通讯:

窗口A:(来自contoso.com)

// 1. Create event handler for message event.
<document.onmessage = HandleMsg()>

// 2. Post message to a secure page B.
window.postMessage("Hello world", "https://lucernepublishing.com")

窗口B:(来自lucernepublishing.com)

// 3. Create event handler for message event.
<document.onmessage = HandleMsg()>

// 4. Create event object off window.

var e = window.event

// 5. Check domain on received event to ensure the message
// comes from the expected domain.

if (e.domain = "contoso.com")
if (e.scheme = "HTTPS")

// 6. Retrieve data from event.
var data = e.data

// 7. Send return message to Page A.
e.source.postMessage("Hello")

posted @ | Feedback (3) | Filed Under [ ASP.NET/IIS AJAX/ATLAS ]

Thursday, March 06, 2008

1. Microsoft Silverlight Tools Beta 1 for Visual Studio 2008
http://www.microsoft.com/downloads/details.aspx?FamilyID=e0bae58e-9c0b-4090-a1db-f134d9f095fd&DisplayLang=en

内含:
  • Silverlight 2 Beta 1
  • Silverlight 2 SDK Beta 1
  • KB949325 for Visual Studio 2008
  • Silverlight Tools Beta 1 for Visual Studio 2008

Silverlight控件示范页:
http://silverlight.net/Samples/2b1/SilverlightControls/run/default.html

这里有一个贴子,列出了可以单独下载的组件的详细链接:
http://silverlight.net/forums/t/10586.aspx

Mr. “IronRuby” John Lam 有一个贴子,展示如何在Silverlight中使用IronRuby(还没有下载链接):
Dynamic Silverlight Part 1: Hello, World!
http://www.iunknown.com/2008/03/dynamic-silverl.html

 

2. Expresssion Blend 2.5三月份预览版:
Microsoft Expression Blend 2.5 March 2008 Preview
http://www.microsoft.com/downloads/details.aspx?FamilyID=32a3e916-e681-4955-bc9f-cfba49273c7c&DisplayLang=en

 

3. 这次MIX08大会主题演讲还宣布了IE8 Beta1的发布,可以在这里下载:
http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm

其中的2个新功能是ActivitiesWebSlices! 这里有个演示:
First Look at IE8 Activities and WebSlices
http://visitmix.com/blogs/Joshua/IE8-Activities-With-Jane-Kim/

 

4. ASP.NET 3.5 Extensions Preview 2 (包括 ASP.NET MVC Preview 2):
http://www.microsoft.com/downloads/details.aspx?FamilyID=a9c6bc06-b894-4b11-8300-35bd2f8fc908&DisplayLang=en

 

5. ASP.NET MVC Preview 2的单独下载:
http://www.microsoft.com/downloads/details.aspx?FamilyID=38cc4cf1-773a-47e1-8125-ba3369bf54a3&displaylang=en

posted @ | Feedback (6) | Filed Under [ ASP.NET/IIS .NET WPF/SilverLight ]

Tuesday, February 26, 2008

在Scott Guthrie的《Silverlight 2初览原文的回复中,他回答了很多问题,涉及了Silverlight 2.0的很多细节:

平台/浏览器/设备:
--支持Linux(将由Novell提供)
--支持FireFox
--支持移动设备

兼容性:
--Silverlight 2是与Silverlight 1应用相兼容的

开发:
--将提供设计器支持

文件:
--提供多个 .xap 文件支持,可以按不同颗粒的层次缓存

测试:
--Silverlight 2将支持一个单元测试框架
--同时支持UI自动化接口
--会提供工具捕捉code coverage

安全:
--Silverlight 2运行于一个安全的sandbox之中
--无法运行unsafe code(不安全代码)
--终端用户可以对其设置本地储存的限制(默认是1MB),在用户清除浏览器缓存时,这个本地储存也会被清楚

搜索引擎支持:
--需要开发人员做额外的工作,微软将提供指南

Accessibility支持:
--支持accessibility(Section 508和AAA网站),可以与屏幕阅读器协作

工作流支持:
--Silverlight 2不支持

本地化支持:
--提供字体和IME支持,也会使用本地系统字体

posted @ | Feedback (1) |

Saturday, February 09, 2008

MSDN上最近发表了一篇Elisa Flasko著的文章,比较了LINQ to SQL与LINQ to Entities适用的场景:
Introducing LINQ to Relational Data
http://msdn2.microsoft.com/en-us/library/cc161164.aspx

作者指出,LINQ to SQL主要的应用场景是针对微软SQL Server数据库的快速开发,这些应用的对象模型与数据库中数据定义的结构间非常类似,几乎有一一对应的映射关系,这样你可以使用LINQ to SQL把一些数据表直接映射到.NET类,数据字段映射到的相应的.NET类的属性上。作者总结如下:

LINQ to SQL适用之场景

  • 想使用ORM方案,而且数据库数据定义与对象模型是1:1对应关系
  • 想使用ORM方案,而且对象继承结构储存在单一数据表中(单表继承)
  • 想使用原始CLR类,而不是使用生成的类或需要从某个基类继承而来,或者需要实现某个接口
  • 想使用LINQ来编写查询
  • 想使用ORM,但需要性能非常好,可以通过存储过程和编译的查询来优化性能

注意,跟外面的一些传说相反,LINQ to SQL是支持对象继承的,虽然只支持常见的三种继承模式中的一种,LINQ to SQL也支持使用外部映射文件。

LINQ to Entities主要的应用场景针对的是需要非常灵活和更复杂的映射的场景,特别是在企业应用方面,而且需要访问其他的数据库系统。在这些场景中,数据表的结构与对象模型也许差别很大,而且应用开发人员往往并不拥有生成或修改数据库数据定义的权利。

LINQ to Entities适用之场景

  • 想要开发针对微软SQL Server或其他数据库系统的应用
  • 想要定义领域模型,并以之为持久层的基础
  • 想要使用ORM方案,对象也许与数据库数据定义有1:1对应关系,也许结构迥异
  • 想要使用支持单表继承和其他储存方案(每类一表,每具体类一表)的ORM方案
  • 想使用LINQ来编写查询,并且查询可以在不同数据库系统下工作
  • 想使用ORM,但需要性能非常好,可以通过存储过程和编译的查询来优化性能

posted @ | Feedback (2) | Filed Under [ .NET ORM LINQ ]

Wednesday, February 06, 2008

根据zdnet的Mary Jo Foley,作为微软代号为Oslo的SOA技术和战略(提供一个世界级的主流建模平台,促进IT和业务间的合作和集成)的一部分,微软正在开发一门代号为D的新编程语言(此D非那D也)。D将是一门声明式的文字建模语言(textual modeling lanuage),目标用户是业务专业人员和领域专家。围绕着D,将有一个新的编辑工具,称为Intellipad (也有Emacs.Net编辑器一说)。

在上个月底在微软举行的Lang. NET会议上,微软的Chief Modeling Officer Don Box对此做了一些提示。他说,微软对开发一种类似80年代CASE工具那样的东西不感兴趣,

“This is not some 1980s CASE [Computer-Aided Software Engineering] play where we're doing round-tripping between your UML [Unified Modeling Language]—although we’ll probably do some of that. But really what we're talking about is making the platform just work this way so that the thing that's on the hard disk and runs is more data than it is code.”

微软的目的是“把更多应用的东西放到数据里去,少放在代码里(putting more and more of your application into data and putting less in code)”,“允许开发人员少写代码,更好地理解他们要开发的软件 (to enable developers to write less code and to better understand their software)”。

Mary Jo Foley猜测,也许到10月份PDC时,微软会公布该语言的技术预览版。

Ted Neward对Lang. NET会议写有3篇博客,值得一读(虽然对Don Box的演讲着墨过少):

Highlights of the Lang.NET Symposium, Day One
http://blogs.tedneward.com/2008/01/29/Highlights+Of+The+LangNET+Symposium+Day+One.aspx

Highlights of the Lang.NET Symposium Day Two
http://blogs.tedneward.com/2008/01/30/Highlights+Of+The+LangNET+Symposium+Day+Two.aspx

Highlights of the Lang.NET Symposium, Day Three (from memory)
http://blogs.tedneward.com/2008/01/31/Highlights+Of+The+LangNET+Symposium+Day+Three+From+Memory.aspx

posted @ | Feedback (5) | Filed Under [ Indigo/SOA .NET ]

Friday, January 18, 2008

Scott Guthrie在博客中宣布你现在可以在Visual Studio 2008中调试.NET框架源代码了,Shawn Burke在博客中讨论了如何配置的详细步骤。

其中需要注意的是第一步(以前读过展波兄的配置贴子的要注意一下),你应该安装Visual Studio 2008 QFE。这个补丁是用来解决调试过程中从远程服务器按需下载源码时的性能问题,以及避免调试启动过程中多次出现不必要的用户许可协议对话框的。

如果你遇上问题的话,参考一下Shawn Burke的博客后面的14个常见问题答复

如果你为WinDbg设置了_NT_SYMBOL_PATH环境变量使用微软符号服务器,你也许会遇上找不到“Load Symbols”以及无法看到框架源代码的问题,参考Shawn Burke的第4个常见问题的答复, CodeBetter的James Kovacs对此有更详细的解决步骤。

posted @ | Feedback (7) | Filed Under [ .NET VSTS/TFS ]

Tuesday, January 08, 2008

这是比尔-盖茨在CES上做主题演讲时播出的搞笑录像(出现在录像中的,除了微软的高层领导外,还有著名导演斯皮尔伯格,著名演员克罗尼和麦康纳,前副总统高尔,正在争夺民主党总统候选人的克林顿夫人和奥巴马等),很好玩

http://www.youtube.com/watch?v=HEWMC4usElM

posted @ | Feedback (4) | Filed Under [ 杂类 ]

Wednesday, November 28, 2007

看到博客园在轰轰烈烈讨论程序员的基础/基本功问题,正好在devlicio.us上看到Billy McCafferty撰写的《站在巨人的肩膀上》一文,推荐一下:
Standing on the Shoulders of Giants
http://devlicio.us/blogs/billy_mccafferty/archive/2007/11/12/standing-on-the-shoulders-of-giants.aspx

文中说到,随着这个世界越来越依赖我们的实践,作为计算机行业的从业人员,对计算机行业的 science 实在有必要给与应有的尊重。行动的第一步,就是阅读一些经典的著作,掌握前人/前辈/行业大家们总结出来的知识和行之有效的实践,在日常实践中使用这些知识和实践,成为一个更好的开发人员。他将这些著作分成五大类:

基本读物(Foundational Texts) (每个开发人员都应该读的,没有例外,不管什么经验或平台。这些读物注重讨论如何编写更好,可维护的代码,向坚实的面向对象设计过渡)

学徒读物(Apprenticeship Texts)(这些读物帮你从代码的层次转移到从高的层次来看待实现,以完善项目整体为目的)

  • The Pragmatic Programmer by Andrew Hunt (【中文版】程序员修炼之道——从小工到专家,马维达译,电子工业出版社出版)
  • Patterns of Enterprise Application Architecture by Martin Fowler (【中文版】企业应用架构模式,王怀民译,机械工业出版社出版)
  • Test-Driven Development by Kent Beck (【中文版】测试驱动开发,崔凯译,中国电力出版社出版)
  • Refactoring to Patterns by Joshua Kerievsky (【中文版】重构与模式,杨光译,人民邮电出版社出版)
  • Head First Design Patterns by the Freemans (【中文版】Head First设计模式,UMLChina译,中国电力出版社出版) 以及 Design Patterns (【中文版】设计模式:可复用面向对象软件的基础,李英军译,机械工业出版社出版)

熟练技术人员读物(Journeyman Texts)(这些读物转向“把东西整合起来”,涉及软件开发过程,并深入计算机科学后面的“science”)

专家初始读物(The Beginnings of Mastery)(这些读物帮你磨练技术,帮助提高团队的效率)