但凡有关于.NET的架构设计,都把数据访问层接口作为亮点,把数据访问层提出来了,以后换数据库的时候可以更EASY。
但是,现实的项目中有几个真正换过呢?
试想把一个项目包给微软做,微软难道肯在项目上留活路给其他数据库?靠微软传教士们滔滔不绝的口才,当然微软是最好的,拿一般的企业项目来说,当然推介.NET + SQL SERVER的方案(话说我也没见过微软做项目,这段我且猜成是这样的吧),什么?你想用其他数据库?为什么不用SQL SERVER?SQL SERVER配合.NET才是极致啊,我们有专业的态度,且为了高效会写高效的存储过程(想换数据库也费劲死你),windows server 2003/8 + .NET + SQL server,我们已经给XX,XX,XX……(此处省略若干公司名)做过成功的项目,你既然选择我们,有理由不相信我们吗?OK,.NET + SQL Server了,话说SQL SERVER已经够优秀了,还有什么必要或理由给其他数据库留接口呢?这不是对SQL SERVER不信任吗?且如果以后承载不了,那我们可以再提供解决方案,做性能调优之类的,这才是大公司的特色嘛!
以上这段呢,杜撰的。你可能会说,我又不是在微软,我只用.NET,我完全可以选择其他数据库呀。恩,没错,你可以选择,但你不要忘了,你用的技术都是微软的,微软虽然左右不了你换数据库的意志,但完全可以影响你用其他数据库的情商。好,你想象着以后系统可能换数据库,把数据访问层抽成接口提供,让工厂创建,性能上可以不计(真的不用计较么?如果不换数据库,这个性能损失就是白浪费了!),系统耦合性大大降低。得意ing~。项目做完后,不会换数据库吧?系统跑的好好的,没理由啊,OK,那系统负载不行了?数据库真成瓶颈了?好啊,你换吧,到这种规模了,我想你的数据量与系统复杂度不在话下了,原windows系统维护成本+数据库转换的成本+新数据库维护的成本(如果你用非win系统了,那还得+新系统维护成本)。话说这样的转换也不是一下子就能完成的,注意:一部分钱,已经花出去了。用着用着,你发现TMD WEB服务器也满足不了需要了,怎么办?做做程序优化吧,如果你不是特别菜的菜鸟,代码上的优化始终是有限的。最后还得扔服务器(其实扔服务器才是王道,不论你用Win还是用linux or其他)。渐渐你发现用Win的成本高于其他了,因为扔服务器又得买许可啊,思前想后,终于下决心,把Web的代码也换了吧。OK,一个系统就这样洗心革面,重新预算了。
这里不是计算windows平台和其他系统平台的成本,这个我觉得就是半斤八两。你不用去夸linux便宜,便宜的前提是你自己搞,要自己写个系统更便宜。咱现在只说有无必要做架构代码上的这些设计。你可能会说,早知现在,何必当初啊,话不能这么说啊,当初你也没想过发展到现在这个规模啊,Win.NET的开发效率与成本那是看的见的便宜啊,还有一些其他优点,大家都是搞.NET的,知道的应该比我还多。我就不多说了。
好吧,说到这里,我觉得,用一个技术你就跟一个大哥,用一个平台你就进个黑帮。你不要指望着几个大哥你都能靠着,那不现实。现在的IT世界不是A家卖油条,B家卖豆腐脑,你掺和着吃挺好;现在是各个军阀割据,明着共赢,实际上都不想分别家一碗羹。一个世界有一个世界的特色,如果死心塌地的跟着耶稣走,你还想着给观音留个门,这十字架你能搭好吗?