2010-06-17 49 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