我正在构建一个 ASP.NET 网站,它将充当“框架”并显示有关在 Web 服务器上运行的某些服务的信息。站点需要做的一件事是为服务加载的某些模块提供自定义配置页面。这些模块都将实现一个通用 API,所以不用担心——我关心的是如何获得配置页面,这些页面对每个模块都是唯一的,由一个通用前端提供服务?
页面需要验证用户输入,处理按钮点击等。所以它并不像在每个模块上都有一个方法那么简单:
public string getHTMLConfigPage()
这仅在模块的配置页面不需要用户输入时才有效。在这种情况下,所有模块都需要某种形式的配置,至少需要一个指示“打开/关闭”的复选框
这是理想的用例:
- 在运行时,IIS 进程与后端服务对话并计算出有 N 个模块正在运行
- 服务器将这 N # 个模块的链接添加到下拉菜单中
- 当用户单击某个模块的菜单项时,将显示该模块的配置页面
- 用户可以根据自己的意愿配置模块,单个模块控制整个序列
我们已经在 C# winforms 中成功实现了这一点。我们这样做的方式是让每个模块实现一个方法public void showConfigDialog(IWin32Window parent);
。这适用于常规桌面应用程序——但显然不能帮助我对 Web 服务器做任何事情。
到目前为止,我唯一想到的是让每个模块也安装一些东西到 IIS Web 服务器上,然后只做一个iFrame
主“框架”页面可以在框架中显示模块页面的地方(或弹出窗口),但这似乎很混乱,因为模块开发人员必须包含某种设置脚本才能将东西放入 IIS 空间......
那么 - 有没有更好的方法来做到这一点,或者 iFrame 方法是唯一的方法?
系统详情:
- ASP.NET 4.0
- C# .NET 4.0
- IIS 7.5(服务器 2008 R2)
编辑:附加细节
我还考虑过让模块将一个特殊的 ASP.NET DLL 放在 ASP.NET 将在运行时探测的目录中。但问题的根源仍然存在——模块提供的 DLL 如何集成到主要的网页集中?主要的网页集有一个Site.Master
页面,提供一些必需的项目(CSS、菜单栏、一些 jQuery 插件等)。来自模块的 DLL 可能需要此信息以及主网页用来与我们编写的底层 Windows 服务对话的命名管道。