【发布时间】:2011-03-22 16:13:13
【问题描述】:
我已经开始注意到我的 ASP.NET 开发中的一些反模式。这让我很困扰,因为感觉保持良好设计是正确的做法,但同时它闻起来很不对劲。
问题是这样的:我们有一个多层应用程序,底层是一个类,处理对向我们提供数据的服务的调用。上面是一层可以转换、操作和检查数据的类。上面是 ASP.NET 页面。
在许多情况下,来自服务层的方法在进入视图之前不需要任何更改,因此模型只是直接通过,例如:
public List<IData> GetData(int id, string filter, bool check)
{
return DataService.GetData(id, filter, check);
}
这并没有错,也不一定很糟糕,但它会产生一种奇怪的复制/粘贴依赖性。我也在做底层服务,它也大量复制了这种模式,并且自始至终都有接口。所以发生的事情是,“我需要将int someotherID 添加到GetData”所以我将它添加到模型、服务调用者、服务本身和接口中。 GetData 实际上代表了几种方法,这些方法都使用相同的签名但返回不同的信息,这并没有帮助。界面对这种重复有所帮助,但它仍然会时不时出现。
这个反模式有名字吗?是否有解决方案,或者对架构进行重大更改是唯一真正的方法?听起来我需要展平我的对象模型,但有时数据层正在进行转换,因此它具有价值。我还喜欢将我的代码在“调用外部服务”和“提供页面数据”之间分开。
【问题讨论】:
标签: c# asp.net anti-patterns