2010-11-09 52 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。

相關問題