【发布时间】:2015-09-18 00:20:14
【问题描述】:
几天来,我一直在尝试在基于 VBScript (ASP Classic) 的系统上实现前端控制器。我来自 ASP.NET MVC 和 Java 背景,其中 MVC 实现很常见,并且主要由现有框架完成。然而,在 VBScript 上,这方面几乎没有做任何事情,所以这就是我尝试自己做的原因。我使用this 和this 文章作为如何实现它的指南。
一开始我认为我需要为每个请求定义一些常量参数,所以我创建了 3:
class_command 'which command responsible to execute the correct class handler
action 'which method of the class handler to execute
action_params 'which parameters the action will need
接下来,我定义了一个通用的控制器处理程序来处理请求:
Public Function Controller_Handler(action_params)
它的任务是提取常量参数(class_command、action、action_params)并处理任何可能出现的错误(稍后我将添加一个过滤器来处理它),例如缺少常量参数或身份验证问题。
但很快我就意识到了一个问题:处理程序如何知道要调用哪个命令,因为请求是一个字符串?我不能简单地使用反射将其转换为类,因为 VBScript(我认为)没有反射库或内置功能。
所以我想我可以像这样创建一个Switch Case:
Select action_Params.Item("action_params")
Case "command_A"
' Call Command A
Case "command_B"
' Call Command_B
.
.
.
Case "Command_X"
' And so on
End Select
但这会是一种程序化的方式。接下来我想创建一个 XML 文件来映射所有命令和其他内容。
所以我的问题是:考虑到 VBScript 的限制,这是实现前端控制器模式的好方法吗?如果没有,您能否提供一个指导(希望有一些例子,甚至是一个简单的例子)我该怎么做?
【问题讨论】:
-
所以你的意图是调用一个与传递的字符串参数同名的本地(或导入)函数?
-
@Bond 没错。控制器将是这个中心包含。它将有一个处理请求的处理程序,稍后将创建一个处理请求的命令类和一个将用户重定向到正确视图的调度程序。
标签: vbscript asp-classic front-controller