2010-11-09 56 views
2

在过去的两三个月里,iv'e一直在潜入和潜入C#和WinForms,但最近我将开始一个项目,这将有助于更多地了解现实生活中的问题在.NET应用架构,实现这个目标的最好方法

编程时,我主要是基于Web的程序员使用PHP,MySQL,UNIX等工作,当我创建一个网站,我想有一个具体的框架,处理的东西,如:

  • 错误处理
  • 输入/输出
  • 图书馆
  • 应用程序结构
  • 数据库/模型抽象
  • 资源监控

有几个走在列表中,但不适尽量简短。

所以,当即时通讯在C#中我意识到,当应用程序加载,我们直接运行运行的主要形式,这对我来说,让你强行内的主窗体/

为Windows /形式逻辑个人而言,我可能是错的,这是应该怎么做的,但我真的不这么认为,我希望创建一组控制“应用程序进程”的类,这个基本系统将控制表单的实例化和处理,线程等

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

然后将处理信息,并根据不同的实体来实现应用负载,我们将运行的形式传递信息,以这种形式。

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

如果该表单需要解除线程,那么它将作为系统基础,如果它可以将它放置在一个新的线程中,并监视它,直到它完成。

什么是建立一个像这样工作的系统的一个很好的例子,你们有什么建议我应该如何去做。另外,在C#语言中构建MVC体系结构的任何非常好的示例,书籍和文章也将是一个优点。

请赐教我这个问题。

回答

3

罗伯特,

如果你建立使用新的Windows应用程序的Visual Studio,你一定会得到的主要形式如图所示,第一个画面,但它并不需要是这样

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()); 
    } 
} 

知道了这一点,你可以改变它,做几乎任何你想改变形式通过您的应用程序的处理方式。

+0

接过话从我嘴里了:)'Program'类或子类或钩住'Application'类的绝对是你想要去的方式。 – 2010-11-09 11:29:37

+0

所以我可以删除“New Project”的所有内容,然后创建一个在该类中添加'[STAThread]'的基类,并且它不会有任何问题? – RobertPitt 2010-11-09 11:30:06

+0

你是正确的,先生:) – tucaz 2010-11-09 11:36:25

0

有不同的架构,以满足这类做法的:

分层架构:让你在层中的应用。在单独的层中实现用户界面(称为演示文稿)(读取程序集/可执行文件)。所以应用程序现在远离了winform。将业务逻辑(应用程序过程如何工作)保存在单独的层中,并将数据访问保存在单独的层中。

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

0

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

相关问题