2010-11-09 28 views
1

我想要一个架构来使我的UI与数据库交互,而无需为UI编写多余的代码......即,后面的代码...请告诉我一个在Windows窗体项目中使用的体系结构

+1

从提到“后面的代码”,我们应该假设这是webforms?请注意,这是一个*非常广泛的问题... – 2010-11-09 08:47:38

+0

你在找什么?模型 - 视图 - 控制器? MVP?被动观点? – 2010-11-09 08:53:30

+0

不只是一个简单的窗口窗体... – Genius 2010-11-09 08:56:19

回答

3

啊哥们,使用架构

BO------UI 
|  | 
--------BL 
|  | 
--------DA 
0

哥们,你可以使用premitive架构:

BusinessObjectLayer BusinessLogicLayer DataAccessLayer UILayer

1

Data Binding的东西,你应该看看。这会引导你学习更多,但你一定会了解你需要的员工。

2

一个起点是定义一些简单的经验法则。一个很好的经验法则是在Form类中尽可能少的代码。 Form类中的所有代码都应该是基本的UI映射。

我个人喜欢用DAO pattern来组织我的数据库访问逻辑。这种模式巧妙地封装了访问存储数据的代码,因此可以轻松切换和更改。根据数据库的复杂性,我通常每个表有1个DAO,但对于简单的数据库,每个数据库甚至可能只有1个DAO。

MVC是一种非常流行的方式来分离演示文稿和其他逻辑,但也可能是一个简单的项目矫枉过正。 Use cases也是封装逻辑并将其从表单中分离出来的好方法。

下面是一个基本框架的例子,请看下面(注意:不完整!请阅读完整的DAO文章以正确实现它)。这段代码的目的是要显示Form类中没有数据库逻辑,当点击按钮(或其他)将UI映射到一个动作时,它是一个简单的单线程。如果您决定从数据库存储交换到文件存储,那么编写FileMyDAO : IMyDAO类并不难,然后让工厂返回。请注意,如果你这样做,UI代码都不会改变!

public interface IMyDAO 
{ 
    void InsertData(int data); 
} 

public class SqlMyDAO : IMyDAO 
{ 
    public void InsertData(int data) { throw new NotImplementedException(); } 
} 

public class DAOFactory 
{ 
    public static IMyDAO GetMyDAO() { return new SqlMyDAO(); } 
} 

public class MyForm : Form 
{ 
    private void Button_Click(object sender, EventArgs e) 
    { 
    DAOFactory.GetMyDAO().InsertData(123); 
    } 
} 
0

目前已经开发的无架构框架那里等待被使用。检查..

Nido framework - 更加灵活,但仅限于您的后端架构

Rocket framework