每周源代码23 – 大型解决方案版
[原文发表地址] The Weekly Source Code 23 - Big Solution Edition
[原文发表时间] 2008-4-10 6:50 AM
这周我的源代码读起来时毫无节奏和理由可言,但大部分代码量确实很大。所以这就是大型解决方案版本。我的新任务是来探索:如何通过读源代码来成为一个好的开发人员。 亲爱的读者,我现在向你们展示"每周源代码"一系列帖子中的第23个。 开发人员已经把Mix上Deep Zoom Hard Rock网站的Vertigo软件发布到了CodePlex上, 他们把在项目中对鼠标轮的支持称之为BigPicture。最初看到时,我对其嗤之以鼻,但后来在阅读的过程中才意识到,开发者们(也包括我自己)除了迫不及待地添加一些鼠标滚轮支持到DeepZoom Helloworld 例子之外,还有其他的许多巧妙的东西。 首先,他们想出了在 Silverlight 2.0 beta 1的 DeepZoom上禁用初始的“无处缩放”动画的方法。他们首先将 UseSprings关闭,然后再第一个动作完成后再打开。
事实上,这确实很简单、显而易见。但我还是没弄明白。他们在开发VS产品中还使用 App.Current.Host.Source 来处理这类Uri的问题。
他们还创建了一个很棒的MultiScaleImageWrapper类将所有的平移和缩放行为封装到一个类中。
刚开始看到这个项目时,我不确定该怎么做。但看到项目说明时,我的眼睛顿时一亮: NetFXHarmonics DevServer是一个建立在 WPF和WCF技术的web服务器托管环境。它允许多个Cassini-like实例的web服务器并行运行。 DevServer也包括监视请求和响应、请求过滤、自动 ViewState、 ControlState解析、提高视觉效果的HTTP状态代码、只限本地访问以及远程访问的IP绑定模式、易于使用的XML配置文件等等诸多跟踪功能。除了在上一个公司创建的WCF应用程序外, 我并没看到太多WCF的东西。 DevServer是一个有趣而完整的Cassini-likeweb服务器。他之所以编写这个的原因是他想更便捷地调试多个WCF服务和 ASP.NET网站的协同工作。与其使用客户端或嗅探工具,为什么不使用该服务器呢? 整体阅读下来,感觉该代码非常有趣。也包含了众多小而实用的方法。他对数据进行解析,解码,显示ViewState,显示标题,格式和原始内容,等等。
David Betz是个编写了大量代码的程序员。他在返回社区之后在 CodePlex上发表了一大批项目。其中,一个特别有趣的项目是Minima .NET 3.5 Blog Engine,他将该引擎当作培训工具使用。当然,你可以在他的博客中找到它。你可以花时间到该网站上看看,有很多值得学习的东西。 LINQ有点复杂,对于查询的视觉化和编写是有一定难度的。来自微软法国的Mitsu先生和他的两个法国学生Simon Ferquel和Johanna Piou一起为LINQ编写了一个可视化查询生成器,我们可以把它作为Visual Studio的插件使用。 该插件使用WPF,有一系列很炫的动画以及一个全新的UI设计。您可以在类视图上拖动您的LINQ 到 SQL类,使用动态生成的列表框和创新的树视图(我以前没听过)来直观地构建LINQ查询。 这一切太美好了。代码是可用的,同时它可以提前测试代码的正确性。但读起来真的很有趣。我真的很喜欢开发人员们设计的解决方案结构。 他们还大量使用了类图,大概因为他们还是学生,所以他们比较注重细节,所以,对于较难的部分,像查询格式,他们有一个相关的类图。我总是记不起VS2008的这个功能。 他们想出了一个有趣的VS集成项目,这可以帮助开发人员设计可视化设计器并把其作为插件植入到Visual Studio中. 另外这里还有一些有趣的WPF控件,如"MultiS和"TreeListView." |
这是个艰巨的活儿,我要花很长时间来消化它。在某些方面它确实很出色,但在其他方面却显得极其复杂,可能有点夸张。幸运的是,你无需阅读代码,如果你愿意,可以通过安装他们的MSI来使用。