是否需要三层应用程序架构?

时间:2010-12-16 14:37:54

标签: c# php database three-tier

我参与了一个实现三层架构的项目,其设计如下:

  1. 表示层 - 使用PHP和MVC框架来处理前端表示和业务逻辑。该层调用服务层,该层访问数据。
  2. 数据访问层 - 使用C#.NET,分为服务,业务逻辑和数据层。由表示层调用。调用数据库并序列化响应以返回表示层。
  3. 数据层 - 数据库。提供上述两层的所有数据。
  4. 据我所知,三层方法可以帮助提高安全性,因为如果表示层受到威胁,仍然无法访问数据。虽然这是真的,但似乎这种方法过于复杂了,特别是因为我被迫在前两层为同一个对象编写两个模型。

    所以我的问题:这是一个三层架构的糟糕实现吗?如果是这样,怎么可以改进?简单地拥有一个可以访问数据库的MVC实现有什么缺点(如果有的话)?您对Web应用程序使用了哪些方法?

    感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

在我看来,你的3层与View,Controller Model相同。如果你的php主要是调用你的#2层,那么我认为自己不需要是MVC,除非你有一个非常复杂的表示层,它本身应该组织成MVC,例如你有复杂的导航或用户认证逻辑。

答案 1 :(得分:0)

编程中没有必要。但是有很多实践,这些实践多年来已经成为可以追随到更好结果的东西。 N层分离只是其中一种做法。

http://en.wikipedia.org/wiki/Multitier_architecture

您的描述遵循Wiki中的描述,因此 - 它是实现3层应用程序的合适方式。

但请记住,你不应该做任何事情 - 只要按照你感觉舒服的方式。在将来,您将拥有自己的一套专门为您服务的实践。

答案 2 :(得分:0)

我认为您的复杂性源于您使用的PHP和.NET不直接兼容。如果您删除了其中一个(仅使用PHP或仅使用.NET),这将简化操作。否则,我认为你正在采用一种好的方法。

答案 3 :(得分:0)

该方法的价值不仅仅在于安全性,还有助于维护。

我不确定我是否理解这个问题:“特别是因为我不得不在前两层为同一个对象编写两个模型。”这似乎是因为您正在为UI和后端使用两种不同的编程语言。我猜C#“数据访问层”包含一个完整的对象模型,然后你必须在前端复制。

问题似乎是你有两个相互镜像的中间层,因为你使用的是两种语言,而不是你使用的是n层架构