选择CMS vs Portal与MVC +组件?

Mor*_*ner 15 c# asp.net-mvc components portal content-management-system

我需要一些帮助来确定为我的最新项目使用CMS或门户解决方案是否是一个好主意,这是(当前)一个必须为多个客户服务的ASP.NET MVC应用程序(作为公司或其他实体)来自单个安装(即SaaS解决方案)的用户列表.

除了核心功能,包括文档管理/发布,我还需要提供基本的社交功能(如博客,论坛,图库,民意调查等).但是,内容仅对其所属的客户可见是必要的,我对一堆CMS和门户解决方案的评估几乎没有说明它们是否支持这一点.他们非常关注单用户安装,有关如何与现有MVC解决方案集成的文档相当薄.

基本上我正在寻找一些指导,以帮助我放弃死端选项(产品不符合要求,施加太多限制,不成熟等),并在项目过于先进之前找到未开发的选项.

我对架构的要求包括:

  • 多站点支持(使用单个域进行托管)
    • 客户之间内容的水密分离
  • 跨组件/功能的完全集成
    • SSO(单点登录)
    • 单站点体验(共享页眉/页脚,统一导航,统一标签等)
  • 易于开发和部署
    • 自定义逻辑将使用C#和ASP.NET MVC编写,任何产品都应支持此功能
  • 我想保持控制
    • 解决方案应该提供功能,但在其他方面保持不受影响(例如,不要强迫我使用愚蠢的习语,比如坚持主键的GUID)
  • 积极发展社区
    • 没有单人的努力
    • 最近的源控制活动
    • 合理的文档和成熟度
    • 不必是开源的

我花了相当多的时间来评估产品和组件,我将在此简要分享一下:

  • 一把umbraco
    • 不支持ASP.NET MVC(但是,有人必须以其他方式发表评论)
    • 伟大的社区支持,积极发展
    • 似乎有很多工作要开始
  • Kooboo
    • 没有源活动(近两个月没有更新)
    • GPL许可?(需要允许闭源应用程序的东西)
  • N2CMS
    • 部分ASP.NET MVC支持
    • 每个客户都必须有一个单独的域
    • 有限的来源活动(不死但不活跃)
  • 果园
    • 微软赞助(这意味着它可能过度架构,代码膨胀且速度慢,尽管它确实有一些众所周知且受人尊敬的贡献者/潜在客户)
    • 使用ASP.NET MVC构建
    • 看起来很有前途(但在这个阶段不太可能稳定)
  • AtomSite
    • 感觉相当成熟并且有很好的文档,尽管有漏洞
    • 使用ASP.NET MVC构建
    • 有限的源活动,单个开发人员
  • MojoPortal
    • 看起来很适合门户网站,但可能需要将定制逻辑构建为产品周围的模块(我希望尽可能避免这种锁定)
  • DotNetNuke(DNN),CommunityServerMicrosoft Office SharePoint Server(MOSS)
    • 绝对不是我的一杯茶;)
  • BlogEngine.NET
    • 成熟且功能齐全
    • 没有ASP.NET MVC支持
    • 集成可能但不是没有很多Web.config voodoo
    • 不确定它是否支持客户分离

鉴于上面的列表,我倾向于AtomSite,N2CMS,Orchard或BlogEngine.NET.如果我选择后者,我将使用jitbit AspNetForum,这非常适合我的需求.

我可能更喜欢使用自定义ASP.NET MVC解决方案和单个组件,因为这可能会给我最大程度的控制,但另一方面,它会使网站主题和集成更加困难.您尝试了哪些组合,什么运作良好,哪些没有?我遗漏了什么重要的评价?还有其他相关建议吗?

如果答案不仅仅是对您最喜欢的产品或做事方式的认可,我会很感激,但有些东西可以帮助我根据上述要求选择或消除候选解决方案.

Are*_*ren 5

根据您指定的要求水平,我个人将不得不倾向于采用自定义方法.你可以聘请某人为你做网站的设计(视图)部分,或者你可以从网站设计师那里购买一个主题,并根据自己的喜好自定义.(有时只是在某个地方开始就足以进行中级定制).

  • 多站点支持(使用单个域进行托管)

    • 您可能希望控制您的托管环境,无论是VPS(虚拟专用服务器)还是专用框.这仍然可以在共享主机上进行,但不会被推荐.
  • 客户之间内容的水密分离

    • 您可能必须为每个客户生成一个独特的应用程序池,并为自己的服务用户提供100%的分离.
  • 跨组件/功能/ SSO(单点登录)/单站点体验(共享页眉/页脚,统一导航,统一标签等)的完全集成

    • 这将是棘手的部分.此示例在开发过程中可能对您有一些有用的见解,但您将需要统一的登录服务并让所有站点使用它或链接到它.
  • 易于开发和部署
    • 这是它变得棘手的地方.我认为发展的轻松来自你的背景.在这方面,MVC绝对是正确的选择,了解很多关于在MVC中构建网站的正确方法将有助于这个过程.通过阅读社区博客了解最新信息并收听HanselminutesDotNetRocks等播客,将有助于您与最新,最好的工具/技术保持联系,使您的网站快速有效地开始运作.
    • 部署是一个棘手的问题.MSDeploy仍然不存在.但是,如果可以,您可能想要提供Dev - > Staging - > Release发布结构,以便您可以在暂存(模拟生产)环境中测试代码.
  • 定制逻辑将使用C#和MVC编写,任何产品都应该支持我希望保持控制
    • 如果您在ASP.NET-MVC中开发该站点,您将能够构建不仅可以在您的站点中使用的公共库,还可以在您的自定义工具中使用.这将大大减少您的代码重复,并有助于确保实现操作统一.(一切都以同样的方式工作).
  • 解决方案应该提供功能,但不要妨碍(例如,不要强迫我使用愚蠢的习语,比如坚持主键的GUID)
    • 虽然你可以在这种情况下控制,但我强烈推荐GUID主键.这允许合并复制,它可以帮助您在出现问题时轻松恢复备份或使用故障转移数据库服务器.
  • 积极发展社区
    • .NET有一个很棒的社区,(包括这个),如果你礼貌地要求它,你应该得到很多支持.
  • 没有单人的努力
    • 不确定你在这里的意思,除非你雇佣帮助,否则你会成为单身男人,但即使是2个人也可以花一点时间做很棒的事情.即使是一个人也可以做很棒的事情,但你在这里运行的框架是由一个商业资助的庞大团队支持的.
  • 最近的源控制活动
    • 并不真正适用于.NET,但您可能使用的许多库(NHibernate,MVC Contrib,AutoFac等等)都会有很多活动并且不断改进.
  • 合理的文档和成熟度
    • .NET和为.NET开发的大多数生产级库(上面提到的)实际上都有相当好的文档.仅.NET就有多个付费和非付费信息来源,而且大多数库(社区都很好地支持并且在StackOverflow上已知)
  • 不必是开源的
    • 寻找LGPL的支持库(即你可以在商业软件中使用它,但如果你修改了库,你必须释放新的库代码,如果你发布二进制文件.)你在这里很安全,你的网站不是如果您使用这些库来支持您的开发,则必须是开源的.

嗯,这是我的2cents.您描述的项目不是一件小事,即使您使用预先构建的解决方案(主要是以您想要的方式进行黑客攻击),您也会看到相当多的工作.我想你最大的困难就是预先完成解决方案的SSO和安全性.不是说这是不可能的,只是棘手而且最终的结果可能并不完全是你想要的.

另外,查看OpenID,它可能是将所有站点链接在一起的最佳解决方案,大多数预构建的系统可以轻松移植到使用它.

  • 我想也会澄清一下,因为这个问题可能并不清楚.我认为自己在MVC开发和Web开发方面相当熟练,所以如果我选择编写所有代码,我相信我可以解决所有问题并实现我的设计目标.但是,作为一个懒惰的混蛋谁只是想快速致富;)我希望不必重新发明轮子(毕竟,大多数解决方案将是常见的功能),所以主要是寻求产品的建议/可以帮助我更快地实现目标的组件(或指导为什么可能不是这种情况). (2认同)