.NET中的Project引用和服务引用之间的区别

时间:2011-09-07 19:04:30

标签: .net service-reference

每当我们创建.NET应用程序时,我们都会考虑几种架构,如数据访问层(DAL)或业务层(BL)。 在这些层中,我们通常编写代码来与数据库进行交互。 因此,为了与这些层中编写的这些方法进行交互,我们有几个选项。在这里,我的重点是项目参考和服务参考。

首先是 - 右键点击项目<<添加参考<<在Project选项卡中选择Project 第二个是 - 创建asmx / wcf服务在项目中托管它们。右键单击项目<<加 服务参考<<选择要交互的所需服务。

这些选项在性能或任何其他参数方面有何不同?

1 个答案:

答案 0 :(得分:1)

就性能而言,差异取决于,但作为一般规则,如果服务和直接项目引用在同等可比系统上执行完全相同的计算,则项目引用将导致较少的性能损失。 / p>

你真的不是在比较苹果和苹果。

项目的引用会导致Visual Studio编译引用的项目,并在主项目中包含输出(通常为.dll)。这意味着存在一个与您的应用程序一起生成的编译(无论如何)字节码。引用项目类似于直接引用a,.dll或com组件,最终会引用应用程序中的一些代码。发生的任何处理都与您的代码在同一台机器上进行。

服务的引用会导致Visual Studio生成通过网络调用服务的代理客户端类(通过HTTP,TCP或其他有效方法,具体取决于服务的方式这项服务可能存在于您的计算机上,也可能存在于全球各地的服务器上。服务中完成的处理正在该机器上完成。

我之前提到的原因是项目引用的性能比服务引用更好,如果它们执行完全相同的计算是服务进行计算并且具有建立网络连接的开销,处理网络流量等等。

当然,其他因素可能会影响表现。该服务可能托管在具有性能问题的旧旧机器上,在这种情况下,服务方案的性能会更差。

另一方面,如果您的程序在慢速PC上运行,但是SERVICE正在增压服务器上运行,那么在更快的服务器上进行处理的事实可能会超过网络流量的性能损失。

顺便提一下,使用服务(在添加服务引用时获得的服务)是SOA(面向服务的体系结构)的原则。维基百科涵盖了基本描述,优点和用途:http://en.wikipedia.org/wiki/Service-oriented_architecture。这是一个很好的起点。如果您需要了解更多信息,可以查看Web服务(SOAP和REST变种 - Visual Studio很好地处理SOAP Web服务),然后进入WCF,这是Microsoft在SOA世界中提供的新产品。