我的WCF项目系列之一为什么选择WCF

这里的第一个问题应该是为什么选择三层或多层架构?

1. 起初我选择三层架构的原因仅仅是不用安装Oracle客户端。、

我们这里许多系统都是要连接Oralce数据库的,又都是直接连接的Oracle,也就是2层架构。Oracle客户端约有180M,每台要用到我们系统的都要安装,又牵扯到用户的电脑权限管理,我们没有管理员权限,每次安装都要联系其他有权限的同事帮忙,所以想不用安装Oracle客户端该多好啊。

2. 当开始学习了一段三层架构后,才知道三层远不是不用安装Oracle客户端这么低级,她是一种非常庞大和精深的开发思想,多以又有进一步要求,想把我们的系统全部转换到三层架构的。

3. 又有进步后,才知道,三层和两层,各有利弊,并不是三层一定优于两层。不过这和我们的系统关系不大啦,因为我分析多次,我们的系统还是三层的好处要大于两层的。

当开发了一些三层架构的系统并应用后,这时才到问什么选择WCF的问题

1. 这里要谈一下我所用到三层架构的技术,主要包括DCOM(没有正式用到项目中,仅测试)。COM+,这个用到不少系统中,有些至今还在用,不过早已不是我负责的啦。WebService,就是指asp.net WebService,和架设网站一样。CORBA, 这个用到了正式的系统中,不过后来都改啦,CORBA是我在用WCF之前所用到的最好的功能,知道现在我还是觉的CORBA某些特点要优于WCF.

之上的4种三层技术除了WebService使用ASP.NET开发的外,其他都是Delphi开发的,因为当时的系统都是Delphi地。

2. DCOM和COM+,为什么不选择DCOM,而选择COM+?

因为我又用到了COM+,COM+的部署和开发比DCOM好多啦。DCOM的选择很快,约有不到一周的时间,因为找的一些例子都是COM+的,李维《Delphi5.x ADO/MTS/COM+高级程序设计篇》,是我的三层架构入门和提高最重要的书。不过很抱歉开始学习的是盗版书,一直到后来一位前辈离职的时候,把他的一本正版书送给了我,我才视为经典收藏起来,在后来几年不时拿出瞻仰一番,知道去年搬家,把一些不用的书放在朋友家里,才一年多没有拿来看看。

COM+开发已经用的挺成熟啦,用到了一些ODM系统中(多是同事开发的),但是她的客户端部署时对权限要求交高,所以不是很想用她开发整个系统,不可否认的是,通过COM+的学习在三层架构学习中,给我的很大帮助,和奠定了基础,才成有后来的WCF的快速入门。

3. COBRA,因为当时一直用的Delphi开发,所以一直想找一种比COM+部署更简便的三层构(仅仅是部署方便的问题,不是技术问题),才找到了COBRA,开发了一些东西,对大的部署简单很是上心。当时还写了2篇文章发到Delphibbs大富翁上,主要写的是怎么用Delphi6+7组合来开发COBRA并部署,还有几位大富翁发信来问。因为她开发来比COM+要复杂,还要受到中间语言的限制,所以没有正式用到项目中。不过到现在还是觉得她的部署简单和自动负载平衡是很棒的。

4. Asp.net WebService,这是在COM+后接触的,比CORBA家要早一段时间。当时还是VS2003, 算是.net入门吧。我一直觉得我学习.net是以开发Asp.netWebService开始的,当时的客户端还是Delphi开发地。因为主要是和Oracle数据库开发,还写了一篇怎么用XML格式传输数据集,并Delphi调用处理。一直到WCF,还开发了几个用XML格式传输数据集,并Delphi客户端调用的服务。

不选择她还是因为部署问题,到不算是真的部署问题。她的部署也是非常简单的,和ASP.NET网站一样。主要是因为她只能HTTP调用,我所开发的系统客户端,还是前面的问题,权限限制,许多时候要用代理才能上网,并许多客户机的HTTP代理是固定的,这就杯具啦,有代理就不能连接WebService啦。当然,还有许多流程或其他可以解决这个问题,不过们部署起来越简单岂不越好。

5. 一直到我遇到WCF, 才发现这就是我要的东西。当时因为是看到了VS2008的算是广告吧,一直在关注2008,才发现的这个WCF。知道学习VS2008+WCF好久,才知道VS2005+net3.0也是可以开发WCF的。当时要用WCF的主要原因是1.她能TCP端口发布,不受http代理的影响2.她是新技术,我觉得第2点倒是占主要的,哈哈。

6. 再简单介绍一些我.NET的学习历史。我是因为Asp.net WebService才学习.Net的,学习用到VS2003,当时客户端都是Delphi,对.net的WinForm开发没怎么上心。VS2005几乎没用过。到需要.NET或者说转到.Net开发就是VS2008啦。

原文地址:https://www.cnblogs.com/cangfriend/p/1860698.html