便携式区域的缺点

Posted

技术标签:

【中文标题】便携式区域的缺点【英文标题】:Portable Area disadvantages 【发布时间】:2013-06-12 23:29:50 【问题描述】:

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

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

【问题讨论】:

作为对我发布的答案的附带评论,我想澄清便携式区域和更典型的区域之间存在差异。如果便携式区域不能满足您的需求,传统区域可能会。 嗨@DaveA,我同意你的观点,这就是我目前正在使用的。 【参考方案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 不会在导入项目中注入任何源代码,我认为这对稳定性有好处。

以上是关于便携式区域的缺点的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理分区伙伴分配器 ④ ( 备用内存区域列表排序方式 | 节点优先顺序 | 区域优先顺序 | 排序方式优缺点 | 默认排序方式 )

车牌区域提取(定位)综述及各种算法的优缺点

59候选区域

OSPF多区域配置;骨干区域与非骨干区域;ABR边界路由器;LSA和SPF算法

OSPF详解-1 链路状态路由协议区域结构

利用 background 和 filter 模糊指定区域