【问题标题】:How to access view from logic layer?如何从逻辑层访问视图?
【发布时间】:2016-06-28 08:01:21
【问题描述】:

我正在尝试使用 C# 在 .NET Framework 中创建一个 ATM 应用程序。我已经使用 3 层架构实现了其中的一部分。

当用户选择提取现金时,流量从 VIEW 移动到 LogicLayer,因为我在 LogicLayer 中添加了 VIEW 的引用。现在我需要从 LogicLayer 调用一个视图方法。谁能告诉我该怎么做?

谢谢

class DataAccessLayerClass
{
    BusinessObjectClass read(BusinessObjectClass bo)
    {
        //read from file if user exists then return his credentials

        //else
        //call INVALID USERNAME / PASSWORD errror method in VIEW. 
    }
}

我可以从 VIEW 流向 LL 和 DAl,但是如何反向流?在这种情况下根据需要

【问题讨论】:

  • 你能发布一些代码吗?
  • 阅读有关将 MVVM(模型-视图-视图模型)与 WPF 结合使用的信息。这应该为您提供在 C# 中构建多层应用程序所需的功能。
  • @Jeroen 我可以从 VIEW 流向 LL 和 DAL,但是在这种情况下如何手动以相反的顺序流向?描述中添加伪代码
  • 你没有,这就是重点
  • 我想给出一个简单的建议,这不是一个正确的答案:在决定将代码放在哪里时,首先要考虑责任。谁负责什么?视图必须显示,逻辑层必须“决定”,数据层必须读写。职责是什么并不重要(它会根据您使用的特定架构而变化),最重要的是您应该始终知道将一些代码放在哪里,具体取决于职责。这称为关注点分离。

标签: c# .net 3-tier


【解决方案1】:

分层架构的整个想法是层是不透明的,上面的层只依赖于下面的层,反之亦然,因此您不应该直接依赖于业务(逻辑)层中的视图。 UI 应该向业务层发送请求,然后对业务层的响应做出反应,可能通过应用程序服务层。 你究竟是如何做到这一点的,你使用什么模式,MVVM、MVC、MVP - 取决于你的技术堆栈,所以请分享更多细节

【讨论】:

    【解决方案2】:

    不要尝试在业务层使用视图功能。这是您的应用程序结构的破坏。你必须只考虑一种方式连接。不是对话。 例如:视图可以调用逻辑层并返回结果。然后 AGAIN 视图根据结果调用逻辑。

    【讨论】:

    • 这意味着我不需要从 DAL 的 BLL 调用 VIEW,而是需要在 VIEW 中检查下层返回的内容。我所有的代码都取决于较低层给出的响应。我选对了吗?
    • 是的。您的视图是操作开始的层。用户对 UI(视图层)进行操作。您应该对 UI 进行一些检查。然后视图层将数据发送到业务层。业务层也根据请求进行控制,并与DAL进行通信。 DAL 返回一些结果,业务层返回数据以供查看。然后再次查看进行一些控件并从业务层请求另一个数据。这是n层应用程序的循环。一种方式沟通。如果您将视图 dll 引用到 business 或 dal,那么您可能会犯错误。
    猜你喜欢
    • 2021-04-08
    • 2012-07-06
    • 2012-11-26
    • 1970-01-01
    • 2014-09-07
    • 2021-01-04
    • 2012-08-30
    • 2013-03-25
    • 2017-03-24
    相关资源
    最近更新 更多