04 2014 档案

摘要:WCF中的Contracts WCF通过Contract来说明服务和操作,一般包含五种类型的Contract:ServiceContract,OperationContract,FaultContract,DataContract,MessageContract。 1.ServiceContract ServiceContract向外部暴漏了可以提供的服务接口,它可以包含服务名称、命名空间等服务... 阅读全文
posted @ 2014-04-20 20:53 laughter 阅读(548) 评论(0) 推荐(0)
摘要:OData可以通过形如http://localhost/Products?$orderby=Name这样的QueryString传递查询条件、排序等。你可以在任何Web API Controller中启用OData查询条件,并且不需要让Controller设置为OData的终结点(EndPoint)... 阅读全文
posted @ 2014-04-16 20:44 laughter 阅读(2634) 评论(0) 推荐(1)
摘要:原文: Behavior-Driven Development with NBehave 这里模拟了一个“银行账户”的类 一个余额属性,一个存款方法,一个撤销账户的方法,一个转账的方法。 [csharp] view plaincopy public sealed class Account { private int balance; public int Balance { get {... 阅读全文
posted @ 2014-04-15 13:18 laughter 阅读(478) 评论(0) 推荐(0)
摘要:一、可持续集成管理 持续集成,CI:即Continuous integration。 可持续集成的概念是基于团队(小组)协作开发而提出来的,为了提高团队开发效率与降低集成风险(早发现,早解决。晚发现,解决更麻烦),各种可持续集成的管理平台应运而生,这里介绍其中一种小而实用的平台管理工具——TeamC... 阅读全文
posted @ 2014-04-15 13:01 laughter 阅读(524) 评论(0) 推荐(0)
摘要:SpecFlow是一个BDD工具,在这里对BDD不多赘述,你可以阅读一下微软2010年十二月的一篇文章,此外如果你想要更多了解SpecFlow,可以参考我的另一篇翻译(当然,也可以直接进入官网) 一、不直接通过网页的测试。 什么叫不直接通过网页的测试? 我们知道,一般对页面测试,通常对各种按钮点击是少不了的,就像这个一样: 你至少要点一个Register吧。 那么我们暂时就不要这样做(项目太大的... 阅读全文
posted @ 2014-04-15 12:13 laughter 阅读(496) 评论(0) 推荐(0)
摘要:由于一直没有完全搞明白Mock和Stub的区别,所以查了很多文章,而这一篇是做好的: http://yuan.iteye.com/blog/470418 尤其是8楼,Frostred的发言,描述地相当清楚具体,转帖到此,以作日后的参考: 很高兴前面的一点文字能对你有所帮助。事实上,写东西时候,也是对自己的思想整理和精炼的过程,所以可以说是互相帮助吧。你要是有什么疑问或不同意见,可以指出来,我们可以... 阅读全文
posted @ 2014-04-15 09:22 laughter 阅读(318) 评论(0) 推荐(0)
摘要:本章介绍通过使用Ali Kheyrollahi开发的CacheCow来实现服务器端的缓存。所有代码现在都可以在GitHub上下载。 我们将要实现的缓存方式叫做Conditional Requests,实现方式其实很简单。客户端通过在请求Header中包含ETag信息,实现和服务器的交互,确认当前客户端包含的部分数据是否已经被修改,有则拉取,没有服务器端就返回304(Not Modified)和空的... 阅读全文
posted @ 2014-04-14 22:34 laughter 阅读(659) 评论(0) 推荐(0)
摘要:通过URI实现版本管理 另一种实现版本管理的方式就是通过URI来进行处理,类似于http://localhost:{your_port}/api/v1/students/。这种方式的好处是使用者可以清楚的知道当前自己使用的版本。实现也很简单: 1: config.Routes.MapHtt... 阅读全文
posted @ 2014-04-14 21:17 laughter 阅读(489) 评论(0) 推荐(0)
摘要:一旦成功的发布API后,使用者将依赖于你所提供的服务。但是变更总是无法避免的,因此谨慎的制定ASP.NET Web API的版本策略就变得非常重要。一般来说,新的功能需要无缝的接入,有时新老版本需要并行,以便给使用者足够的时间来进行迁移和配套的变更。设置,老的版本会一直持续被使用。 简单版本管理 假... 阅读全文
posted @ 2014-04-14 15:28 laughter 阅读(296) 评论(0) 推荐(0)
摘要:众所周知 ASP.NET MVC 的一个显著优势即可以很方便的实现单元测试,但在我们测试过程中经常要用到HttpContext,而默认情况下单元测试框架是不提供HttpContext的模拟的,本文通过MOQ框架实现对HttpContext的模拟从而实现更便利的单元测试。 一、Moq框架使用 M... 阅读全文
posted @ 2014-04-14 10:12 laughter 阅读(568) 评论(0) 推荐(0)
摘要:本章讨论创建安全的WebApi服务,到目前为止,我们实现的API都是基于未加密的HTTP协议,大家都知道在Web中传递身份信息必须通过HTTPS,接下来我们来实现这一过程。 使用HTTPS 其实可以通过IIS配置,将整个WebApi的访问都配置为Https,但实际上,如果希望只是对部分方法进行认证,... 阅读全文
posted @ 2014-04-13 18:09 laughter 阅读(638) 评论(0) 推荐(0)
摘要:实现资源分页 本章我们将介绍几种不同的结果集分页方式,实现手工分页,然后将Response通过两个不同的方式进行格式化(通过Response的Envelop元数据或header)。 大家都知道一次查询返回几百条数据是很讨厌的事情,那么在WebApi中分页就更有必要。 手动分页和封装 接下来我们修改C... 阅读全文
posted @ 2014-04-13 15:41 laughter 阅读(653) 评论(0) 推荐(0)
摘要:经常看到和听到大家在争论敏捷过程、RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由、争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程。关键是什么样的过程适合自己(的组织),适合自己的过程才是好的过程。更重要的是,适合自己的过程需要时间积累、需要不断实践,对已定义的过程进行剪裁、补充和完善,才会建立最适合自己的软件开发过程。 引用Alistair Cockburn的一句话 “不同的项目需要不同的方法论,一个项目的最佳过程是这个项目所能负担的最小过程。”, 这说明,对一个组织,往往有几种方法并存,而对不同类型的项目,采用不同的方法。选择一个合适的生命周期模 阅读全文
posted @ 2014-04-09 13:10 laughter 阅读(425) 评论(0) 推荐(0)
摘要:文档选项将此页作为电子邮件发送级别: 初级Sandra Sergi Santos, 软件工程专家, IBM2007 年 6 月 15 日本文来自于Rational Edge:Microsoft Solutions Framework 和 Rational 统一过程(Rational Unified Process ,RUP)都为软件开发团队提供过程指导,但您如何对二者进行比较呢?本文指出了两个框架主要的结构上的差别和相似之处。Rational Edge读者的新论坛在本文的最后,您将找到一个特别为Rational Edge电子杂志的作者创办的新论坛的链接。准备添加一些您对在我们的网页上找到的本文 阅读全文
posted @ 2014-04-09 13:08 laughter 阅读(323) 评论(0) 推荐(0)
摘要:测试驱动开发体现了开发人员对软件产品各部分运作方式的理解,而行为驱动开发则关注于开发人员对软件产品最终表现的行为的预期。 行为驱动开发 TDD更像是一种范式而不是一个过程。它描述了一种先编写测试,然后实现,并伴随可能的代码重构这样的一系列步骤。但其并没有关于以下的内容: 应该从哪里开始开发; ... 阅读全文
posted @ 2014-04-06 18:28 laughter 阅读(761) 评论(0) 推荐(0)
摘要:简单而言,BDD是一系列基于TDD的工具和方法集发展而来的开发模式,一般不认为是一种新的开发模式,而是作为TDD的补充。因此,首先对TDD的概念进行进行。 测试驱动开发(TDD) TDD模式采取的是迭代式的开发流程。软件的每个功能特性的开发都是从编写一个针对性的测试开始。一开始测试无法通过,然后开发... 阅读全文
posted @ 2014-04-06 17:12 laughter 阅读(755) 评论(0) 推荐(0)