创建“网站建设者” – 我将如何构建它?

我的任务是将网站构建器添加到我们的应用程序套件中。 我们的大多数客户都是非技术性的小企业主(实体店,妈妈和流行商店)。 我被告知我应该看看Blogger模板编辑器并试着看看我是否可以制作function齐全且易于使用的东西。 我们的想法是,我们的客户应该能够在不了解Web开发的情况下将他们的业务带到网上。

我主要是每天使用c#和silverlight。 因此,使用.net对我来说可能是最好的选择。 ASP.NET MVC和SPARK看起来非常有吸引力,但我不太清楚我将如何完成以下事情

1-如何构建模板系统,允许设计人员创建使用特定格式并与我的应用程序兼容的模板。 那有没有通用的框架?

2-我如何坚持客户对他/她的网站所做的更改(例如客户更改背景颜色并在页面上添加成分列表)。

编辑:是的我知道这是一项重大任务,我可能正在考虑编写一个完整的CMS,但是我们的客户需要非常有限的基本function才能开始,我想这将是一个迭代过程,可能会有更多开发人员加入如果产品certificate是成功的话。 我会告诉我们的经理这些问题。

最初我计划给他们一些模板化的布局,并允许他们使用CSS自定义各个部分以及颜色和图像。 HAML和Sass看起来很有用,我可以在数据库中保留所有用户可自定义的参数。

我是想沿着正确的方向思考还是完全脱离了这个标志?

这很大程度上取决于您的要求。

一个简单的解决方案是使用几个带有占位符的基本模板,以后可以填充内容/其他模板。

即模板可能如下所示:

 foo   

{page_header}

{page_content}

然后,您为用户提供了一种定义页眉和page_contents的简单方法,即第一个可能只是一个文本框,内容通过使用像TinyMCE这样的东西来填充。 如有必要,客户可以在内容中使用其他占位符,但这可能不是必需的。

之后,您只需添加一个自动生成的菜单,创建用用户输入的内容替换占位符的逻辑(类似于template.Content = template.Content.Replace("{page_content}", customer.Pages['foo'].GetTemplateContent("page_content")); )并且可能会添加一个CSS样式表,其中包含客户提供的颜色和字体设置。

最复杂的部分是后端和用户身份validation。

该解决方案易于实现,并且根本没有真正的灵活性,但它允许客户快速编写一些文本并添加一些奇特的图像,而无需关心其他任何事情。

要保留颜色设置,请将它们写入数据库,并在每次更改时创建新的样式表。 对于其他内容,只需使用带有“key”和“value”列的Database表“content”,您可能希望在每次更改时生成静态HTML页面。

如果你想使用.NET,我建议你看一下Umbraco,这是一个非常受欢迎的开源CMS,背后有一个非常好的社区。 它目前是用Webforms编写的,但下一个版本(5)正在ASP.NET MVC中重做。

它也可以在微软的Web App Gallery上使用,因此安装起来轻而易举。

您已经有效地完成了编写完整内容管理系统的任务。 这是一项庞大的任务,根据经验(这基于市场上其他CMS的开发时间),可能需要一个单独的开发人员在6到24个月内构建任何东西。 例如,Umbraco(一个开源ASP.NET CMS)的开发人员正忙于将他们的CMS移植到ASP.NET MVC,工作在今年年初开始,并且预计将在明年年中之前建成,并且他们这是该行业中一些最有才华的开发者。

我并不怀疑你的才能,但除非你的老板给你一个非常大的工作时间,或者你计划你的网站建设者是极端基本的,具有最少的function,也许建立一个完整的网站建设者或CMS正在咬超过你可以咀嚼。

正如其他海报所推荐的那样,如果您是.NET开发人员,您应该尝试在市场上使用现有的CMS,例如Umbraco 。

如果你坚持建立自己的,那就需要一些认真的计划。 看看软件架构设计模式,如DDD(域驱动设计),SOLID原则,如dependency injection,存储库模式,持久性无知,服务层等等.MVC绝对是正确的方法。 另请参阅Martins Fowler的书籍企业应用程序架构模式或Dino Esposito的Microsoft .NET:构建企业应用程序或Eric Evans 域驱动设计:解决软件核心的复杂性