[原文地址] F# in VS2010
[发表时间] Friday, October 09, 2009 10:21 PM
通过Visual Studio,我们努力给你的公司提供工具来解决范围广泛的软件问题,并通过基于.NET框架向您提供所需要并期盼的互通性和效率。
作为其中的一部分,Visual Studio 2010从第一个发布开始就支持函数式程序设计的F#编程语言。
F#结合了函数式程序设计和面向对象编程,是一种高效的.NET编程语言。而且F#还是进行平行计算、算法研究以及技术开发和拓展的理想工具。F#是微软研究院和Visual Studio开发团队密切合作的成果。自从宣布了Visual Studio 2010中包含F#,我们已经看到了很多人对此的兴趣并开始使用。我们同时还与F#社区和主要的使用者密切合作来保证F#满足职业软件开发人员在这些领域的需求。
F#在Visual Studio 2010中加入了许多的新功能,包含了从元组和函数的“小型编程”到简单无错的异步编程,以及强类型的浮点编程。以下是这个Visual Studio语言编程家族新成员的一些亮点。
简单、简洁的语法
F#是一种强类型语言,就和C#一样,但是它具有像动态语言一样的轻量级语法。以下的这段代码可以让你感受到F#编程的轻量级,就像数学计算一样。
let data = (1,2,3)
let rotations (x, y, z) =
[ (x, y, z);
(z, x, y);
(y, z, x) ]
let derivative f x =
let p1 = f (x - 0.05)
let p2 = f (x + 0.05)
(p2 - p1) / 0.1
let f x = 2.0*x*x - 6.0*x + 3.0
let df = derivative f
System.Console.WriteLine("The derivative of f at x=4 is {0}", df 4.0)
运行的时候,这段程序会打印出:“The derivative of f at x=4 is 10”。
平行和异步编程
.NET Framework 4和Visual Studio 2010包含了强大的类库和工具,能够简化平行应用的开发。F#语言的功能补充了这点,让平行异步编程更贴近人类的思考方式。这其中包含了基本的语言功能,比如不可变的第一类函数,以及强大的编程模型。又比如可以让你在同一个线性样式中编写异步代码的异步工作流,就像编写你所习惯的同步代码一样。
let http url =
async { let req = WebRequest.Create(Uri url)
let! resp = req.AsyncGetResponse()
let stream = resp.GetResponseStream()
let reader = new StreamReader(stream)
let! contents = reader.AsyncReadToEnd()
return contents }
let sites = ["http://bing.com"; "http://microsoft.com";
"http://msdn.com"; "http://msnbc.com"]
let htmlOfSites =
Async.Parallel [for site in sites -> http(site)]
|> Async.RunSynchronously
与Visual Studio 2010和.NET 4集成
集成在Visual Studio 2010里的F#包含了项目模板,IDE支持,智能感应,以及和F#交互式工具窗口的集成。F#能够用来开发基于.NET 2.0到.NET 4以及Silverlight的应用程序和组件。作为.NET语言的一员,F#可以和C#及Visual Basic.NET一起很好的协作。此外,在.NET 4中,F#用的核心类型(比如元组,Lazy类型,BitInteger等)现在成为了.NET框架的一部分,并能用于所有的.NET语言。
F#交互式工具窗口在Visual Studio中提供了探索性开发的方式。下面你会看到在Visual Studio编辑器中打开的F#脚本的源代码,以及交互执行代码的F#交互式工具窗口。右上方是脚本所创建的Form和图形。
测量单位
F#中的一个创新的功能是测量单位。它可以让你用米或秒等单位来注解你的浮点代码。这做起来很简单,当在开发过程中,代码绑定到了一个错误的单位将会报告错误。这提供了编译时检查浮点代码的正确性,而不会牺牲性能。

这只是F#中令人激动的所有功能的惊鸿一瞥。预知更多详情,请访问MSDN上的F#开发中心。
Namaste!
[原文地址] Come meet the new MSDN
[原文发表时间] Monday, October 19, 2009 12:11 PM

全新设计的MSDN全球网站重新上线,为所有的MSDN订户提供新的价值!
MSDN订阅为开发人员、团队和组织提供了对Microsoft工具和技术的全面了解和获取的途径,使他们有信心完成各种设计,开发和测试软件解决方案工作。除了提供数以千计的下载外,它还提供专业的支持服务及专家信息资源,以确保开发人员可以迎接最大的挑战的考验。
今天,我们介绍的新功能,将为开发人员提供更好的支持,并帮助他们的事业。所有MSDN和BizSpark的用户将能够使用免费的电子学习课程(英文)。我们通过MSDN论坛为所有用户提供优先支持。与此同时,我们还为MSDN Premium和BizSpark用户推出了免费的Windows Azure云计算平台,以及接下来的Windows Azure商业应用。为了推动这个强大的平台的发展,用户将在前8个月内,每月获得750个免费“计算小时”。
MSDN网站为我们遍及世界各地的客户提供了全新的设计,包括37个国际网站。新设计的目标是改善网站和中心的总体体验,以协助您更好的使用Microsoft产品和技术来获得成功。新的MSDN网站提供了新的视觉设计,为社区提供的对内容的新的互动方式,以及宣传社区动态内容的新的Silverlight控件。这里包括了一个“社区活动”区域来显示最近和最流行的论坛主题、示例代码和技术文章。MSDN库现在还提供两种新的库视图:ScriptFree(通过减少脚本和服务器的往返次数来设置性能标准)和Lightweight Beta(类似VS 2010的脱机帮助体验)。
这仅仅是围绕我们在线产品的,提高其可发现性、可读性、一致性和相关性的一项重要投资的开端。
我们致力于将MSDN打造为用户从最初想法到最后解决方案寻求帮助的最佳去处。MSDN用户的反馈对我们而言是至关重要的。感谢每一位提供了反馈意见和建议的用户,正是您的意见和建议使得MSDN日益完善。我们在MSDN网站反馈论坛期待着听取您更多关于如何使MSDN更好的为您服务的意见。
Namaste!
[原文地址] Making your application sparkle with Windows 7
[原文发表时间] Friday, October 02, 2009 8:16 PM
Windows 7的发布已经日益临近了。作为开发人员,无论选择托管代码还是非托管开发应用程序,您都可以利用Windows 7上新的API和类库,来使您的应用程序大放异彩。
多点触摸(Multi-Touch)
触摸界面允许用户通过更加直观的方式与应用程序进行交互。Windows 7利用Windows Touch,引入了多点触摸输入和操作处理。
MFC支持C++程序员开发触摸界面应用程序。MFC会处理大多数的繁重工作:监听Windows触摸相关的消息,调用一系列的虚函数来处理这些消息。开发人员仅需要注册触摸输入,设置手势动作的配置文件,并根据自己应用程序的需求,重写这些虚函数。
WPF 4为触摸界面增添了一个对象模型(object model),使用托管代码的开发人员可以很容易地给自己的应用程序添加触摸支持。在已有事件的基础上,一些新的支持多指输入的事件也被添加进来。同时会有新的操作和惯性事件供开发人员使用。
Ribbon控件
如果您需要组织应用程序中的命令、任务和菜单,如果您希望将它们友好地展示给用户,请考虑使用Ribbon控件。通过Ribbon控件,您的用户会更容易找到他们需要的命令。无论您的应用程序是用什么完成的:Win32,MFC,还是WPF,新的控件和API都能供帮助您在应用程序中添加Ribbon控件。
对于Win32应用程序,Ribbon架构提供一系列API来创建Ribbon控件。您可以在这里找到Win32中关于Windows Ribbon Framework的更多信息。
Visual Studio 2008 SP1为MFC应用程序添加了Ribbon UI使您获得Office风格的界面。在Visual Studio 2010里则为Windows Ribbon提供了更多风格的支持。新的MFC Ribbon设计器,将Ribbon的设计用XML格式来保存,这样大大简化了UI开发,再不需要用代码来做设计了(design in code)。创建和编辑Ribbon变得非常简单。

新的WPF Ribbon控件将不会随着Visual Studio发布,而是会通过Office UI Licensing网站发布。WPF Ribbon控件的发布时间大约与WPF 4的时间相符。您可以在这里找到下载WPF Ribbon的说明(当前是预览版)。WPF Ribbon将包括所有标准Ribbon控件的功能,如tab、分组、动态缩放、快速访问工具栏、应用菜单、contextual tabs、key tips等等。另外还会提供Windows 7和Office专用的皮肤。Ribbon本身会继续作为独立的,分离的程序集供大家使用。
定位(Location)
Windows 7的另一个特性是定位平台。利用这个平台,您可以构建一个根据用户当前位置,而进行相应操作的应用程序。定位平台使得您可以开发更多有趣的应用,特别是对于移动设备用户。比如,一个能感知位置的应用程序可以利用当前的位置信息,来显示用户周边的餐厅或商店;一个发送短信或电子邮件的应用程序可以把发送者的位置信息以附件的形式发送出去。
定位系统将定位设备(如GPS和WWAN)与Windows相集成。应用程序利用它提供的API来确定计算机当前的位置。因为定位API通过COM接口来提供其功能支持,C++程序员和脚本语言程序员可以利用这一套API。Windows 7 SDK包括一系列示例和文档,帮助你创建能进行位置识别的应用程序。MSDN上有更多关于这一套COM定位API的信息。
除了这套API,.NET Framework 4也将会包含一套用于定位的托管代码API,.NET应用程序也可以轻松利用Windows 7的定位能力。
Shell集成
Windows 7的Shell增强功能使得应用程序的开发者能够为终端用户提供更丰富的集成用户体验。跳转列表(Jump List)是一个提供上下文相关的启动事件的列表,用户可以通过它快速访问相关的任务或文件。举例说明,右键点击Outlook图标将显示一个跳转列表,列出您最近打开过的邮件:

新的任务栏没有以前那么拥挤了,而且可以提供更多的预览信息。您可以把任意的程序固定到任务栏上,也可以通过点击和拖拽重新安排任务栏上的图标。Aero缩略图,也就是当你鼠标悬停在任务栏上一个图标时出现的预览窗口,将支持自定义视图和用户命令。如下所示的是一个支持控制媒体播放器回放的命令的Aero缩略图:

针对这些Windows 7 Shell功能,MFC添加了相应的支持。默认情况下,由MFC应用程序通过“打开文件”对话框打开的文件,都会自动添加到您的“最近文件”跳转列表里。MFC提供API来自定义跳转列表里的内容,所以您可以重写这一默认行为。MFC也添加了对高打印分辨率(DPI)和许多Windows对话框新功能的支持。下图展示的打开文件对话框,经过自定义后,添加了一些控件:

MFC当然也支持搜索、预览、缩略图。您可以在资源管理器的搜索框里搜索MFC文档,然后像Office应用程序一样查看图标和预览。

如果您的应用的安装程序需要访问或更新某个文件,而这个文件有可能被锁定或者被另一进程使用,这时候您可以利用重启管理器(Restart Manager)来关闭和重启应用程序,或者利用重启管理器来消除或减少在安装过程中系统需要重启的次数。仅需短短几行代码,您就可以充分利用重启管理器的功能,自动备份当前打开的文档。MFC也在ATL中添加了对事务的文件系统的支持。
这些新的 MFC 功能,都集成在Visual Studio 2010里。若要利用某些功能(例如跳转列表),您只需要重新编译您的应用程序就可以了;而对其他一些功能(如 Windows触摸支持或重启管理器支持),您需要添加几行新的代码以引入新的功能。
WPF 4也允许您在WPF应用程序中利用Windows 7的Shell新功能。WPF 4 集成了 Windows 7 跳转列表的功能,包括任务、项目、最近文件列表和频繁使用的文件列表、以及自定义类别。WPF 4同样集成了Windows 7的任务栏特性,包括进度条、重叠图标、支持命令的预览按钮、描述性文本,和桌面窗口管理器 (DWM)的预览图剪辑。
更多信息
以上只是给大家粗略浏览一下在Windows 7上您可以构建怎样的应用程序。您可以访问Windows团队博客和MSDN 的 Windows 7 开发指南来获取更多信息。。
Namaste!
[原文地址]:Walking down memory lane...
[原文发表时间]:Tuesday, September 29, 2009 5:56 PM
有些时候,我们会埋头于当前正在做的事情当中,日常的工作,和即将来临的最后期限等等。有时候,停下来回忆并反思这些在旅程中的“为什么、什么、怎样以及哪里”是挺好的。
最近,我获得了一个这样的机会,受邀参加为Visual Studio纪录片的视频拍摄。我其实不是很确定这次的期待是什么,也不知道最终产品将会怎样,但是基于过去我在Channel 9的经验,我说让我们赌一把。这样做挺有趣的。
拍摄团队最近完成了Visual Studio纪录片的拍摄并且于今天早些时候在Channel 9 上发布了第一和第二部视频.
能听到我的一些同事的情况我觉得这特别有趣,其中包括在这个产品线上工作了很久的Anders Heljsberg, Dave Mendlen, Jason Zander 和 Scott Guthrie。希望你也能觉得这有趣。
Namaste!