RSS 2.0 Feed
.NET
摘要:在最近的PDC大会上,微软推出了与Oslo相关的重大技术。Oslo到底是什么?根据Oslo的FAQ: “Oslo是微软的模型驱动开发平台的代号名,Oslo的目标是,通过把模型驱动应用变成主流,提供十倍以上的生产力增益。这个平台的核心是特定领域(domain-specific )的模型,语言和工具: •       一个名为M的语言,用文字的形式编写领域模型 •       一个名为Quadrant的工具,用图形的方式编写领域模型 •       一个用于管理领域模型的Repository •       一个带有预制领域模型和语言的库 在一起,这些构件将使得一个团队能更有效地开发、实现和维护应用和服务。”   这里是一些相关的资源链接: Oslo 开发者中心 http://msdn.microsoft.com/en-us/oslo/default.aspx Oslo SDK October 2008 CTP 下载地址 http://code.msdn.microsoft.com/oslo/Release/ProjectReleases.aspx?ReleaseId=1707 PDC上与Oslo相关的讲座录像 A Lap around "Oslo" (对Oslo相关技术的综合介绍) http://channel9.msdn.com/pdc2008/TL23/ "Oslo": The Language......[阅读全文]

posted @ | Feedback (0) | Filed Under [ Indigo/SOA .NET VSTS/TFS ]

摘要:在PDC上的一个讲座中,微软研究所展示了一个工具,叫Pex (Program EXploration - 程序探索): Research: Contract Checking and Automated Test Generation with Pex http://channel9.msdn.com/pdc2008/TL51/   Pex项目地址: http://msdn.microsoft.com/en-us/devlabs/cc950525.aspx (上面链接里的下载好像是针对VS 2010的,其他的版本可在这个地址http://research.microsoft.com/Pex/downloads.aspx下载)   Pex是个白盒测试生成工具,可以用于帮助理解.NET代码的行为,调试问题,以及,完全自动地,创建涵盖所有边界案例的全套测试。它提供了与VS的集成。 在安装之后,如果在自己的代码中点击右鼠标,然后在上下文菜单中选择运行Pex探索(“Run Pex Explorations”)的话,它会用不同的输入运行你的代码很多次。这些输入不是任意的,也不是所有可能输入的全部组合,而是根据你的代码,分析出其中的边界条件,选出有代表性的输入。简单地说,Pex会分析每一句代码,会琢磨出达到该语句的测试输入。如果代码中有条件性分支,Pex会做案例分析,即Pex会根据代码中条件分支的数目和可能组合生成对应的测试输入。 Pex是在一个反馈循环中运作的: Pex运行代码多次,通过监测控制和数据分流,了解程序的行为。每次运行之后,Pex会挑一个早先没有覆盖的分支,建造一个描述如何达到那个分支的约束系统,然后使用约束解算器(constraint solver,这个版本用了一个叫Z3的约束解算器)决定满足对应约束的新测试输入。然后用新的输入再次运行测试。。。这个过程会重复多次。每次运行,Pex也许会发现新的代码,深入代码实现之中。通过这个方式,Pex可以探索代码的行为。 在VS中,在运行Pex探索之后,在探索结果中选择某个输入,然后选择保存测试案例的话,Pex会为你的代码生成一个测试项目,在其中生成测试类以及相关测试方法。当然你也可以选择所有的输入场景,然后保存所有的测试案例,供你做regression测试之用。 Pex在探索代码、生成测试输入时也会跟踪代码覆盖率。但Pex只有局部的覆盖率知识(Pex称之为动态覆盖率),只有VS代码覆盖率收集器才能给你提供全局的覆盖率信息。 在Pex的新手起步网页上有个简短的代码挖掘教程http://research.microsoft.com/pex/articles/pexcodediggertutorial.pdf    在新手起步网页上,还有更深入的教程,原理概述,参考手册和例程等等。...[阅读全文]

posted @ | Feedback (0) | Filed Under [ .NET VSTS/TFS TDD/DDD/BDD ]

摘要:九月初,微软在CodePlex推出了 Managed Extensibility Framework http://www.codeplex.com/MEF 托管扩展性框架是什么? “托管扩展性框架(Managed Extensibility Framework,简称MEF),是.NET的一个新的类库,旨在促成应用和组件更大的重用。通过使用MEF,.NET应用将能从是静态编译的而变成可动态组合的。如果你正在建造可扩展的应用,可扩展的框架和应用扩展,那么MEF就可为你所用。” 今年早些时候,微软成立了一个应用框架核心开发团队(Application Framework Core team),其宗旨是在应用框架空间(WinForms, ASP.NET, WPF, Silverlight)起和基础类库(BCL)开发团队在平台底层方面一样的作用。 基础类库开发团队在负责平台底层层次上减少重复和提供共同的抽象诸多方面起了很大的作用,但在高层次方面微软还没有类似团队负责处理同类问题。于是乎,造成了一些不幸的重复(譬如每个应用模型都有若干个数据绑定模型,WPF和WF有着不同的依赖属性系统),且在应用模型代码方面缺乏共同的抽象。 于是应用框架核心开发团队就应运而生了。 这个团队的第一个具体项目就是“托管扩展性框架(MEF)”,他们发现,在.NET框架本身以及日趋托管的应用(象Visual Studio)中越来越多的地方,需要提供或者已经提供了钩子(hook),可为第三方扩展所用。譬如使用TraceSource API的TraceListener插件,Visual Studio代码分析的可插拔规则等等。 但在不存在一个内置的扩展性框架的情形下,如果开发人员想要提供这样的扩展,只好通过提供定制的机制来实现,于是造成重复劳动。他们希望MEF可以中止这样的重复,在框架和应用中鼓励以及促成建立在MEF之上的更多的扩展性。 六月初,他们推出了第一个CTP版本,九月份的这个版本是第二个版本。该版本包括完整的框架代码,还有三个例程(类似Outlook客户端的MEFlook,类似Tetris,形状可通过插件形式扩展的游戏MEFTris,以及可扩展的文件管理器)。 MEF与IoC容器的区别 从表面上,MEF有点类似IoC容器,但MEF并不是IoC容器。在这一点上,很多人都很困惑。 Oren Eini在他的博客中指出,MEF实际上是个组合框架(composition framework),而且定位客户是“大的应用”,两者合一,即可理解MEF的本质。 组合框架和IoC容器在表面上看很相似,都是以自动化的方式管理应用的依赖性,但其区别则在于细节上。IoC容器很久以前就不仅仅是管理依赖性了,它们还负责对象的生命周期,对象代理,面向aspect,事件聚合,事务管理等等东西。但组合框架则着重于单一个目的:依赖管理。听上去组合框架好像所做极有限,但其实不是这样。光从依赖管理来说,IoC容器往往是静态的,不透明的,而MEF则使得依赖管理变成一个动态的,透明的过程。 MEF的第二个方面,其定位是“大的应用”,极其大的应用,其中第一个客户大概就是Visual Studio本身。MEF提供的这些功能, -不用装载程序集即可查询元数据 -可以静态地核实所有组件的依赖图和拒绝那些会造成系统处于不合法状态的组件 -契约适配器 -提供一套发现机制,用于定位和装载扩展 -允许附件元数据的标记设置,用于辅助查询和过滤 都是围绕着依赖管理这个主题的,但也大概来自Visual Studio是第一个客户的需求。因为Visual Studio涉及的组件成千上万,需要这样的东西,MEF是设计来处理这样的场景的。 Sidar Ok用了一个具体的例子来说明MEF并不是IoC容器,参考 What is this Managed Extensibility Framework thing all about ? http://www.sidarok.com/web/blog/content/2008/09/26/what-is-this-managed-extensibility-framework-thing-all-about.html 另一件需要指出的事情是,MEF将是.Net 4.0的一部分,所以MEF将为.NET框架本身所用。 【参考】 1. Oren Eini的《The Managed Extensibility Framework》 http://ayende.com/Blog/archive/2008/09/25/the-managed-extensibility-framework.aspx 2. Glenn Block的《What is the Managed Extensibility Framework?》 http://codebetter.com/blogs/glenn.block/archive/2008/09/25/what-is-the-managed-extensibility-framework.aspx 3. Krzysztof Cwalina的《Managed Extensibility Framework》 http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx...[阅读全文]

posted @ | Feedback (0) | Filed Under [ 架构与模式 .NET ]

摘要:由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 ]

摘要: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 ]

摘要: 【原文地址】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的应用 为你的应用创建一个文件夹. In the application folder, create two folders named app and assets. Use the assets folder for bitmaps and......[阅读全文]

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

摘要:已经可以直接观看或下载了: 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 Guthriehttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/KYN0801.wmvBuilding AOL's High Performance, Enterprise Wide Mail Application With Silverlight 2Eric Hoffman, Marc Katchay, Stefan Galhttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BT01.wmv Building Rich Internet Applications Using Microsoft Silverlight 2, Part 1Joe Stegman, Mike Harshhttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/CT01.wmvBuilding Rich Internet Applications Using Microsoft Silverlight 2, Part 2Joe Stegman, Mike Harshhttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/CT02.wmvCreating Rich, Dynamic User Interfaces with Silverlight 2Karen Corbyhttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T20.wmvEncoding Video for Microsoft SilverlightBen Waggonerhttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BCT07.wmvExploring Moonlight: Novell's Implementation of Silverlight on LinuxMiguel de Icazahttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T31.wmvFrom Flash to Silverlight: A Rosetta StoneRick Barazzahttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/T30.wmvIntegrating Media in Silverlight ApplicationsEd Maiahttp://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BCT05.wmvInternationalizing XAML Applications......[阅读全文]

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

摘要: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个新功能是Activities和WebSlices! 这里有个演示: 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 ]

摘要: MSDN上最近发表了一篇Elisa Flasko著的文章,比较了LINQ to SQL与LINQ to Entities适用的场景:Introducing LINQ to Relational Datahttp://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 ]

摘要:根据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时,微软会公布该语言的技术预览版。......[阅读全文]

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

Full .NET Archive