簡體   English   中英

將XAML存儲在數據庫糟糕的設計中?

[英]Is storing XAML in a database bad design?

例如,假設我正在編寫一個允許用戶設計自己的名片的應用程序,允許他們將可視對象添加到他們當前正在設計的“模板”中,這些對象中的每一個都綁定到用​​戶的各個位置 - 數據。

例如。 他們拖動一個“地址框”,自動輸入用戶的地址,然后是“名稱文本”,它再次自動使用用戶定義的名稱。

這樣做的原因是客戶可以創建15個模板,所有模板都有自己的“外觀”,但是如果他們想要更改地址,他們只需要在一個地方修改它。

所有這些可視對象和模板本身都是用XAML編寫的。 我需要將這些用戶創建的模板存儲到數據庫中,以便他們可以檢索它們並在以后編輯它們。 我看到它的方式,我有兩個選擇:

  1. 將整個模板作為XAML存儲在名為“templates”的數據庫表中,同時還包含ID和OwnerID。

  2. 為抽象類型的“可視對象”創建一個表。 為每個具體類型的可視對象(即“AddressBox”)創建一個表,該表將從抽象類型繼承並具有每個用戶可配置屬性(字體大小,x / y坐標等)的字段。 最后,創建一個名為template的表,它包含一組可視對象。

應該注意的是,我一直在使用實體框架來設計它,如果我在那里拋出了一些EF關鍵字,那么道歉!

就個人而言,目前XAML存儲可能足以滿足我們的要求,但是我所看到的一切似乎都表明這是將數據存儲在數據庫中的一種非常糟糕的方式。 跳到這個35分鍾: http://youtu.be/uFLRc6y_O3s是不是這正是他建議不要做?

使用XAML存儲,我獲得了屬性值繼承,這可能會使事情稍微容易一些,盡管我不確定用戶是否會理解值如何“流”到鏈中。 顯然XAML也允許我存儲我喜歡的任何屬性值; 我不必先將它添加到數據庫中。

缺點是,如果全部是XAML,我認為管理數據可能要困難得多; 最壞的情況可能需要檢索每一塊XAML,解析所有這些,找到我需要更改/查看的值,重新解析,保存更新后的XAML“blob”。 這顯然會導致更大的讀/寫操作。

我想直接存儲XAML。 原因是您從存儲抽象布局中獲得的唯一好處是,您可以替換UI框架,並保護自己免受XAML中潛在的重大變化。 但是,由於微軟推出的一項重大變革會破壞所有控制權,因此您可能會利用一些升級可能性。

對我來說,選項2肯定是更好的版本,但我傾向於是一個“YAGNI”-guy。 所以在你需要的時候開發東西,如果你在WPF上就可以了。

馬丁,馬丁

我會投票選擇選項2,但是我想知道,如果你需要為每個具體對象提供單獨的表,而不是為每個“用戶可配置屬性”設置一個字段,你可以將所有用戶可配置屬性放在另一個鏈接的表中對於conrete-object表來說就像。

ConcreteObjectTable

ObjectID | ObjectName | ObjectTemplate


ConcreteObjectPropertyTable

PropertyID | ObjectID | PropertyName | 適當的價值


這樣,您只需要2-3個表來擔心配置選項

我也投票給選項2。 通過以這種方式存儲它,您可以非常靈活地使用數據。

缺點是,選項2會強制您編寫某種解析器,它將數據解析為XAML代碼。 但是當你想要2個相同數據的GUI(例如HTML)時,你唯一需要做的就是編寫一個HTML解析器,你就可以了。 您保存到數據庫的數據也會減少。

總結(對於選項2):

優點

  • 靈活的數據解釋
  • 減少數據存儲所需的數據庫空間

缺點

  • 您需要為每個GUI實現編寫解析器

暫無
暫無

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

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