如何避免WPF客户机-服务器应用程序中的依赖循环

本文关键字:依赖 循环 应用程序 服务器 何避免 WPF 客户机 | 更新日期: 2023-09-27 18:06:54

你好,我是新到这个论坛,我正在寻找一些帮助。我正在开发一个WPF应用程序,本质上,这个应用程序允许用户从文件系统中挑选文件,并将完整路径发送到python服务器,以及我必须实现的其他类型的通信。

我把我的WPF应用程序分成了三个部分。WPF GUI本身,一组处理客户端-服务器通信的控制器和第三个称为"控制器访问层"的组件,该组件管理GUI和控制器之间的整个数据流。

我不希望GUI和控制器直接通信,但有一个中间结构。在Visual Studio我有三个项目称为GUI,客户端,CAL(控制器访问层)。GUI和客户机都有对CAL的引用,因为它们都需要CAL对象,但是为了使CAL访问控制器和GUI,我应该从这里引用它们。

如果我尝试对GUI和客户端添加对CAL的引用,我会得到一个依赖错误。我读过关于这个问题和它背后的糟糕设计的文章,所以我想知道我的设计在概念上是否正确,以及我如何在这种情况下避免依赖循环。

public class CAL
{
    // CAL Object shared between projects
    public static CAL ControlAccessLayer { get; } = new CAL();
    Dictonary<string,BaseController> ListController {get; set;}
 }

上面的代码是CAL类,可以看到这个类有一个BaseController对象的Dictionary。我不确定的另一件事是我在项目之间共享CAL对象的方式,基本上我设置了一个静态CAL对象,可以从其他两个项目访问。我不是一个专业的设计师和新手在这个领域,我想有一些建议。谢谢你的帮助

如何避免WPF客户机-服务器应用程序中的依赖循环

将两个项目中使用的组件移动到一个单独的项目(xyz.common)。例如,如果实现应该在CAL中,那么在客户端层使用的公共项目中定义一个接口,并在CAL项目中实现接口。

这就是我们在我当前的项目中如何做到的,我们也在客户端和后端共享一些对象