2010-06-17 53 views
4

我的任務是將網站構建器添加到我們的應用程序套件中。我們的大部分客戶都是非技術性的小企業主(實體店,母店和流行店)。我被告知我應該查看Blogger Template Editor並試圖查看我是否可以製作出功能齊全且易於使用的內容。我們的想法是,我們的客戶應該能夠在不瞭解網站開發的情況下將他們的業務帶到網上。創建'網站建設者' - 我將如何構建它?

我主要使用c#和silverlight進行日常工作。所以,使用.net可能是最適合我的方式。 ASP.NET MVC和SPARK看起來非常有吸引力,但我不太確定我將如何完成以下任務

1-如何構建允許設計人員使用特定格式創建模板的模板系統,以及與我的應用程序兼容。這裏有沒有通用框架?

2-我將如何堅持客戶對他/她的網站所做的更改(例如客戶端更改背景顏色並在頁面上添加成分列表)。

編輯:是的,我知道這是一個很大的任務,我有可能在編寫一個全面的CMS,但我們的客戶需要非常有限和基本的功能開始,我想這將是一個迭代過程,也許如果產品證明是成功的,那麼更多的開發者會在晚些時候出現。儘管如此,我會讓這些擔憂爲我們的經理所知。

最初我打算給他們幾個模板佈局,並允許他們自定義各個部分的內容以及CSS和CSS的顏色和圖像。 HAMLSass看起來像它們可能是有用的,我可以堅持所有用戶可定製的參數在數據庫中。

我在想這條線嗎?

回答

6

這取決於您的要求。

一個簡單的解決方案就是有幾個帶有佔位符的基模板,以後可以用內容/其他模板填充。

I.e.模板可能是這樣的:

<html> 
    <head><title>foo</title></head> 
    <body> 
    <div id="menu">{auto_generated_menu}</div> 
    <h1>{page_header}</h1> 
    <div id="content"> 
     {page_content} 
    </div> 
    </body> 
</html> 

然後你爲用戶提供一個簡單的方法來定義頁眉和page_contents,即,第一可能只是一個文本框,內容是通過使用類似TinyMCE的填補。 如有必要,客戶可以在內容中使用其他佔位符,但這可能不是必需的。

之後,您只需添加一個自動生成的菜單,創建用戶輸入的內容替換佔位符的邏輯(沿template.Content = template.Content.Replace("{page_content}", customer.Pages['foo'].GetTemplateContent("page_content"));行),也許添加CSS樣式表,顏色和字體設置由顧客。

最複雜的部分是後端和用戶認證。

該解決方案實施起來很簡單,並且根本沒有真正的靈活性,但它允許客戶快速編寫幾個文本並添加一些精美的圖像,而不必關心其他任何事情。

要保留顏色設置,請將它們寫入數據庫,並在每次更改時創建一個新的CSS樣式表。對於其他內容,只需使用帶有「key」和「value」列的數據庫表「content」,並且您可能希望在每次更改時生成靜態HTML頁面。

4

如果你想使用.NET,我建議看看Umbraco,它是一個非常流行的開源CMS,它有一個非常好的社區。目前它是用Webforms編寫的,但下一個版本(5)正在ASP.NET MVC中重做。

它也可以在微軟的Web App Gallery上找到,所以安裝起來很輕鬆。

4

您已經有效地完成了編寫完整內容管理系統的任務。這是一項艱鉅的任務,可能需要一位獨立的開發人員從6至24個月的任何時間根據經驗(基於市場上其他CMS的開發時間)進行構建。例如,Umbraco(開源ASP.NET CMS)的開發人員正在忙於將他們的CMS移植到ASP.NET MVC上,工作從今年年初開始,預計不會在明年年中之前建成,他們是業內最有才華的開發者之一。

我並不懷疑自己的才能,但除非您的老闆給了您一個非常大的時間範圍才能工作,或者您計劃將網站構建器設置爲極端基本的最小功能,可能會構建完整的網站構建器或CMS越來越嚼不爛。

正如其他海報推薦的,如果您是.NET開發人員,您應該嘗試在市場上使用現有的CMS,例如Umbraco

如果你堅持建立自己的,它將需要一些嚴肅的計劃。看看DDD(域驅動設計)等軟件架構設計模式,依賴注入,存儲庫模式,持久性無知,服務層等SOLID原則等等.MVC肯定是正確的選擇。還請查看Martins Fowler的書Patterns of Enterprise Application Architecture或Dino Esposito的或Eric Evans Domain-Driven Design: Tackling Complexity in the Heart of Software