【发布时间】:2009-08-11 12:07:58
【问题描述】:
我已经使用 ASP.NET 构建网站已有一段时间了。起初,我避免学习 ASP.NET 提供程序模型的复杂性。相反,我在必要时使用了罐装提供程序,并严重依赖依赖注入框架来满足我的所有其他需求。
然而,最近,我一直在为 ASP.NET 编写可插入组件,当然也编写了许多基于自定义提供程序的解决方案以实现这一目标。然而,我很快就发现很多initialization code is being duplicated,这是一件坏事。
所以……
- 在如何避免配置意大利面条式代码方面出现了任何最佳实践?
- 您是否已构建或有任何示例(基类/帮助类、自定义属性、反射)来分享抽象基本初始化代码以便更轻松地构建自定义提供程序?
注意:
请不要尝试将我发送到Provider Toolkit 站点。我已经用尽了那个资源,这就是我转向 SO 社区的原因:)
【问题讨论】:
-
我想提供一些帮助,但我不是很清楚。您正在为 ASP.NET 编写“可插入组件”,并且“当然”正在编写许多基于提供程序的自定义解决方案......我不确定您所说的可插入组件究竟是什么意思,或者为什么很明显您会编写不同的提供程序对于每个组件。您能否阐明您正在尝试做什么,以及为什么您需要为每个组件提供不同的提供程序?我会看看能不能提供一些帮助。
-
你见过ELMAH吗?我一直在努力编写与其关注点交叉的组件,但不是特定于域/应用程序的。模块、处理程序等......如果他们接触到任何类型的存储,他们需要利用提供者模型来实现真正的可插拔(machine.config/web.config)。这不是问题,但我注意到您最终编写了大量代码来管理配置内容。我只是想知道是否有人这样做足以提出一些最佳实践,甚至是一些通用处理此类管道代码的实用方法。
-
这就像在 Web 环境中用于缓存的双重锁定模式。如果您对缓存做任何事情,您最终会编写该代码,但您通常会将其分解为一些实用程序类来为您完成繁重的工作,因此您不必编写两次。在管理配置部分时,您最终会做很多事情,我只是想知道是否专门针对此问题出现了任何模式。我只想尽可能干。