如何实现UI独立应用程序?

使C#源代码UI的大部分内容独立的基本技术是什么?

例如,我想为Winforms桌面应用程序编写我的源代码,我将能够插入到asp.net Web应用程序或WPF应用程序中进行非常小的更改。 即,无论UI技术如何,我都可以使用相同的源代码,以使其面向未来。

我知道CSLA框架可以做到这一点。

但是,如果我不使用CSLA(学习一个新的框架需要一些时间,而且目前我没有那么多时间花在它上面),应该注意什么点来实现我的这种能力。 C#代码?

能给我举个例子? 我已经在我的应用程序中使用了Business Objects和分层技术。 但即便如此,我已经看到它需要大量编码才能将我的代码插入到新的UI技术中。

请不要向我提供任何肤浅的答案。

进行UI独立编码的最佳方法是从表示中分离逻辑。 看看MVC模式。

对于您的设计而言,这更多是一个学科问题,而不是框架问题。 框架不能强迫您正确设计。 如果您正确地设计应用程序,它可以使您更容易,但总是有办法执行它。

要使您的代码与UI无关,请将不依赖于UI的逻辑放入单独的图层或程序集中。 将逻辑与演示分开。 这就是像MVC,MVP和MVVM这样的所有模式。 这是一个基本的软件结构,应该根植于你; 如果不是,那就这样吧。

将逻辑与演示分开。 学习它。 住它。 爱它。

编辑:

能给我举个例子? 我已经在我的应用程序中使用了BO和分层技术。 但即便如此,我已经看到它需要大量编码才能将我的代码插入到新的UI技术中。

请不要向我提供任何肤浅的答案。

我看到你已经编辑过。 请允许我详细说明:

一些依赖于UI的逻辑无法摆脱。 UI不是shell; 他们仍然有逻辑和function。 但该function应仅适用于用户交互。 显示数据。 收集资料。 如果您的偏好位于该方向,则可以使用精美的图形技巧和动画。

其余的进入业务层, 这些东西可以重用。 如果您正确分层,则可以避免每次为新的UI框架编写程序时都必须重写核心function。

但你仍然需要重写UI的东西。

如果您正在构建多层应用程序,那么您的业务逻辑,数据访问等应该已经分成完全独立于UI的类。 将这些库重新用于不同的目标平台 – 桌面与Web等 – 应该是从新应用程序引用现有库的简单问题。

这是软件开发的基本规则。 尽管像MVC等模式和框架更严格地强制执行,但最终由您来正确设计应用程序。 这类任务不需要学习新技术 – 只需要常识和一点点经验。

查看Martin Fowler关于此主题的优秀文章。

GUI架构,包括MVC,MVP,MVPC

在MSDN杂志上查看MVVM(Model-View-ViewModel)的解释。 MVVM广泛用于WPF应用程序开发。