RSS 2.0 Feed
2008-03 Entries
摘要:原文地址:Comparing Moq to Rhino Mocks 原文发表时间:Mar 23, 2008       长期以来我是Rhino Mocks的大粉丝,乐此不疲的写关于它的文章。当Moq出现时,我一直对它无动于衷,因为我原以为lambda表达式是华而不实的。我认为如果它只是使用lambads的话,我对此不感兴趣。     幸运的是 在我的twitter圈子里有一些人一直对Moq大加赞赏。我是一个乐于承认错误的人,所以我决定找出Moq究竟好在哪里。结果发现,使用lambdas并不是Moq最优的部分。它有清晰干净的API设计以及弱的录制/回放模式.     为了更好的说明我的意思,这里有一个简单的例子,分别用Rhino Mocks和Moq写的两个单元测试方法。使用mock框架的测试,只用一个方法来建出一个接口。 [Test] public void RhinoMocksDemoTest() { MockRepository mocks = new MockRepository(); var mock = mocks.DynamicMock<ISomethingUseful>(); SetupResult.For(mock.CalculateSomething(0)).IgnoreArguments().Return(1); mocks.ReplayAll(); var myClass = new MyClass(mock); Assert.AreEqual(2, myClass.MethodUnderTest(123)); } [Test] public void MoqDemoTest() { var mock = new Mock<ISomethingUseful>(); mock.Expect(u => u.CalculateSomething(123)).Returns(1); var myClass = new MyClass(mock.Object); Assert.AreEqual(2, myClass.MethodUnderTest(123)); } 阅读全文]

posted @ | Feedback (0) |

摘要:原文地址:A Few Notes About The MVC CodePlex Source Code Release 原文发布日期:Mar 22, 2008 Whew!在一些读者的强烈要求下(不只是Sean, Jeff向我提起过此事。)我写了一篇非MVC的文章,然后再写MVC。既然我写了那篇Pizza的文章,或许在我的善意被榨干之前,我该多写一些关于MVC的文章,然后再下定决心写一些MVC无关的东西。;) 正如ScottGu最近的文章写的,ASP.NET MVC的源代码已经在CodePlex上发布了.这件事并不想开‘开关’那样简单。在这背后,我们做了很多努力。一方面是有关的计划工作,以及Bertrand Le Roy和我的老板Simon做了很大的努力。 与此同时,计划的执行需要不同团队例如:Devs,PMs,QA已经legal(法律)团队的互相协作。为此 要感谢我们新任的PM Scott Galloway的努力。在做计划工作以及写了一篇很短的readme(我不知道怎么说)和readme(我不知道怎么说)和roadmap中,我做了一些微小的工作。多亏我们法律团队的一个同事,这次任务完成的出人意料的好。我原来以为会发生一场“战争”,但这家伙搞定了这样事,他理解我们的工作,和他工作也很轻松。 我看到了许多与此有关的问题,我在这里可以回答一些。 是不是一个在线实时更新的代码库? 不是,由于一些原因,MVC开发团队并不是直接工作在CodePlex的代码库上。一个实际的原因我们试图尽量减少对我们工作的干扰。中途改变源代码的管理库是一个很大的干扰。现在,当我们认为有值得放到CodePlex上的代码时,我们会定期的将代码上传上去。 Routing的源代码在哪里? 我在以前的文章中谈过,routing并不是MVC的一个特性,所以它并不包括在MVC代码里,它将是.Net Framework的一部分,因此它的代码也将会像其他的.NET Framework 代码 那样开放.包含在CodePlex是很好的,但就如我以前说的 慢慢来。 单元测试在哪里? 等等!你是说哪里没有单元测试吗?那我要与Scott谈一些。哈哈,我是开玩笑的。我们打算把单元测试放到那里,但是当前的测试要依赖一些内部工具,这些工具是我们不想发布的。我们希望使用一些我们能分发的工具来重写这些单元。 下一个在CodePlex上更新是什么时候? 就如我提到的,我们有东西的时候,我们就会更新源代码。希望尽多尽早。我们拭目以待。 作为一个团队,我们对此很激动。我在想开发员对这种程度的开放度是否会感到坐立不安。当然,任何人都可以看到这些代码以更多的了解.NET Framework,但是 这些代码已经被发布。这些都是早期工作中的。你是否能够想象你的老板把你的工作进程全都公布出来,让所有人来进行评判(如果你是一个全职的开源程序员就不用回到了)。;)我也不一定会让所有人看我早期使用.net技术的代码。 幸运的是,我们团队的开发人员因为这样的开放性获得了许多好处。它使我们与客户之间的协作更加紧密并且创建一个更为紧密的反馈系统。我有信心,我们在最终的产品里会完成所有的设计的功能。当然在它开放的时候会有一些限制。我曾试着建议我们更加开放并把我们的信用卡号公布在哪里,但那并不可行。...[阅读全文]

posted @ | Feedback (1) |

摘要:【原文地址】: Is Pizza Brain Food? 【原文发表时间】: Mar 21, 2008 在一个临时的住处住了两个月之后,我和我的家人搬到了新的住处。搬家的一大好处是,它让你感到又像过了一次圣诞。”Oooh! 看那些我要拆封的箱子。Hey!我有一个像这样的音响!” 我似乎要被我那些拆封的东西分散注意力了。比如,我发现一些我大学里的数学书。我就开始想到这些Complex Analysis,抽象代数和数论,他们看起来像天书一样。 艺术家和作家都是拥有创造性的。这就是人们称他们为创造类型的原因。而数学家却经常被错误的描绘为缺乏幽默感,只会动笔,毫无创作的类型。这并不是事实,一些数学家现在已经使用电脑了,也喜欢说这样的笑话:“Can you prove that the integral of e to the x is equal to f sub u of n?”如果我把这个方程写出来,那这个笑话就变的很明显了。 ∫ex = fu(n) Hey,我并不是说数学家很有幽默感。事实上认为数学家缺乏创造力的人,是从来不重视数学的人的想法。一旦你接触了abstract algebra(抽象代数), number theory(数论), non-Euclidean geometry(非欧几里德几何),等等… 你就会开始猜想这个领域的巨人们是否会吸食一些什么来帮助想出这些理论。 我觉的proof of Fermat’s Last Theorem的证明(据报道经历了连续7年的工作)或许世上无人能明白。就像一副现代艺术博物馆里的抽象画一样。但…似乎是我貌似有点离题了…. 数论是我当时最喜欢的课,所以我想我可以坐下来翻开这个书本,看看我能明白里面的问题,甚至能取得一些进步。 No Dice. 在我读大学的时候 我能弄明白这个问题,但现在尽管我长大了而且更聪明了,要理解这个问题却很慢。即是我曾经已经弄明白过了。然后我开始思考?现在的我和大学时代的我有什么不同呢?这打击了… Pizza Consumption!   考虑了一秒。他们经常说程序员是把咖啡变成代码的机器。我想大学数学系里的学生是否是把披萨变成解决问题集的机器?那那些早期的白手起家的神话又是怎样呢,他们是从一小群大学生喝个百事吃着披萨开始的, 最终却成为千万富翁?批萨是共同点。 我想我说到了一些事情。也许批萨是益于大脑的食物。不知道是不是Mozzarella(意大利干酪之一) 或者 Pepperoni (烤胡椒香肠)起的作用.当然我的现在的问题是大学是很久以前的事情了,而批萨是否是益于大脑的食物,只是我无聊的猜测。这是一个既定的事实,比萨饼肯定是肠道的食物。是利于思考的食物。...[阅读全文]

posted @ | Feedback (1) |

摘要:Phil Haack先生是著名博客引擎Subtext的主要开发人员,目前在微软总部担任资深程序经理,主要负责MVC架构相关的内容. 博客堂非常高兴成为Phil Haack先生中文版博客的存放站点,将更多关于ASP.NET MVC架构相关的知识与大家分享.为了保证翻译质量,现在面向所有博客堂堂友征集本博客的负责人员以及两名志愿翻译人员.如果您有意请在本贴后跟贴,非常感谢.  ...[阅读全文]

posted @ | Feedback (1) |

摘要:【原文地址】:Thoughts on ASP.NET MVC Preview 2 and Beyond 【原文发表时间】: Mar 10, 2008 【译者注:由于是刚开始做翻译,很多语句和单词翻译的很有问题,有些单词还不会翻译比如文章中出现的DropDown,hoopla等,所以现在的文章是中英文对照着发的,如果你看到哪里不爽,或者哪里变扭 指正,我会不断改进,不断学习的。谢谢】      At this year’s Mix conference, we announced the availability of the second preview for ASP.NET MVC which you can download from here. Videos highlighting MVC are also available. 在今年的Mix会议上,我们发布了asp.net mvc预览第二版,你可以在这里下载到,视频可以在这里下载。 Now that I am back from Mix and have time to breathe, I thought I’d share a few (non-exhaustive) highlights of this release as well as my thoughts on the future. 现在开完了Mix会议,我有时间稍作休息,我想分享一些这一版本的亮点,以及我对未来的一些想法。 New Assemblies and Routing 新的Assemblies 和 Routing Much of the effort and focus of this release was put into routing. If you’ve installed the......[阅读全文]

posted @ | Feedback (0) |

摘要:【原文地址】:Url Routing Debugger 【原文发表时间】: Mar 13, 2008 在Mix会议上,Scott Hanselman’s演示了一个简单的route测试程序(route tester),我很快的把他们整理出来了。 这个工具会显示当前地址栏中请求地址里存在的Route数据内容(页面里的Route Data)。因此你可以在地址栏中输入各种Urls来观察它匹配了哪一个路径。在页面底部,显示了你的程序中所有被定义的route列表。它可以让你看到当前的URL匹配哪个你定义的route。 这个工具的用处在于,有时候你希望的匹配路径却被其他的路径定义所代替。它可以向你展示出发生了这种情况。但是,这个工具并没有提供任何关于为什么发生这种情况的信息。希望我们以后能做更多的事情来改善这个。 要使用这个工具,只要下载这个zip文件,然后把dll文件放到你的程序的Bin目录里,再在Global.asax.cs文件的Appliation_Start函数里添加一行代码(黑体字的)。 protected void Application_Start(object sender, EventArgs e) {   RegisterRoutes(RouteTable.Routes);   RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } 它会使用DebugRouteHandler来更新那些你的应用中所有的route处理程序(IRouteHandler),这些route处理程序原本是为了处理程序中每个不同的route特别定义的。它在最后添加了一个catch-all route,以确保这个调试器总能匹配对这个应用程序的所有请求。 我也会发布所有的代码(使用“所有”听起来有很多代码,其实代码不太多)它包含了一个使用这个route tester 的demo程序。这个东西对你是否有用,请告诉我一声。...[阅读全文]

posted @ | Feedback (0) |