应用程序架构,实现这一目标的最佳方法

时间:2010-11-09 11:19:55

标签: c# winforms model-view-controller architecture

在过去的两到三个月里,我一直在啜饮和潜入C#和WinForms,但最近我将开始一个项目,有助于在.NET编程时更多地了解现实生活中的问题

我主要是一个使用PHP,MySql,Unix等的基于Web的程序员,当我创建一个网站时,我希望有一个具体的框架来处理诸如以下的事情:

  • 错误处理
  • 输入/输出
  • 申请结构
  • 数据库/模型抽象
  • 资源监控

在该列表中还有一些内容,但是要保持简短。

所以当我在C#中时,我意识到当应用程序加载时我们直接运行主窗体,对我来说,这会让你在主窗体中强制执行windows /窗体的逻辑/

我个人可能错了,这就是应该怎么做的,但我真的不这么认为,我希望制作一套控制“应用程序进程”的类,这个基础系统会控制形式的实例化和处理,线程等。

因此当Application.run()启动我的应用程序时,我希望它启动一个名为System的对象,然后此对象将解析Settings FilesRegistry keysMeta Information (CPU,Ram etc)DebuggerSwitch Detection等。

然后它将处理信息,并根据影响应用程序负载的不同实体,我们将运行一个表单将信息传递给该表单。

在该表单中,如果A用户单击File > Options然后它将要求系统加载选项表单,系统类将加载选项表单,传递所需信息。

如果该表单需要解压缩,它将作为系统库,如果它可以将它放在一个新线程中,并监视它直到它完成。

建立一个像这样工作的系统会是一个很好的例子,你们对我应该怎么做也有任何建议。

此外,任何非常好的示例,书籍,在C#语言中构建MVC架构的文章也将是一个优势。

请赐教我这个问题。

3 个答案:

答案 0 :(得分:3)

罗伯特,

如果您使用Visual Studio构建新的Windows应用程序,您肯定会将主窗体作为显示的第一个屏幕,但它不需要像这样。

Visual Studio为您完成此操作。它使用Main方法创建一个Program类(Program.cs)(这是您应用程序的入口点,就像任何其他语言一样)并为您调用主窗体。

寻找Program.cs,你会发现:

static class Program
{
    /// 
    /// The main entry point for the application.
    /// 
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

了解这一点,你可以改变它,并做任何你想改变你的应用程序处理表单的方式。

答案 1 :(得分:0)

有不同的架构来满足这种方法:

分层架构:让您的应用程序分层。在单独的层中实现用户界面(称为表示)(读取汇编/可执行文件)。因此,申请流程现在远离winform。保持业务逻辑(应用程序进程的工作方式)在单独的层中,并将数据访问保存在单独的层中。

您可以使用MVC或自己做所有事情。并通过将它们保存在DLL中并在表示层中实例化它们来保持层在同一个进程(进程内)中(就像你现在想的那样。所以你可以在业务逻辑层实现你的类。思维方式是面向服务的体系结构。在这种情况下,您可以将其余的层作为服务运行并使用表示层中的服务。在这种情况下,您可以保留服务器的单个副本和多个前端(表示层)应用程序使用相同的。

答案 2 :(得分:0)

如果要构建更大的应用程序,可以构建一个框架来处理模块,组件,资源和表单的启动,然后在最后显示表单。我自己用MEF做这个,所以当我的应用程序启动时,我让MEF组成所有组件,从MEF检索我的主表单,然后用Application.Run启动它。或者我有时会重新启动我的主窗体控制器(MVC)并告诉控制器处理Application.Run。

相关问题