当我第一次从Java切换到C#时,我对C#的功能印象非常深刻。但是,在我看来,C#还没有以JavaEE的方式提供可靠的基础架构。
每当我尝试将C#的功能集成到可扩展或复杂的架构中时,它总是归结为: 如何扭曲它以使其成为MVC / MVP ?例如,数据绑定给我带来了比节省时间更多的麻烦。
MSDN有许多与架构和模式相关的文档。但是,在大多数情况下,它们是“教科书”,并没有解决这些概念与.NET功能的关系。
JavaEE的EJB和Apache的Struts似乎都鼓励MVC架构。与大多数JavaEE一样,他们倾向于强调分离概念和可扩展性,使其成为大型项目的候选者。
Apache就是这样说的:Struts就像“站在巨人的肩膀上”。我也可以进入.NET的肩膀吗?
我能提出的最佳单线是:
是否有大型项目中常用的C#架构整形框架?
我无法抗拒这个类比:我觉得.NET是 Power Rangers ,而JavaEE是 Megazord ......
免责声明:我通过Java销售给C#。我在C#领导了几个中小型项目,主要是使用MVP分离;我只是想“填补空白”。
答案 0 :(得分:5)
.NET实际上没有一个可以或必须使用的包罗万象的架构框架。这在很大程度上取决于您正在编写的应用程序类型。
由于你明确询问MVC / MVP和数据绑定,我猜你的一个问题是架构,因为它与UI和关注点分离有关。在Web应用程序和桌面应用程序中处理的方式有很大不同。
对于Web应用程序,相对较新的ASP.NET MVC框架将您带入正确的方向。它可能会更好(我希望v.2会更好),但我已经非常满意了。
对于桌面应用程序,Windows Presentation Foundation为您提供了通过implementing the MVVM pattern将逻辑与UI分开的绝佳机会。
但是,我怀疑你正在寻找比这更具结构性的东西。今天,在基类库中,我们并没有真正拥有这样的东西,但另一方面,有许多开源DI容器可以帮助您构建可组合的大规模应用程序。一些常见的DI容器是:
我不确定这是否有用,因为我不太了解Java以确切了解您正在寻找什么,但我希望您觉得它有点用处。