2

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

第一个是 - 右键单击​​项目 << 添加引用 << 在项目选项卡中选择项目 第二个是 - 在项目中创建 asmx/wcf 服务托管它们。右键单击项目<<添加服务参考<<选择所需的服务进行交互。

这两个选项在性能或任何其他参数方面有什么区别?

4

1 回答 1

2

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

在这里,您并没有真正将苹果与苹果进行比较。

项目的引用会导致 Visual Studio 编译所引用的项目,并将输出(通常是 .dll)包含在您的主项目中。这意味着有一段编译的(无论如何都是字节码)代码与您的应用程序一起存在。引用项目类似于直接引用 .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 世界中的新产品。

于 2011-09-07T19:12:09.757 回答