★微软MSDN:每个开发人员现在应该下载的十种必备工具

点此进入

★网友总结.Net架构必备工具列表

Visual Studio

这个似乎是不言而喻的,只是从严谨的角度,也列在这。实际上,现在也有一个开源的IDE开发环境发展也不错,叫SharpDevelop。我并没有仔细看,不敢妄评。而我因要用到之后会讲的Resharper,也迫使我只能用VS。

Resharper ---重构必备

无论是从其名称,还是实际功能,Resharper绝对称得上利器,一旦你用熟了你就再也离不开它了。我去年换工作,很大一部分原因就是因为原单位不让我使用Resharper。几个面试,我也总在重复提出我这一要求。直至最新版本6.1为止,Resharper已经是个多面手。早期,它还只是个重构的工具,如今它是反编译器(原来的Reflector.Net就用不上了),还是个代码审查工具(代码规范审查),还是代码生成器(Code Smith又用不上了),最后,它对键盘快捷键的组织使用,对无鼠标操作极其有益。一句话,Resharper能极大提高编码的效率,利器更是重器。

Fluent nHibernate --- 域驱动DDD必备

这件武器其实分为两部分,一个是Fluent,一个是nHibernate (这不是废话)。nHibernate知道了解的人很多,就是一个ORM工具,而加上Fluent之后就知之甚少了。从功能上,Fluent只是在原来 ORM工具基础加上一层封装,以Fluent Interface形式提供了使用nHibernate的API。可是别小看这一层封装,从使用体验和效率提高方面,Fluent nHibernate有着卓越的功效。就我个人经历,就是在Fluent nHibernate之后,才真正使用,喜爱上nHibernate本身。让大多数人比较头疼的创建映射XML文化,被全部C#文件代替,甚至可以完全省略。可以说这两部分是一个完美的结合,后者提供强大的基础功能,前者提供完美的使用接口。这不是一个成功软件必须的两个要素吗?什么是ORM,不会吧,放狗搜搜就知道了。我只想强调的是,不要把它仅仅看作一个功能库,它更是个架构设计的利器。从架构的角度,它把业务域和数据层隔离,使得数据模型和业务域模型独立设计成为可能。这一点的影响是非常深远的。

nUnit + Machine Specification + Rhino Mock + AutoMocking --- 单元测试必备

啊呀,不得啦。上一武器,我一下子介绍俩,这一次白送四个。这也体现我写本文的指导思想,从开发使用的角度来叙述而不是从工具提供者来还分。这四个套件在一起实在是太完美了!nUnit又是一个众所周知的测试框架,它提供了测试的基础功能和概念。MSpec从BDD的角度,封装了一下nUnit,也可以说是重构了一下语法,使测试可具有可读性,提供良好的测试组织结构,进而可以测试完了,直接生成一个完美的测试结果文档。Rhino Mock也是一个熟客了,但是旧中有新,新的几个版本也加入了一些可圈可点的新性能,如所谓AAA语法(Arrange, Action, Assert 这与MSpec的 Establish, Because, It关键词完全契合)。而从我的角度,看到的亮点仍然是可读性的改进。最后,AutoMock的出现又让事情更加简单了,连创建Mock对象的语句都省掉,只要你把依赖类的接口,在被测试的类的构造器中声明传入,AutoMock就自动为你创建Mock对象就,如同它的名字所表达的一样自动Mock。当然,还有高级应用,暂不赘叙。

SQLite  --- 集成测试必备

什么,数据库也算?是的,不过这里SQLite不是我的产品数据库,而是用它的内存数据库做集成测试的工作,可以说是集成测试的利器。I\O读写历来是性能的瓶颈,而敏捷编程对测试的高度依赖,也是对测试性能的高度要求。即使是高度覆盖率的单元测试也仍然不够,我们依然希望能在持续构建(CI)中,每次能自动运行集成测试。而如果要有真正独立、干净的集成/用例测试,最好是每个测试用例完全重建数据库,重置测试数据,这样的要求,只有内存数据才能得到良好的性能。使用SQLite证的内存库后,不光集或服务器可以轻快的完成集成测试。开发人员本地,也把集成测试很快的运行完。这样,我们的敏捷流程中不仅包括单位测试必须通过,甚至也包括了集成测试。它的名字叫用户故事。

不过这个工具有个小小的问题,因为SQLite是基于C开发的,针对32位和64位系统,它分别发布了两套控件,所以你必须根据自己的平台,3引用不同的Dll文件。而且,VS项目编译设置还必须明确指明是x86还是x64,不能设为Any CPU。就为这个由题,我很是头疼了几天,最后才找到这个解决方安案。使用上,由于前面使用了Fluent nHibernate,除了配置,不用对代码做任何改动。如果要改改了,也就不是真正的集成测试了,不是吗?

Git  --- 源代码管理必备

如果你能一天就把代码写完,你就不需要源代码管理,你能吗?做为一个源代码管理的新秀, Git的发展是极其迅猛的。我看好它,是它优秀的底层设计,优秀的业务模型. 如果要了解什么是DDD,Git是一个非常好的典范。一般的源代码管理,都是基于单个文件的版本控制,而Git一开始设计就是基于每个提交(代码文件树) 来追溯版本。你可能会不赞同我的说法,因为,很多代码控制仍然提供了项目级的分支或者版本,其实那只是一个假像。VSS,SVN,TFS的最底层,都先是文件版本控制,在这个基础之上,再提供项目版本的功能。而Gif却恰恰相反。这个很重要吗?是的,区别非常之大。引用DDD的思维,即然,从用户的角度,代码控制版本是基于文件树的,为什么你的业务模型却不是呢?所以,我把耙VSS,SVN等的这种实现方式,看作打补丁/修补方式,总有一天,补了摞补了,至于最后,再也不能修补了。还有一点Git是分布式代码管理库。

TeamCity  --- 持续构建必备

从CI工具的鼻祖CCNet升级到TeamCity之后,感觉确实不一样,鸟枪换炮。为什么要CI,好像不是我这一篇短文可以讨论清楚的。

TC的好处,第一:是商业软件并且免费,一般这两点很难同时出现。当然有个限制,如果你只使一个编译代理服务的话,这个对我来说已经足够。第二:它对很多三方工具支持做得很好。如, nUnit, MSpec,Git等。最重要的是它是CI服务器!

.Net架构必备工具列表的更多相关文章

  1. 新.Net架构必备工具列表

    N多年前微软官网曾发了.Net下必备的十种工具,N多年过去了,世异时移,很多东西都已经变化了,那个列表也似乎陈旧了.而且,该文也只是对十种工具独立的介绍,显得有些罗列的感觉,是不是每个工具都是同等重要 ...

  2. MySQL管理员珍藏:十大必备工具盘点

    作者:dongdongzzcs 第1页: [IT168 专稿]本文的作者Daniel Nichter是MySQL工具的开发者,他为MySQL管理员推荐了十款必备工具.以下是全文内容: MySQL是一套 ...

  3. net辅助工具列表

    最近对.net的辅助工具比较感兴趣,网上也已经有.net的十个必备工具的帖子了,这里提供了一份全面的工具列表: Code generation NVelocity CodeSmith X-Code . ...

  4. Firefox渗透插件—Web渗透必备工具

    1:Firebug Firefox的 五星级强力推荐插件之一,不许要多解释 2:User Agent Switcher 改变客户端的User Agent的一款插件 3:Hackbar 攻城师们的必备工 ...

  5. Mac开发必备工具(三)—— Fish shell

    Fish shell 简介 fish 可以根据输入自动匹配历史命令.它的一大特点是开箱即用,没有zsh那些繁琐的配置.官网:http://www.fishshell.com/. 安装与配置 在终端里使 ...

  6. Mac开发必备工具(一)—— Homebrew

    Homebrew 简介 macOS 缺失的软件包管理器.使用 Homebrew 安装 Apple 没有预装但 你需要的东西.官网有中文说明. 安装与配置 Homebrew 的安装非常简单,将下面这条命 ...

  7. JDK自带工具列表

    JDK是一个功能强大的Java开发套装,它不仅仅为我们提供了Java运行环境,还给开发人员提供了许多有用的开发组件(位于bin目录中,如下图所示).仅仅使用JDK,就能够解决我们在Java开发过程中遇 ...

  8. fir.im Weekly - 17 个提升 iOS 开发效率的必备工具

    本期 fir.im Weekly 精选了一些iOS 开发工具和动画源码分享,希望每个开发者能专注效率.实用.灵感.  iOS开发工具--如何优化ipa包大小 @iOS程序犭袁 推荐了关于"如 ...

  9. sublime开发php必备工具集合(mac)

    sublime开发php必备工具集合(Mac) 相关链接:http://benmatselby.github.io/sublime-phpcs/ 目标: 直接在sublime中运行php代码 按PSR ...

随机推荐

  1. Leetcode: Circular Array Loop

    You are given an array of positive and negative integers. If a number n at an index is positive, the ...

  2. 代码审计之SQL注入

    0x00概况说明 0x01报错注入及利用 环境说明 kali LAMP 0x0a 核心代码 现在注入的主要原因是程序员在写sql语句的时候还是通过最原始的语句拼接来完成,另外SQL语句有Select. ...

  3. Javascript模块化编程(三):require.js的用法(转)

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

  4. ubuntu配置tftp服务

    ubuntu配置TFTP服务: TFTP是用来下载远程文件的最简单的网络协议,基于UDP协议.xinetd是新一代的网络守护进程服务程序,经常用于管理多种轻量型internet服务. sudo apt ...

  5. Android--我的Butterknife黄油刀怎么找不到控件了!!!

    1,首先说一下Butterknife这个插件真的挺好用的,不过最近几天在写demo的时候发现总是出现绑定的view是空的,当时着急写代码,也没有深究一下,直接手工findViewbyid了,今天下午写 ...

  6. 代码阅读工具:Source Navigator和Source Insight

    (摘自http://www.cnblogs.com/yc_sunniwell/archive/2010/08/25/1808322.html) 一.Source Insight实用技巧: Source ...

  7. gTest详解

    1. 安装使用 1.1 安装 在https://code.google.com/p/googletest/ 下载源码 进入msvc, 注意编译方式, 如果是dll, 选择 gtest-md 编译生成l ...

  8. UNION和UNION ALL

    UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行.UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型.同时,每条 SELECT 语句 ...

  9. oracle表分区、表分析及oracle数据泵文件导入导出开心版

    1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...

  10. Android Fragment替换View

    在BaseActivity 中添加替换方法 public void replace(int id, Fragment fragment) { getSupportFragmentManager() . ...