在过去的两到三个月里,我一直在啜饮和潜入C#和WinForms,但最近我将开始一个项目,有助于在.NET编程时更多地了解现实生活中的问题
我主要是一个使用PHP,MySql,Unix等的基于Web的程序员,当我创建一个网站时,我希望有一个具体的框架来处理诸如以下的事情:
在该列表中还有一些内容,但是要保持简短。
所以当我在C#中时,我意识到当应用程序加载时我们直接运行主窗体,对我来说,这会让你在主窗体中强制执行windows /窗体的逻辑/
我个人可能错了,这就是应该怎么做的,但我真的不这么认为,我希望制作一套控制“应用程序进程”的类,这个基础系统会控制形式的实例化和处理,线程等。
因此当Application.run()
启动我的应用程序时,我希望它启动一个名为System
的对象,然后此对象将解析Settings Files
,Registry keys
,Meta Information (CPU,Ram etc)
,Debugger
,Switch Detection
等。
然后它将处理信息,并根据影响应用程序负载的不同实体,我们将运行一个表单将信息传递给该表单。
在该表单中,如果A用户单击File > Options
然后它将要求系统加载选项表单,系统类将加载选项表单,传递所需信息。
如果该表单需要解压缩,它将作为系统库,如果它可以将它放在一个新线程中,并监视它直到它完成。
建立一个像这样工作的系统会是一个很好的例子,你们对我应该怎么做也有任何建议。
此外,任何非常好的示例,书籍,在C#语言中构建MVC架构的文章也将是一个优势。
请赐教我这个问题。
答案 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。