【问题标题】:Catalyst dispatchers (not using them)催化剂调度程序(不使用它们)
【发布时间】:2016-05-15 12:56:15
【问题描述】:

我们的网站是用纯 Perl 编写的(我们的代码库相当大)。

我们将对其进行重构。

Catalyst 使用“方法调度程序”(如“:Path”)。但是我们的网站是用大量我们定制的书面调度员编写的。

我的问题:如果我们切换到 Catalyst,我们是否能够使用自定义方法调度程序,而不是全部以 Catalyst 方式重写? (可能稍后切换到 Catalyst 方式(“增量”))

那么,我们的大网站值得用 Catalyst 重构它吗?

我是一名长期的 Perl 程序员,但 Catalyst 新手。

【问题讨论】:

    标签: perl catalyst


    【解决方案1】:

    我在一个网站上工作,其中一部分是 Catalyst,还有很多 CGI 脚本和 mod_perl 处理程序。我们没有使用 Plack(该项目在引入 Plack 之前就已启动)。我们使用 Apache 部署了所有代码(CGI、mod_perl 处理程序和 Catalyst)。第一级调度是在 Apache httpd 的配置中使用 Location 指令完成的,其中请求将由 CGI、mod_perl 或 Catalyst 根据其 URL 来处理。

    例如,运行 CGI 脚本:

    ScriptAlias "/cgi-bin/" "/home/httpd/cgi-bin/"
    

    最重要的是,为匹配“/myapp”的 URL 运行 Catalyst:

    <Location /myapp>
        SetHandler          modperl
        PerlResponseHandler MyApp
    </Location>
    

    这有点过于简单了。请查看http://search.cpan.org/~ether/Catalyst-Manual-5.9009/lib/Catalyst/Manual/Deployment/Apache/mod_perl.pod,因为这正是我们部署应用程序的 Catalyst 部分的方式。

    只是为了给你更多的细节。当我们已经有很多与您的情况有点相似的代码时,引入了 Catalyst。而且由于时间限制,我们不想在 Catalyst 中重写所有内容。

    回答您的问题: 是的,您可以切换到 Catalyst(甚至是渐进式的)并且仍然能够使用现有的自定义方法调度程序。

    【讨论】:

    • 我们在 (F)CGI 脚本中使用硬编码的调度程序。服务器调度配置不是很复杂。如何连接我们旧的 CGI 脚本和新的 Catalyst 代码?你说这是可能的,但没有解释如何做到这一点
    • 我添加了一个简化示例,说明如何在 Apache httpd 中配置我们的应用程序以处理由 Catalyst 和 CGI​​ 处理的请求。我认为一旦请求进入您的 CGI 空间,您就可以使用旧的调度程序。
    • 我们并没有真正直接“连接”我们的 Catalyst 代码和 CGI​​ 脚本。 Catalyst 领域所需的许多功能都被重构为可供 Catalyst 和 CGI​​ 代码使用的库。
    • 我的问题尚未得到解答:如何在 (F)CGI 中(或者更确切地说,在我们的 (F)CGI 使用的自定义编写的 .pm 模块中)将 Catalyst 与我们自定义编写的调度程序一起使用?跨度>
    • 您的自定义 .pm 模块可以像任何其他 Perl 模块一样使用。您可以使用“使用”或“要求”加载它们。当然,您必须将这些模块的路径放在您的 @INC 中,可能通过在您的 Catalyst 脚本中使用“使用 lib”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多