2008-10-28 72 views
0

我有一个专门用于报告PBX扩展统计信息的ASP.NET网站。它包含许多报告页面,使用几乎完全由代码隐藏(设置Label控件的Text属性而不是使用Response.Write)生成的HTML,使用未参数化的字符串文字SQL查询来填充“参考数据表”参数。战略建议:升级Web应用程序的设计

维护页面至少包含DataGrid和详细信息表单,但在e上使用相同的DAL,因为可以说它支持多个DB服务器,每个子类都使用它们自己的字符串重写这些访问方法查询。

我需要考虑清理这个烂摊子?我已经做出了一个几乎明显的决定,即使用第三方报表解决方案,并将查询移动到各自的数据库语言中存储的特效库,缩小不同DAL类的多样性,并将CSS分成共享文件它非常隐藏在C#文件中!

回答

0

我会考虑抛弃任何自定义编写DAL和使用的一个:

你甚至可能最终下探存储过程完全。

如果你敢于尝试使用Microsoft's MVC实现进行重新设计。无论采取什么方法,都要确保在重构​​任何代码之前编写单元测试,验证测试在重构之前和之后通过。

1

对于您的后端设计,我建议您有一个类来表示数据库的每个主表(例如,Report类和User类)。任何不是事件处理程序的东西都应该放在后端类文件/命名空间中。

对于你的GUI,看起来你正在使用ASP.NET控件的正确轨道,而不是将数据流式传输给用户。但是,您可以考虑客观化页面的区域。例如,我最喜欢的技巧之一是在显示短消息时需要用户输入或类似信息栏时打开半透明的“弹出”面板。

考虑AJAX和AJAX控件工具包。这很容易实现(特别是在重写的情况下)并且提供了很大的灵活性。具体来说,我发现手风琴 - 有时甚至嵌套在其他手风琴中 - 在组织过多信息方面非常出色。

编辑:

请注意,如果你使用AJAX,你基本上甚至不能考虑使用的Response.Write了。

只要屏幕上的内容太多,请记住面板具有“滚动条”属性,并且DIV不会发生重大更改。

另外,我倾向于用命名空间来分隔我的代码文件;但流行的趋势是由班级这样做。如果您有许多开发人员,或者可能会有多个名称空间中的类被检出或由不同的人同时修改,则这是更好的选择。

+0

我也喜欢手风琴,但我的客户都没有。 :( – cfeduke 2008-10-28 22:46:46

+0

手风琴的问题是,你通常不知道窗格标题是可折叠的,除非你尝试过或开发它:)或者,你可以使用面板并通过UpdatePanels填充它们... – tsilb 2008-10-28 22:49:11