根据我对N层和SOA架构的理解。
N-Tier意味着将应用程序划分为多个层,示例I我正在asp.net中开发应用程序,我将总数据库层推送到WCF,然后将其称为N层。[紧耦合]
根据我对SOA的理解,它是非常通用的术语,以及我们如何将我们的架构松散地耦合到其称为SOA。 SOA服务的最佳示例 - 饲料/天气预报。
即使我们使用WCF开发应用程序,如果它与单个客户端/或.net应用程序紧密耦合,也不意味着它的SOA只能了解服务。
您能帮我理解SOA VS N-Tier。
答案 0 :(得分:33)
这两者无法比较,因为每一个都描述不同的东西。另请注意,Tier与Layer不同。
等级 - 过程边界。构建3层应用程序时,您知道UI,BL和DB将在3个不同的进程中,这些进程可以在三台不同的机器上。
图层 - 逻辑边界。单层可以包含多个层。这就是您构建应用程序以遵循OO原则的方式。
SOA - SOA应用程序可以是多层和多层的,但通常不需要。 SOA是一种以可重用的可自动互操作远程调用组件的意义构建应用程序的方法。 SOA服务必须遵循four tenets。
为了显示N-Tier和SOA之间的简单区别,我们假设您在使用某些数据库的业务逻辑的顶部构建服务层。看起来你正在构建N-Tier SOA应用程序,不是吗?不幸的是,并非每个公开服务的应用程序都遵循这些原则。在这种情况下,最关键的可能是“显式服务边界”和“服务是自治的”。如果您的服务在数据库中共享某些业务逻辑功能或数据,则它们没有明确的边界,并且它们不是自治的=>该应用程序不是设计为SOA。
小型SOA和大型SOA之间也存在差异。提到的应用程序是小型SOA - 每项服务都必须遵循原则。大型SOA用于企业集成,您可以将应用程序及其所有服务统计为单个单元,并且必须遵循原则。
祝你好运, 拉吉斯拉夫
答案 1 :(得分:2)
Ladislav是有钱的,你认为单独使用WCF并不能保证建立SOA是正确的。
以下是如何使用WCF构建SOA的一些实际示例。
我建议您阅读Thomas Erl和Roger Sessions撰写的文章,这将使您能够掌握SOA的全部内容。
答案 2 :(得分:0)
我认为SOA的主要观点(与标准的N层架构相比)是底层服务的可重用性。这就是为什么您创建Web服务作为数据源的目的,以便它们可能为将来要编写的其他应用程序提供服务。这就是前面提到的松散耦合非常方便的地方 - 您的Web服务非常通用且足够独立,可以在许多不同的应用程序中使用。
答案 3 :(得分:0)
以这种方式思考:SOA服务是N层应用程序中的数据访问层可以调用的东西,但它也是我的N层应用程序中的数据访问层可以调用的东西。但是,我可能不会在我的应用程序中使用您的数据访问层。
例如:
用于处理员工时间表的数据访问层将根据与时间表相关的应用程序进行定制。
我的数据访问层用于处理员工的工作质量评估,将根据员工工作质量评估的功能进行定制。
但是,我们的应用程序以及任何其他员工相关的应用程序都可以从SOA服务中受益,该服务可以处理核心员工数据,如员工ID,姓名,小册子号等。
答案 4 :(得分:0)
@ladislav:根据你的回答,在业务逻辑中实现Web服务是否合适。在这种情况下,我的架构可以称为SOA,N层还是它们之间的组合?