【问题标题】:Portable Area disadvantages便携式区域的缺点
【发布时间】:2023-04-07 10:15:01
【问题描述】:

对于有便携式区域经验的人,

我想知道使用它们是否有缺点,以及为什么您不会使用它们将大型 MVC 应用程序分解为组件。

【问题讨论】:

  • 作为对我发布的答案的附带评论,我想澄清便携式区域和更典型的区域之间存在差异。如果便携式区域不能满足您的需求,传统区域可能会。
  • 嗨@DaveA,我同意你的观点,这就是我目前正在使用的。

标签: asp.net asp.net-mvc asp.net-mvc-4 mvccontrib portable-areas


【解决方案1】:

让我们从

定义:

Portable Area 是一个包含 items 的 dll,通常是您的解决方案的一部分。可移植区域包含视图、控制器、模型,甚至 JS 脚本、CSS 文件和图像。

理想情况下,您的便携式区域中的items 可以协同工作以创建具有凝聚力的功能。如果没有,您可能不会从拥有便携式区域中受益。

好处

我将 Portable Areas 与 Web-Forms Web Parts 进行比较,因为它们都试图回答这个问题:

如何创建可重用的功能?

如果您想创建可在多个项目中使用的功能,或者作为功能分发给第三方使用,您将从 Portable Areas 中受益。

缺点

每次您对 Portable Area 中的任何视图、JS 文件、CSS 文件或图像进行更改时,都需要重新构建它。我强调这些组件是因为它们在测试或开发时通常不需要重新构建。

这可能会成为一个问题。如果您发现每次调整 CSS 时都在重新构建,那么 30 秒的更改会变成 2 分钟的更改。做 30 次,你就可以将 15 分钟的工作时间延长到 2 小时。

Portable Areas 旨在让成熟的功能按原样在多个项目或解决方案中重复使用。

  • 便携式区域对于处于早期开发阶段的功能并不理想。

  • 便携式区域不适用于仅存在于 1 个解决方案或项目中的功能。

【讨论】:

    【解决方案2】:

    很多事情已经说了。我在使用 Portable Areas 方面有一些经验,这是我个人的观点。

    • MvcContrib 一年未更新(请参阅nuget。如果您查看codeplex,您会发现自上次发布以来源代码没有太多更新。它可能是成熟的,但没有任何支持是有问题的。

    • 可移植区域是自包含在单个程序集中的。重用和升级肯定更容易,但挑战在于如何允许客户端应用程序对用户界面进行足够的控制。即使它是一个可重用的功能,您有时仍想使用主布局或部分布局。

    • 所有网络资源(CSS、Js、视图)都必须是嵌入式资源(包含在 dll 中)。这意味着开发/调试真的很痛苦,因为每次代码修改都需要重新构建。此外,您需要在客户端网站上托管便携式区域。

    • 便携式区域使用自定义虚拟路径提供程序。自定义虚拟路径提供程序代码未经测试且完全不可测试。 ASP.Net 团队不鼓励使用虚拟路径提供程序,因为它们会导致性能问题。

    • 便携式区域与 Nuget 包。 Portable Areas 是四年前设计的(在 Nuget 之前)。Portable Areas 解决了将文件轻松传输、查看和资产(Css、javacript)到单独的应用程序的能力。 Nuget 也解决了这个问题。

    然而,即使有所有这些缺点,我的团队仍在使用它。为什么 ?因为它是在正确的时间为我们提供正确的解决方案。

    【讨论】:

    • 感谢一针见血,您设法说服我反对它并坚持使用区域代替。坚持者是虚拟路径提供程序的问题。
    • Nuget 并没有解决保持功能分离的问题,它只是促进将源和程序集合并到现有项目中。使该合并正常工作,处理升级以及处理错误的后果仍然取决于您,尤其是在涉及 JS/CSS 资产和配置更改(即 web.config 插入)时。 Portable Areas 不会在导入项目中注入任何源代码,我认为这对稳定性有好处。
    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多