簡體   English   中英

Windows窗體應用程序“設計”

[英]Windows Forms application “design”

我正在計划編寫將在C#、. NET 3.5中編寫的“中等大小” WinForms應用程序。 我想到了一些“通用設計問題”,希望能在這里解決。

  1. 一般的異常處理。 處理異常的最佳方法是什么? 在各處使用try / catch塊? 這個
  2. 本土化。 如果我想在我的應用程序中支持多種語言,應該使用什么? 我發現“衛星程序集”是一個非常……好,“笨重”的解決方案-我不需要資源文件“地獄”,也不想在VS UI中輸入翻譯。
  3. 在本地存儲數據。 以前,我在項目上使用過System.Data.SQLite ,但我發現自己想知道是否還應該考慮其他事項。
  4. 還有什么我要記住的嗎?

謝謝(?)

1)不要捕獲任何異常。 他們中的絕大多數都告訴您代碼中的錯誤,因此您希望立即了解它們。 如果在測試和部署過程中發現了您認為可以處理的錯誤情況(不多見),則可以隨時添加try / catch塊。 如果您打算處理異常,請確保在代碼中隨意添加try / finally塊,這樣即使存在阻止清除代碼運行的異常,也可以保留類的狀態。 嘗試使用不帶捕獲功能沒有明顯的成本。

2)附屬組件不笨重。 部署文件夾子目錄中的一個小DLL。 無需特殊代碼,一切都是自動的。 最重要的是,這是一個標准解決方案。 您可以將.resx文件發送到本地化服務,它們將使用標准工具(如Winres.exe)為您提供翻譯。 要求他們處理定制的東西將是昂貴的,並且可能會帶來麻煩。

3)替代方法是SQL Server CE(與SQLite相同的方法)和SQL Server Express。 后者給您帶來最大的收益,但必須安裝。 那不難。

4)這取決於您的目標受眾,但是如果外觀和購買決定完全影響購買決定,請雇用UI設計師。 他/他會抓到UI膨脹器的,使它看起來很漂亮。

#1-如果您關心應用程序的性能,請避免嘗試/捕獲。 使用一些分析器,例如RedGate的探查器(ANTS-可悲的是,它不是一個免費軟件),親自了解try / catch塊會占用大量CPU時間,尤其是在需要跳入“捕獲”時。 只是嘗試尋找其他方法,.net可以使用許多其他方法來確保不會發生異常,我知道使用try / catch會更容易,但是可以確定您的目標是什么。

#2-我猜您可以使用隨應用程序編譯的資源文件,因此如果您要的是文件,您將沒有任何單獨的文件?

#3-我真的必須回答一個:),就我個人而言,我認為沒有比使用XML更好/更舒適的本地存儲方式了,正如前面提到的,您可以使用LINQ to XML查詢此文件,這非常簡單。 它體積小,速度快,易於創建,維護,更重要的是您可以通過Internet將其發送到互聯網,而使用其他存儲數據的方式可能不會出現任何問題,例如-防火牆或任何ISD都不會成為問題,因為它基本上是文本文件。 我只是喜歡xml。

那有幫助嗎?

關於第一個問題-查看企業庫異常處理塊。 Microsoft在提供文檔和代碼來解決此問題方面做得很好。

關於其他問題(尤其是第4個問題),在不了解您的應用程序詳細信息的情況下很難推薦一些東西。

對於第一個問題,我的回答幾乎與aku相同,您可能希望大致了解一下Enterprise Library,因為這里有幾個有用的塊,例如Logging和Validation塊。

由於我還沒有從事任何需要支持任何類型的本地化的項目,因此對第二個步驟無濟於事。

如果沒有更好地了解要開發哪種數據/應用程序,就很難推薦本地數據存儲。 我有一些想法(沒有特定的順序)是:

  1. Xml文件是可移植的,可以使用LINQ-> XML進行操作。
  2. 您的物體穩定嗎? 您可以隨時序列化它們。...(盡管我不建議這樣做)
  3. 盡管現在是本地的,將來是否可以在服務器上與其他用戶更好地共享數據(部分或全部)。
  4. 您提到了SQLite,您是否考慮過SQL Server CE?
  5. 您的數據層需要支持哪種查詢性能?
  1. 如前所述,異常處理塊
  2. 沒有做太多本地化,但是VS 2008中的資源處理比VS 2003好得多
  3. SQL Server Compact EditionVistaDBCodegear Blackfish是您可能要研究的產品。 SQL CE是免費的,但其他的要花錢

為什么不下載Visual C#2005或2008 Express Edition? 設計容易

  1. 打開Visual C#
  2. 打開創建
  3. 打開創建項目對話框
  4. 設計它
  5. 編碼
  6. 發布它

下載2005->

下載2008->

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM