选择 CMS、Portal、MVC+组件?

发布于 2024-09-07 17:50:18 字数 2913 浏览 2 评论 0 原文

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

除了核心功能(包括文档管理/发布)之外,我还需要提供基本的社交功能(例如博客、论坛、图库、投票等)。然而,内容必须只对其所属的客户可见,而我对大量 CMS 和门户解决方案的评估并没有说明它们是否支持这一点。他们非常关注单用户安装,并且有关如何与现有 MVC 解决方案集成的文档非常薄弱。

本质上,我正在寻找一些指导来帮助我放弃死胡同选项(产品不满足要求、施加太多限制、不成熟等),并在项目进展太快之前找到未探索的选项。

我对架构的要求包括:

  • 多站点支持(使用单个域进行托管)
    • 客户之间内容的严格隔离
  • 跨组件/功能的完全集成
    • SSO(单点登录)
    • 单站点体验(共享页眉/页脚、统一导航、统一标签等)
  • 易于开发和部署
    • 自定义逻辑将使用 C# 和 ASP.NET MVC 编写,任何产品都应支持此功能
  • 我想保持控制
    • 解决方案应提供功能,但应避免妨碍(例如,不要强迫我使用愚蠢的习惯用法,例如坚持使用 GUID 作为主键)
  • 活跃的开发社区
    • 没有一个人的努力
    • 最近的源代码控制活动
    • 合理的文档水平和成熟度
    • 不一定是开源的

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

  • Umbraco
    • 不支持 ASP.NET MVC(但有人肯定会发表评论)
    • 强大的社区支持,积极的开发
    • 似乎需要做很多工作才能开始
  • Kooboo
    • 没有来源活动(近两个月没有更新)
    • GPL 许可吗? (需要允许闭源应用程序的东西)
  • N2CMS
    • 部分 ASP.NET MVC 支持
    • 每个客户都必须有一个单独的域
    • 来源活动有限(没有死气沉沉,但也没有活力)
  • 果园
    • 由 Microsoft 赞助(这意味着它可能架构过度、代码臃肿且速度缓慢,尽管它确实有一些知名且受人尊敬的贡献者/领导者)
    • 使用 ASP.NET MVC 构建
    • 在功能方面看起来很有前途(但现阶段不太可能稳定)
  • AtomSite
    • 感觉相当成熟,并且有不错的文档,尽管有漏洞
    • 使用 ASP.NET MVC 构建
    • 来源活动有限,单一开发人员
  • MojoPortal
    • 对于门户网站来说看起来不错,但可能需要将自定义逻辑构建为围绕产品的模块(我希望尽可能避免这种锁定)
  • DotNetNuke (DNN),社区服务器Microsoft Office SharePoint Server (MOSS)
    • 绝对不是我的菜;)
  • BlogEngine.NET
    • 成熟且功能齐全
    • 不支持 ASP.NET MVC
    • 可以集成,但需要大量的 Web.config 巫术
    • 不确定是否支持客户分离

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

我可能更喜欢使用自定义 ASP.NET MVC 解决方案和单独的组件,因为这可能会给我最大程度的控制权,但另一方面,它会让网站主题设计和集成变得更加困难。您尝试过哪些组合,哪些有效,哪些无效?我在评估中遗漏了什么重要的东西吗?还有其他相关建议吗?

如果答案不仅仅是对您最喜欢的产品或做事方式的认可,而是能够帮助我根据上述要求选择或消除候选解决方案,我将不胜感激。

I need some help figuring out whether it'd be a good idea to use a CMS or portal solution for my latest project, which is (currently) an ASP.NET MVC application that must serve multiple customers (being a company or some other entity with a list of users) from a single installation (that is, a SaaS solution).

In addition to the core functionality, which includes document management/publishing, I also need to provide basic social features (such as blog, forum, gallery, polls, etc.). However, it is imperative that content is only visible for the customer to which it belongs, and my evaluation of a bunch of CMS and portal solutions has shed little light on whether they support this. They're pretty focused on single-user installations, and documentation on how to integrate with an existing MVC solution is pretty thin.

Essentially I'm looking for some guidance to help me discard dead-end options (the product does not meet requirements, imposes too many restrictions, is not mature, etc.) and find unexplored options before getting too far ahead with the project.

My requirements for the architecture include:

  • Multi-site support (using a single domain for hosting)
    • Watertight separation of content between customers
  • Full integration across components/features
    • SSO (single-sign-on)
    • Single-site experience (shared header/footer, unified navigation, unified tags, etc.)
  • Ease of development and deployment
    • Custom logic will be written using C# and ASP.NET MVC and any products should support this
  • I want to stay in control
    • Solution should offer features but otherwise stay out of the way (for example, not force stupid idioms on me, like insisting on GUIDs for primary keys)
  • Active development community
    • No single-man efforts
    • Recent source control activity
    • Reasonable levels of documentation and maturity
    • Does not have to be open source

I have spent a fair amount of time evaluating products and components, which I'll briefly share here:

  • Umbraco
    • Does not support ASP.NET MVC (yet, as someone is bound to otherwise comment)
    • Great community support, active development
    • Seems to be lots of work to get started
  • Kooboo
    • No source activity (no updates for almost two months)
    • GPL licensed? (need something that allows for closed source applications)
  • N2CMS
    • Partial ASP.NET MVC support
    • Every customer must have a separate domain
    • Limited source activity (not dead but not vibrant either)
  • Orchard
    • Microsoft-sponsored (which means it's likely to be over-architected, code-bloated and slow, although it does have some well known and respected contributors/leads)
    • Built using ASP.NET MVC
    • Looks promising feature-wise (but is unlikely to be stable at this stage)
  • AtomSite
    • Feels reasonably mature and has decent documentation, albeit with holes
    • Built using ASP.NET MVC
    • Limited source activity, single developer
  • MojoPortal
    • Looks good for a portal, but probably requires custom logic to be built as modules around the product (I was hoping to avoid that kind of lock-in if possible)
  • DotNetNuke (DNN), CommunityServer and Microsoft Office SharePoint Server (MOSS)
    • Definitely not my cup of tea ;)
  • BlogEngine.NET
    • Mature and feature-complete
    • No ASP.NET MVC support
    • Integration possible but not without lots of Web.config voodoo
    • Not sure if it supports customer separation

Given the list above I'm leaning towards AtomSite, N2CMS, Orchard or BlogEngine.NET. If I go with the latter I'll be using jitbit AspNetForum, which is a great match for my needs.

I'd probably prefer to use a custom ASP.NET MVC solution and individual components as this is likely to give me the greatest amount of control, but on the other hand, it'll make site theming and integration harder. What combinations have you tried, what worked well and what didn't? Anything important I'm leaving out of my evaluation? Any other relevant advice?

I'd appreciate it if the answers were not simply endorsements of your favorite product or way of doing things, but something that would help me choose or eliminate solution candidates given the requirements outlined above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

咽泪装欢 2024-09-14 17:50:18

根据您指定的要求级别,我个人将不得不倾向于自定义方法。您可以聘请某人为您设计(查看)网站部分,也可以从网站设计师那里从互联网上购买主题并根据您的喜好进行自定义。 (有时只需从某个地方开始就足以进行中级定制)。

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

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

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

    • 这将是棘手的部分。 此示例可能在开发过程中为您提供一些有用的见解,但您我们需要一个统一的登录服务,并让所有网站都使用它或链接到它。
  • 易于开发和部署
    • 这就是棘手的地方。我认为开发的轻松来自于你的背景。在这方面,MVC 绝对是正确的选择,了解在 MVC 中构建站点的正确方法将有助于此过程。通过阅读社区博客和收听播客(例如 HanselmillionsDotNetRocks 将帮助您与最新、最好的工具/技术保持联系,使您的网站快速有效地起步。
    • 部署是一个棘手的地方。 MSDeploy 还没有完全实现。但如果可以的话,您可能会想要提出一个开发 ->分期->发布发布结构,以便您可以在暂存(模拟生产)环境中测试代码。
  • 自定义逻辑将使用 C# 和 MVC 编写,任何产品都应支持此功能
    我想保持控制

    • 如果您使用 ASP.NET-MVC 开发网站,您将能够构建不仅可以在您的网站中使用而且还可以在自定义工具中使用的通用库。这将大大减少代码重复,并有助于确保实现操作统一。 (一切都以同样的方式进行)。
  • 解决方案应该提供功能,但要避免妨碍(例如,不要强迫我使用愚蠢的习惯用法,例如坚持使用 GUID 作为主键)
    • 虽然您可以控制这种情况,但我强烈推荐 GUID 主键。这允许合并复制,它可以帮助您轻松恢复备份或使用当出现问题时对数据库服务器进行故障转移。
  • 活跃的开发社区
    • .NET 有一个很棒的社区(包括这个社区),如果您有礼貌地提出请求,您应该会得到很多支持。
  • 没有一个人的努力
    • 不知道你在这里的意思,除非你雇用帮助,否则你会成为单身汉,但只要有一点时间,即使是 2 个人也可以做伟大的事情。即使一个人也能做出伟大的事情,但您在这里运行的框架是由商业资助的庞大团队支持的。
  • 最近的源代码控制活动
    • 并不真正适用于 .NET,但您可能使用的许多库(NHibernate、MVC Contrib、AutoFac 等)将会有大量活动并不断得到改进。
  • 合理的文档水平和成熟度
    • .NET 和大多数为 .NET 开发的生产级库(上面提到的)实际上都有相当不错的文档。有多种付费&仅针对 .NET 和大多数库的非付费信息来源(得到社区的大力支持并在 StackOverflow 上广为人知)
  • 不一定是开源的
    • 查找 LGPL 的支持库(即您可以在商业软件中使用它,但如果您修改该库,则在发布二进制文件时必须发布新的库代码。)您的网站在这里非常安全如果您使用这些库来支持您的开发,则不必是开源的。

嗯,这是我的 2 美分。您所描述的项目不是一项小工作,即使您使用预先构建的解决方案(主要是对其进行修改以按照您想要的方式工作),您也会面临大量的工作。我想您最大的障碍是 SSO 和 SSO。预先完成的解决方案的安全性。并不是说这是不可能的,只是很棘手,而且最终结果可能并不正是您想要的。

另外,请查看 OpenID,它可能是将所有站点链接在一起的最佳解决方案,并且大多数预构建系统都可以很容易移植使用它。

With the level of requirements you've specified, I'm personally going to have to lean towards the custom approach. You can hire someone to do the design (view) portion of the site for you, or you can buy a theme off the internet from site designers and customize it to your liking. (Sometimes just having somewhere to start is enough for intermediate level customization).

  • Multi-site support (using a single domain for hosting)

    • You're probably going to want to have control of your hosting environment, either a VPS (Virtual Private Server) or a dedicated box. This is still possible on shared hosting but not reccomended.
  • Watertight separation of content between customers

    • You'd probably have to spawn a unique app-pool for each customer with thier own services user for 100% seperation.
  • Full integration across components/features / SSO (single-sign-on) /Single-site experience (shared header/footer, unified navigation, unified tags, etc.)

    • This is going to be the tricky part. This Example may have some useful insight for you in the development process, but you're going to want a unified login service and have all sites use it or link to it.
  • Ease of development and deployment
    • This is where it gets tricky. Development ease comes from your background I think. MVC is definately the right choice in this respect then, knowing a lot about the right ways of going about building a site in MVC will aid in this process. Keep up to date by reading community blogs and listening to podcasts like Hanselminutes or DotNetRocks will help keep you in touch with the newest and greatest tools/technologies for making your site get off the ground quickly and effectively.
    • Deployment is the tricky spot. MSDeploy still isn't quite there. But if you can you probably will want to come up with a Dev -> Staging -> Release publish structure so you can test your code in a staging (mimiced production) environment.
  • Custom logic will be written using C# and MVC and any products should support this
    I want to stay in control

    • If you develop the site in ASP.NET-MVC, you'll be able to build common libraries that you can use not just in your site, but also in your custom tooling. This will greatly reduce your code duplication and helps make sure operational unity is achieved. (Everything works the same way).
  • Solution should offer features but otherwise stay out of the way (e.g. not force stupid idioms on me, like insisting on GUIDs for primary keys)
    • While you'll have control in this situation, I'd strongly reccomend GUID Primary Keys. This allows Merge Replication, which can help you easily restore backups or use failover DB servers when things go awry.
  • Active development community
    • .NET has a great community out there, (including this one) and you should get lots of support if you ask for it politely.
  • No single-man efforts
    • Not sure what you mean here, You'd be the Single-Man unless you hire help, but even 2 people can do great things given a little time. Even one-man can do great things, but the framework you're running on here is backed by a commercially funded huge team.
  • Recent source control activity
    • Doesn't really apply to .NET, but a lot of the libraries that you may use (NHibernate, MVC Contrib, AutoFac, Etc...) will have lots of activity and constantly being improved.
  • Reasonable levels of documentation and maturity
    • .NET and most of the production level libraries developed for .NET (Mentioned above) actually have a pretty good degree of documentation. There's multiple paid & non-paid sources of information for .NET alone, and most libraries (are well supported by the community and known on StackOverflow)
  • Does not have to be open source
    • Look for support libraries that are LGPL (i.e. you can use it in commercial software, but if you modify the library you have to release the new library code if you release the binary.) You're pretty safe here, your site dosen't have to be open source if you use these libraries to support your development.

Well, that's my 2cents. The project you've described is no small job, you're looking at a considerable amount of work even if you go with a pre-built solution (mainly hacking it to work the way you want). I imagine your biggest hangups would be SSO & Security for the pre-done solutions. Not to say it's impossible, just tricky and the end result may not be exactly what you're looking for.

Also, look into OpenID, it may be the best solution for linking all your sites together and most pre-built systems can easily be ported to use it.

不甘平庸 2024-09-14 17:50:18

再看看 MojoPortal。 CMS 很棒,主要开发人员 Joe Audette 反应非常灵敏。我安装了多个 CMS,运行单个站点和多个站点。

Take another look at MojoPortal. The CMS is awesome and the main developer , Joe Audette, is very responsive. I'm have several installations of the CMS running single and multiple sites.

旧情别恋 2024-09-14 17:50:18

我倾向于基于 CMS 的解决方案。拥有经过测试和生产就绪的软件不仅可以缩短开发时间,还有助于持续升级和减少错误数量。
如果您沿着这条路线走下去,您可能还需要考虑 Sitefinity。它不仅支持您所需的所有功能,而且基于 .NET 构建并支持 MVC 开发。该产品由 UX 工具制造商 Telerik 打造。

免责声明:我受雇于 Telerik。

I would lean towards a CMS based solution. Having a tested and production ready software not only reduces the development time but also helps in continuous upgrade and reduced bug count.
If you go down this route, you may want to also consider Sitefinity. Not only does it support all the features required by you, but also is built on .NET and supports MVC development. The product is built by Telerik, the makers of UX tools.

Disclaimer: I am employed by Telerik.

榕城若虚 2024-09-14 17:50:18

我最近遇到了 phpFox 这是一个社交网络/论坛/社区网站 CMS。这可能对您有用并且相当便宜。

I've recently come across phpFox which is a social networking/forums/community site CMS. This may be of use to you and is fairly inexpensive.

眉黛浅 2024-09-14 17:50:18

我们公司网站的解决方案已成为EBIZ CMS:功能齐全的网站,包括社交网络、在线商店、具有演示文稿、论坛、创建 HTML 页面等等,包括专业技术支持的维护,因此我们甚至不需要程序员帮助安装,而且只需 9 美元/月!

The solution for the site of our company has become EBIZ CMS: full-featured site that includes social networking, online store, features a presentation, a forum, create HTML pages and much more, including the maintenance of professional technical support, so we do not even need help for installing by a programmer, and it is only US$ 9/month!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文