2009-11-30 65 views
3

什么是使我的C#源代码UI的大部分独立的基本技术?如何实现UI独立应用程序?

例如,我想写我的Winforms桌面应用程序的源代码,我将能够插入到asp.net web应用程序或一个WPF应用程序,只需稍作更改。即无论UI技术如何,我都能够使用相同的源代码,使其具有面向未来的特点。

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

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

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

请不要给我任何肤浅的答案。

回答

10

执行UI独立编码的最佳方法是将演示文稿中的逻辑分开。看看MVC pattern.

这更多的是你的设计的一个纪律问题,而不是一个框架问题。框架不能强迫你设计正确。如果您正确设计应用程序,它可以使事情变得更加简单,但始终存在执行方法。

+0

你能举个例子吗?我已经在我的应用程序中使用BO和分层技术。但即便如此,我也看到它需要大量编码才能将我的代码插入新的UI技术。 – anonymous 2009-11-30 21:00:32

+1

BO?你是什​​么意思? – monksy 2009-11-30 21:01:29

+0

@Steven - “商业对象” - 但这是一个纯黑暗的商业对象 – ChrisF 2009-11-30 21:03:24

4

要使您的代码UI独立,请将不依赖于UI的逻辑放入单独的图层或程序集中。与演示分开的逻辑。这就是MVC,MVP和MVVM之类的所有模式。它是软件结构的基础,它应该根植于你身上;如果不是这样,就这样做。

与演示文稿分开的逻辑。学习它。活着吧。爱它。

编辑:

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

请不要给我任何肤浅的答案。

我看到你已经编辑了。请允许我阐述:

有没有得到来自远一些逻辑是UI依赖。 UI不是一个shell;他们仍然有逻辑和功能。但是,该功能应该只针对用户交互。显示数据。收集资料。花哨的图形技巧和动画,如果你的喜好在这个方向。

其余的去业务层,东西可以重复使用。如果分层正确,则可以避免在每次为新的UI框架编写程序时重写核心功能。

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

+1

+1。作为一般规则,您不应该在业务层中导入'System.Web'或在UI层中声明'System.Data'。 – 2009-11-30 21:44:41

+1

@Chetan Sastry:我同意90%。对于'System.Web'我完全同意。然而'System.Data'包含'DataSet'和'DataTable',并且在UI层的数据绑定中都经常使用它们。我个人更喜欢并推荐POCO将数据传递给UI层,但事实是有相当多的人仍然使用这两个类。然而,对于命名空间中的其他所有内容,我同意。 – Randolpho 2009-12-01 02:23:24

+0

不过,很好的一般规则。 – Randolpho 2009-12-01 02:23:59

3

如果你正在构建一个多层应用程序,你的业务逻辑,数据访问等应该已经被分离成完全独立于你的UI的类。将这些库重新用于不同的目标平台 - 桌面与网络等 - 应该是从新应用程序中引用现有库的简单事情。

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

+0

我已经在我的应用程序中使用BO和分层技术。但即便如此,我也看到它需要大量编码才能将我的代码插入新的UI技术。 – anonymous 2009-11-30 21:02:09

+4

“新编码”应限制为特定于用户界面的行为。如果不是,你应该重新检查你的BO和DAL。 – 2009-11-30 21:03:24