代码之家  ›  专栏  ›  技术社区  ›  Michael Mao

这种Web开发方法更像MVC还是SOA?还是两者兼而有之?

  •  0
  • Michael Mao  · 技术社区  · 14 年前

    我处理Web开发的常用方法是将项目分为三层,即:

    1. 数据层-根据需要访问各种关系数据库
    2. 服务器层-为客户端控制器调用提供服务。
    3. 客户端层-呈现视图并加载控制器javascript。

    根据我的理解,这种方法基本上是MVC性质的,也就是说,控制器javascript在服务器端调用模型,并期望从中得到结果。一旦收到结果,控制器就会调用适当的渲染方法来修改视图,这就是要显示的浏览器上的xhtml/css。

    但是,我不确定这是否也可以称为SOA(面向服务的体系结构)?

    由于服务器和客户机之间的通信是通过JSON完成的,所以我只需更改数据访问模块,就可以轻松地将服务器端语言切换到另一种语言。我认为这意味着服务器和客户机之间的松耦合,因为服务器只专注于提供服务。也可以通过SOAP引入Web服务,但我更喜欢JSON,因为基于我的知识,它更容易实现。

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   MetalLemon    14 年前

    MVC是一种表示模式,实际上与SOA无关。

    现在MVC中的模型,特别是Web开发中的模型已经变成了视图模型,您的实际模型或域模型位于BLL中,或者被包装在服务层后面。

    SOA归根结底就是您使用设计、划分和托管业务逻辑的范例。

    你能一起用吗?当然可以!您的MVC控制器可以调用服务端点来查询域模型,这可以作为SOAP、纯XML发生,或者根据您喜欢的JSON,协议的选择不是SOA所做的。SOA的一个变体是REST,它将一个经过修改的范例应用于您设计服务端点的方式。

    这些返回的信息被按摩到视图模型中(模型的表示层知道它是这样的),并呈现适当的视图。

    下面是一些到一些实际SOA资源的链接。

    我建议您阅读ThomasErl和RogerSessions的文章,这将使您对SOA的本质有一个坚实的理解。

    SOA Design Pattern

    Achieving integrity in a SOA

    Why your SOA should be like a VW Beetle