【问题标题】:Converting ASP.Net MVC to N-Tier将 ASP.Net MVC 转换为 N 层
【发布时间】:2011-07-27 19:22:32
【问题描述】:

我最近开始学习 ASP.Net MVC 及其各种功能MVC_3_MUSIC_STORE + CODE .
它看起来非常结构化且易于理解。

我正在阅读有关企业应用程序以及它们如何在不同部分中分层/分层的信息
(逻辑/物理)

我想知道(用于学习)如何将上述MVC_3_MUSIC_STORE 分离(转换)为 n 层或 3 层应用程序(因为我们已经有一个工作示例)为了清晰分离担心。 我在这方面没有太多经验。

需要进行哪些更改?

需要哪些不同的 DTO 或 POCO? 上面的示例使用从控制器到视图的 POCO 实体。 假设首先使用 EF 代码,它会保持不变吗?

我还想知道如果将 WCF Webservice 作为数据访问层引入,需要进行哪些更改。即客户端不会从 DAL 检索数据,而是向 WCF Webservice 请求数据和从 WCF Webservice 请求数据。客户端可以是 Web 应用或 WinForms 或 Sliverlight 应用。
( [DAL WCF WS] N 个客户)

了解各种方法会很有趣。

示例代码会有所帮助和/或相同的示例。

编辑 1 - 添加
我注意到的一件事是当我将模型类从模型文件夹移动到新项目“MYMODEL”时,我将不得不再次在新模型项目中添加对“System.ComponentModel.DataAnnotations”和“System.Web.Mvc”的引用?

如何避免这种情况?如何将这些验证移至业务层?

编辑 2
寻找类似的东西 Advice For A Newbie About N-Tier Applications

【问题讨论】:

    标签: c# asp.net-mvc entity-framework-4 poco n-tier-architecture


    【解决方案1】:

    通常唯一需要的更改是您将提供存储库(DAL 层)的实现,它将调用 WCF Web 服务来获取域模型,而不是直接与数据库对话的某些 EF DataContext。对控制器和视图完全透明的更改。

    【讨论】:

    • 这不是“使其成为 N 层”,而是使其面向服务(这本身就是一个重载的术语)。 UI层+业务层+数据存储层=三层架构。其中没有任何内容要求 Web 服务。
    • @Eric J.,虽然我真的不熟悉这些术语,但我肯定会这样做。
    • 基于什么要求?与直接数据库访问相比,WCF 很慢(与本机 HTTP 处理程序相比也很慢)。在许多情况下,通过 Web 服务公开功能是有价值的,但也有成本。在不质疑问题的情况下应用解决方案会导致糟糕的架构选择。我们的解决方案每天可以处理数十亿个请求,并且如果我们将 WCF 作为附加层引入,则需要几乎翻倍的硬件。有关术语的定义,请参阅en.wikipedia.org/wiki/Multitier_architecture
    • @Eric J. - 我想你很困惑。 3 层并不能使其成为 3 层。层是抽象,层是物理分离。不过,问题的关键是提问者专门询问了如何将数据层抽象为 n 层,并专门询问了如何用服务访问代替数据访问。此外,Web 服务是一种物理分离,可以作为一个层。
    • @Amitd,您可以在您的业务层中引用System.ComponentModel.DataAnnotations,以便对您的模型执行验证。另一方面,您不应该引用System.Web.Mvc。此程序集中的任何验证属性都与 ASP.NET MVC 相关联,不应在您的模型上使用,而应在驻留在 Web 层中的视图模型上使用。
    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2011-02-20
    相关资源
    最近更新 更多