Winforms MVP/MVC与winform应用程序的传统n层方法

Winforms MVP/MVC与winform应用程序的传统n层方法,winforms,model-view-controller,n-tier-architecture,Winforms,Model View Controller,N Tier Architecture,我们有一大套应用程序,大多数是C#1.1,但至少有10个主要应用程序是VB6。我们正在进行一个将VB6应用程序移植到.NET3.5的项目 所有c#1.1应用程序都使用传统的n层方法编写。UI层实际上没有任何架构/分离。大多数代码只是响应事件并从那里开始。我想说的是,从可维护性的角度来看,它相当不错,而且很容易遵循代码并在新应用程序上跟上速度 当我们移植VB6应用程序时,最初的想法是我们应该坚持现有的模式(例如n层) 我想知道,打破这种模式,使用MVP/MVC模式开发VB6应用程序是否值得?MVC

我们有一大套应用程序,大多数是C#1.1,但至少有10个主要应用程序是VB6。我们正在进行一个将VB6应用程序移植到.NET3.5的项目

所有c#1.1应用程序都使用传统的n层方法编写。UI层实际上没有任何架构/分离。大多数代码只是响应事件并从那里开始。我想说的是,从可维护性的角度来看,它相当不错,而且很容易遵循代码并在新应用程序上跟上速度

当我们移植VB6应用程序时,最初的想法是我们应该坚持现有的模式(例如n层)

我想知道,打破这种模式,使用MVP/MVC模式开发VB6应用程序是否值得?MVC/MVP winform应用程序真的更容易维护吗?我曾在一个基于MVC的项目上工作过,但我并不觉得它更容易维护,但这只是一个项目


有哪些经验和建议?

它移动了一层薄薄的代码,您可能仍然在UI上。我说瘦,因为根据您的描述,您可能在其他地方有很多代码。 这使您能够对这一薄层代码进行单元测试


更新1:我不建议在进行升级时重新设计,额外的工作最好是花费在获得自动化测试(单元/集成/系统)上,因为您无论如何都必须测试升级工作。一旦测试就绪,就可以对应用程序进行渐进式更改,并通过测试支持更改

它移动了一层薄薄的代码,您可能仍然可以在UI上使用它。我说瘦,因为根据您的描述,您可能在其他地方有很多代码。 这使您能够对这一薄层代码进行单元测试


更新1:我不建议在进行升级时重新设计,额外的工作最好是花费在获得自动化测试(单元/集成/系统)上,因为您无论如何都必须测试升级工作。一旦测试就绪,就可以对应用程序进行渐进式更改,并通过测试支持更改

老兄,如果有什么东西适合你,你们会觉得很舒服,你的团队也会达到规格。你为什么需要改变

MVC/MVP听起来不错。。。那为什么我自己还在n层上工作


我认为在你投入资源到这个新的编程方式的实际开发之前。。。你应该考虑它是否对你的团队起作用。

< Dude >,如果有什么对你有用的话,你会对它感到满意,并且你的团队也在考虑它。你为什么需要改变

MVC/MVP听起来不错。。。那为什么我自己还在n层上工作


我认为在你投入资源到这个新的编程方式的实际开发之前。。。你应该考虑它是否对你的团队起作用。

< P>如果你正在移植VB6应用程序而不是完全重写,我建议把重点放在你的PRI 1目标上,以便尽快进入.NET世界。这样做会给你的组织带来很多好处

一旦你到了那里,你就可以评估投资于重新构建这些应用程序是否对你有利


如果你正在进行完全重写,我会说,大胆尝试,使用MVP/MVVM模式的WPF应用程序。WPF会给你更好的视觉效果。MVP/MVVM模式将为您提供所有层的单元可测试性,包括可视层。我还假设这些应用程序是相关的,所以很有可能您能够实际重用您的模型和视图。(虽然,我可能错了)

如果你是移植VB6应用程序而不是完全重写,我建议你把重点放在你的Pri 1目标上——尽快进入.Net世界。这样做会给你的组织带来很多好处

一旦你到了那里,你就可以评估投资于重新构建这些应用程序是否对你有利


如果你正在进行完全重写,我会说,大胆尝试,使用MVP/MVVM模式的WPF应用程序。WPF会给你更好的视觉效果。MVP/MVVM模式将为您提供所有层的单元可测试性,包括可视层。我还假设这些应用程序是相关的,所以很有可能您能够实际重用您的模型和视图。(虽然,我在这里可能错了)

特别是MVC并不排除n层架构

我们还有ASP.NET1.1业务应用程序,我发现维护它真是一场噩梦。当事件处理程序做任何他们喜欢的事情时,可能会调整其他控件,可能会调用业务逻辑中的某些东西,可能会直接与数据库通信,这只是软件正常工作的偶然机会

如果正确使用MVC,您可以看到数据从数据库流向UI和向后的方式。如果出现意外行为,则更容易跟踪错误

至少,我自己的小项目也是如此


我将再次强调这一点:无论您使用什么模式,都要坚持清晰的n层体系结构。2层或3层,只是不要把所有东西都弄成一个相互连接的大球。

MVC尤其不排除n层架构

我们还有ASP.NET1.1业务应用程序,我发现维护它真是一场噩梦。当事件处理程序做任何他们喜欢的事情时,可能会调整其他控件,可能会调用业务逻辑中的某些东西,可能会直接与数据库通信,这只是软件正常工作的偶然机会

如果正确使用MVC,您可以看到数据从数据库流向UI和向后的方式。如果出现意外行为,则更容易跟踪错误

至少,我自己的小项目也是如此

我将再次强调这一点:无论您使用什么模式,都要坚持清晰的n层体系结构。2层或3层,只是不要把每件事都弄成一个相互关联的大球。

“改变——我们所从事的活动是为了暗示进步。”-迪尔伯特

Ser