【问题标题】:Suggested directory / module structure for multi-channel Yii2 app多渠道 Yii2 应用的推荐目录/模块结构
【发布时间】:2015-09-14 04:48:11
【问题描述】:

我使用我的应用程序的基本应用程序模板启动了我的日程安排应用程序,它运行良好。最初,它仅适用于 IVR,现在它开始添加多个频道(ivr、web、sms 等)。每个通道以不同的方式处理用户请求并在请求的通道中传达请求,但它所做的只是调度。所以,我从以下结构开始,

backend
common
frontend
    modules
        ivr
        web
        appt
    

对我来说,appt 将成为核心模块,将被所有频道模块使用。 ivr 和 web 模块处理来自不同渠道的请求。如果有人请求 appt,我如何将请求数据传递给 appt 模块并将 appt 的响应发送回用户?

如果它是一个没有模块的应用程序,它将是模型的实例化并将表单收集的值分配给模型,验证它们,保存并同步发送请求中的响应。如果我的模块依赖另一个模块来执行验证和其他业务逻辑,我该怎么做?

谁能解释一下我的方法?我应该使用模块并返回简单的单个应用程序结构吗?

编辑:

我的主要困惑是 IVR 应该作为一个模块使用,还是应该作为后端、前端和控制台应用程序使用 Yii2 高级模板作为单独的应用程序使用。我正在考虑的其他模块是订阅、脚本、通知程序。一些模块对所有渠道通用,而另一些模块则特定于 IVR。

当我将“约会 (appt)”视为模块并尝试从 Web 模块制作 appt 时,我陷入了如何实例化模型和检索错误消息的问题。

我认为模块应该是松耦合的,但对我来说,它似乎与其他模块紧密集成。您对以下内容有何建议?

  1. 每个目的/功能都作为模块,应该能够处理所有渠道(ivr、web 等)的请求/响应

  2. 每个频道都应该被投影为模块,并且应该与功能模块交互。这是否过度编译了模块系统?

  3. 将 IVR 作为单独的应用程序并在其中导入必要的模块并根据需要添加模块?

【问题讨论】:

    标签: refactoring yii2 code-organization yii2-advanced-app


    【解决方案1】:

    您的问题有点笼统,因此无法给您准确的答案,但是 Yii2 可以通过多种方式传递信息。您可以将调用重定向到重定向,但我认为最好的解决方案是在您的模块应用程序中实例化您需要的服务。使用use ----\modules\ivr ... 包含正确的命名空间,然后使用您需要的模块的最合适的方法。

    要发送给用户的响应必须明显返回以不同格式提供的信息,因此您必须注意每种渠道类型的正确格式,但是成功组织了您需要的不同表单,我认为限制自己制作或专门化 render / echo 适当的。

    回复

    与您的相比,我会牢记以下几个方面:各种渠道很可能是独立的模块,它们之间的耦合度很高。 集成和各种组件之间的耦合问题,它将由一个模块 (appt) 管理,该模块关心集成和协调用户请求,并在通道的特定功能上中继各种任务。

    它还必须考虑通过适当的面向对象架构来管理各种功能的机会,这将允许模块功能之间的协调动作的进一步集中,特别是创建一个抽象通道,从该通道专门功能公共通道(和关系与系统组件)。

    我特别感兴趣的是,我认为 IVR 模块是一个与频道截然不同的模块。当然它有一些内在的特殊性,但在模块化同质性方面尝试更多地工作。

    讨论还是很广泛的。我们应该更具体地满足交互和电信的需求,这将使我们成为客观的功能应用程序。 我希望这会很有用

    【讨论】:

    • 感谢您的回答,尽管这个问题本质上是通用的。我已将我的方法限制在 3 种,我需要从中选择一种并编辑我的问题以添加它们。请提出建议。
    • 我在答案中添加了一些其他考虑因素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2012-12-18
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多