便携式区域的缺点
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 内核 内存管理分区伙伴分配器 ④ ( 备用内存区域列表排序方式 | 节点优先顺序 | 区域优先顺序 | 排序方式优缺点 | 默认排序方式 )