4

我从事过一个实现三层架构的项目,其设计如下:

  1. 表示层 -使用带有 MVC 框架的 PHP 来处理前端表示和业务逻辑。该层调用访问数据的服务层。
  2. 数据访问层 -使用 C# .NET 并分为服务、业务逻辑和数据层。由表示层调用。调用数据库并序列化响应以返回到表示层。
  3. 数据层 -数据库。提供上述两层的所有数据。

我知道三层方法可以提高安全性,因为如果表示层受到破坏,仍然无法访问数据。虽然这是真的,但这种方法似乎有点过于复杂,特别是因为我被迫在前两层为同一个对象编写两个模型。

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

谢谢您的帮助!

4

4 回答 4

3

在我看来,您的 3 层与视图、控制器模型相同。如果你的 php 主要是调用你的#2 层,那么我认为它本身不需要是 MVC,除非你有一个非常复杂的表示层,它本身应该被组织到 MVC 中,例如,如果你有复杂的导航或用户身份验证逻辑。

于 2010-12-16T14:45:37.157 回答
0

编程没有什么必要的。但是有很多实践,多年来证明了这些实践是你可以遵循以获得更好结果的东西。N 层分离只是其中一种做法。

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

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

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

于 2010-12-16T14:43:03.053 回答
0

我认为您的复杂性源于您使用的是 PHP 和 .NET,它们不直接兼容。如果您消除了其中一种(仅使用 PHP 或仅使用 .NET)将简化事情。否则,我认为您正在使用一种很好的方法。

于 2010-12-16T14:49:37.620 回答
0

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

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

The problem seems to be that you have two middle tiers that mirror each other, because you're using two languages, not that you are using a n-tier architecture

于 2010-12-16T14:51:08.490 回答