4

我正在构建一个基于 ASP .NET 2.0 (C#) 的 Web 应用程序,该应用程序主要用于内部网,即在组织的局域网内使用。

关于用户界面,我需要选择两种方法。

  1. 构建一个单页 Web 应用程序,其中包含大量 ASP .NET AJAX 1.0 控件(模式弹出窗口)以显示分类内容,否则这些内容将进入单独的 .aspx 页面。

  2. 使用传统方法并构建多个页面。

1 页的 UI 看起来和感觉都非常酷。但是,我对它的可扩展性表示怀疑。

同意该应用程序旨在通过 LAN 使用,但由于它是一个 Web 应用程序,如果客户愿意,它可能会通过 Internet 使用。

由于 1 页 UI,单个 .aspx 页面中已经有大约 2600 行代码,而在代码隐藏 (.aspx.cs) 中还有另外 1600 行代码

这将增长到最多 10,000 行代码(.aspx 中为 10,000 行,.aspx.cs 中为 10,000 行)。所以我需要知道——对于基于 ASP .NET 的页面来说多少是太多了——对于 Intranet 和 Internet 访问来说,2600 + 1600 行代码可以吗?10,000 行代码怎么样?什么是瓶颈?这种单页方法可以吗,还是我需要退回到传统的多页方法?

4

11 回答 11

5

在我说出我想说的话之前,我想声明一下,我认为这不是一个好主意。任何 5k 或 10k 行长的类(ASP.NET)都需要重构。这里有很多评论一直说你的下载时间太长了。仅仅因为您有一个 .aspx 文件,其中嵌入了 5k 行代码或 5k 在代码隐藏文件(或两者)中,这并不意味着您的下载时间会因此而显着增加。这些代码行在服务器上编译和执行,它们不会传递给客户端。因此,代码行数与下载大小之间没有直接关系。

赛义德·易卜拉欣·哈希米

我的书:Microsoft Build Engine 内部:使用 MSBuild 和 Team Foundation Build

于 2009-05-18T03:21:11.140 回答
3

尽管像这样一个非常臃肿的单页会增加下载时间,但维护起来绝对是一场噩梦。我同意布拉德的观点,单页方法是不对的。而且我想不出任何方法来证明单个代码隐藏中的 10k+ 行是合理的。

于 2009-05-17T06:38:36.127 回答
2

如果您需要在一个网页中拥有所有功能,我建议将代码移动到单独的 ascx 控件中,并将所有 ascx 组合到一个 aspx 中

于 2009-05-17T07:43:46.813 回答
1

从表面上看,这对我来说听起来像是一个可怕的解决方案(我敢打赌你的 DAO 是嵌入在视图中的)但是如果不查看实际代码就不可能说出来。

并且至少您有意识寻求另一种意见和其他选择……您对可扩展性的担忧是有道理的。

仔细考虑适当地分层您的应用程序......在支持 WML 视图方面,您的整体解决方案将如何叠加到“适当分层”的解决方案?

于 2009-05-17T07:29:55.910 回答
1

你总是应该考虑那些会试图理解你的代码以在你之后修改你的应用程序的人。无论如何,我认为一页 - 这绝对是不可接受的。没有任何“传统的多页方法”。如果您的应用程序包含不同的操作,它应该是“多页”

于 2009-05-17T11:17:25.270 回答
1

不行,按功能或部分将内容分成不同的文件。

这是用户控件派上用场的地方。如果此页面具有业务逻辑,请将其放在 BLL 中。与 DAL 相同。

使用 DAL、BLL 和用户控件拆分所有内容后,所有内容都应该更易于维护。

于 2009-06-18T09:35:34.843 回答
0

多少太多是无法回答的。不仅仅是数量,代码的质量也很重要。可以肯定地说的一件事是,如果您将大量代码放在一个页面中,那么您将在维护代码时遇到问题。例如,如果您是多个开发人员在开发应用程序,您将需要非常频繁地合并源代码控制系统中的更改,而不是执行单独文件的简单更新。

即使您将应用程序实现为单个页面,我强烈建议您将代码后面的单独行为封装到单独的类中,这些类根据页面需要创建和使用。但我会亲自设计应用程序,以便单独的行为也进入单独的页面。

于 2009-05-17T07:10:32.057 回答
0

我很惊讶没有人提到 ViewState。我认为,如果您最小化 ViewState 的大小(使用 ascx 控件并动态加载它们),那么设计良好的“单页解决方案”就可以了。

于 2009-05-17T11:41:18.910 回答
0

单页上的 10k 代码太多(它可能运行良好)但是你能维护这个代码吗?我不确定任何人都可以:)

于 2009-05-17T11:53:40.037 回答
0

您的数字与“OK”相去甚远。事实上,说实话,他们是灾难性的......

首先将尽可能多的不同概念填充到用户控件中。然后创建一些有状态的解决方案,以便将用户控件动态加载到页面的区域中。

于 2009-05-17T12:04:16.907 回答
0

我在 .aspx 上有一些 2K 行的页面,在代码隐藏文件中有 10,000+ 行。我有许多功能在网站上的其他任何地方都没有使用,并且依赖于一些视图状态信息。在我看来,在这种情况下,我认为这是一种性能提升,而不是要求服务器在另一个页面上搜索功能等。我认为有时,你只需要做你必须做的事情,它就是这样。试着让你的代码尽可能高效。

于 2011-12-29T21:25:11.900 回答