C# 来自业务层与服务层的服务引用

C# 来自业务层与服务层的服务引用,c#,wcf,n-tier-architecture,service-layer,business-logic-layer,C#,Wcf,N Tier Architecture,Service Layer,Business Logic Layer,我看了一些标题类似的问题,但没有成功。我可以从业务层创建服务引用以从另一个业务实体提取数据吗?或者应该从服务层进行吗?这不容易回答,因为它可能会螺旋式地进入一个巨大的哲学讨论。然而,我不认为您的业务逻辑层应该返回到您的服务层来获取其他业务实体 此场景的一种典型方法是在业务逻辑之上有一个facade层。当需要检索多个业务实体时,该层负责协调响应。因此: 服务->业务外观->业务逻辑->数据 编辑:对于小型、简单的应用程序来说,这太过分了。删除facade层,让服务调用一个逻辑方法,或者让服务调用多

我看了一些标题类似的问题,但没有成功。我可以从业务层创建服务引用以从另一个业务实体提取数据吗?或者应该从服务层进行吗?

这不容易回答,因为它可能会螺旋式地进入一个巨大的哲学讨论。然而,我不认为您的业务逻辑层应该返回到您的服务层来获取其他业务实体

此场景的一种典型方法是在业务逻辑之上有一个facade层。当需要检索多个业务实体时,该层负责协调响应。因此:

服务->业务外观->业务逻辑->数据

编辑:对于小型、简单的应用程序来说,这太过分了。删除facade层,让服务调用一个逻辑方法,或者让服务调用多个逻辑方法

服务层实际上只是一个传递过程,您最好尽可能少地使用逻辑。这使得可以替换服务层,或者在不需要进行服务调用时,让受信任的应用程序/服务直接(在本地计算机上)调用门面层

这种方法还允许您在门面级别放置“信任线”,并在那里实现安全性。如果要进行安全检查,并且可能需要在这个“信任线”进行其他检查,那么我们只需要对业务门面进行一次服务调用,因此我们不会对检索所需的每个实体重复此逻辑

facade层只是调用逻辑层上的方法的方法层。facade方法可以简单到在逻辑层上调用一个方法,也可以复杂到在逻辑层上调用多个方法并协调适当域实体甚至DTO的一致响应


我可以继续。事实上,有整本书专门讨论这一问题。希望这至少有助于大致了解情况。

这不是一个容易回答的问题,因为它可能会演变成一场巨大的哲学讨论。然而,我不认为您的业务逻辑层应该返回到您的服务层来获取其他业务实体

此场景的一种典型方法是在业务逻辑之上有一个facade层。当需要检索多个业务实体时,该层负责协调响应。因此:

服务->业务外观->业务逻辑->数据

编辑:对于小型、简单的应用程序来说,这太过分了。删除facade层,让服务调用一个逻辑方法,或者让服务调用多个逻辑方法

服务层实际上只是一个传递过程,您最好尽可能少地使用逻辑。这使得可以替换服务层,或者在不需要进行服务调用时,让受信任的应用程序/服务直接(在本地计算机上)调用门面层

这种方法还允许您在门面级别放置“信任线”,并在那里实现安全性。如果要进行安全检查,并且可能需要在这个“信任线”进行其他检查,那么我们只需要对业务门面进行一次服务调用,因此我们不会对检索所需的每个实体重复此逻辑

facade层只是调用逻辑层上的方法的方法层。facade方法可以简单到在逻辑层上调用一个方法,也可以复杂到在逻辑层上调用多个方法并协调适当域实体甚至DTO的一致响应


我可以继续。事实上,有整本书专门讨论这一问题。希望这至少有助于大致了解情况。

谢谢你,鲍勃!!刚刚回答了前面的问题…谢谢你,鲍勃!!刚刚回答了前面的问题…鲍勃,你说不吗!从业务层提供服务引用?在这种情况下,您是否建议对业务门面使用单独的VS项目?(与服务层分离)。正确。希望您的业务层运行在安全的机器上,而客户端代码不会直接调用它们。客户端代码将调用服务层,服务层将调用业务外观,等等。。。一个单独的项目通常是可行的,但这取决于这一切有多大。对于大型应用程序,是的,使用单独的项目。所以Bob你是说不!从业务层提供服务引用?在这种情况下,您是否建议对业务门面使用单独的VS项目?(与服务层分离)。正确。希望您的业务层运行在安全的机器上,而客户端代码不会直接调用它们。客户端代码将调用服务层,服务层将调用业务外观,等等。。。一个单独的项目通常是可行的,但这取决于这一切有多大。对于大型应用程序,可以使用单独的项目。