Sitefinity and custom development

2020-07-26 07:37发布

问题:

We are considering purchasing Sitefinity (or DotNetNuke) on pretty short notice and there are is a question I have that I am having trouble finding a quick answer to. (I have a separate but similar post with DotNetNuke as the focus, if you can answer that better or in addition.)

We are currently not using any CMS at all and we have some custom development that will not go away just because we go with a CMS for some or most of our site.

Our custom development is c# ASPX with Site Master and nested Site Master pages. These custom apps do not own their own top level in our web site, but are part of a branch, typically one or two levels down (for example, http://www.contoso.com/branch/app/default.aspx).

  • How is Sitefinity typically configured in a CMS/Custom “mixed mode”? For example, is Sitefinity installed at the “top” of the web site, or “where needed” down in the web site.
  • How does this relate when mixing CMS and custom web applications?
  • Does the CMS interface allow for adding these custom apps or do you just go to the web server and add them to the structure?
  • It appears from reading other posts, we can create our own custom c# modules and have CMS editors “drop in” the modules on the pages. Can someone confirm that for me?

If I did not provide enough detail, please feel free to ask for more.

回答1:

We have Sitefinity installed at the root with plenty of subfolders containing custom pages. We typically build a usercontrol, add it to the sitefinity ToolboxesConfig.config file, then drag/drop it into a sitefinity CMS page. I believe this is what you're talking about regarding having "CMS editors drop in modules on the pages".

We also have master/child pages that are imported as page templates into Sitefinity and they work well. You can also link from any CMS page to a regular .aspx page out in a subfolder of your own and implement code there that uses the sitefinity API, but we personally found this much more tricky and veered away from this approach whenever possible.

So in a nutshell, custom code is relatively easy to integrate into sitefinity as long as you can condense it into a user control or master page.

Disclaimer: This was all done with regular web forms development. I'm not sure how an MVC site would interact with Sitefinity (which I believe is built using an MVC architecture itself anyway).

The part of your question I'm unsure of is regarding the custom webapps in nested branches. I would recommend installing the trial version of sitefinity and trying to get a single branch integrated as a prototype. This might take a day, but it would be worth it to know if the sitefinity route is going to give you heartache.



回答2:

Full disclaimer: I work on Sitefinity.

First, let me say that throughout the history of Sitefinity, extensibility and developer-friendliness have been our top priorities. We've tried to create a CMS that uses concepts familiar to ASP.NET developers and build on top of them.

Now let me go through each of your points.

  • You can organize Sitefinity deployment however you like. In your case with sub-apps, you can either create virtual directories in IIS and deploy separate instances of Sitefinity in each of them, or you can use the CMS to do the sub-apps. In the CMS they can be separate branches of pages, have separate templates applied and feel like separate sites. You'll still manage them through one interface. It is up to you to choose an approach.
  • Sitefinity is a normal ASP.NET web application with the CMS assemblies in the BIN folder. You can open the project in Visual Studio and run it like a normal ASP.NET Web app. From a developer viewpoint, there's no difference between a custom app and a Sitefinity app - they are just ASP.NET web apps.
  • If you follow an approach of installing Sitefinity in the root and then using the CMS to create sub-apps, you can do it through the UI. If you choose to run separate virtual directories, you have to manually upload the files. Also, Sitefinity has a built-in File explorer, which you can use to manage the files on the server.
  • The modules you are referring to are called widgets in Sitefinity. For a developer, they are nothing more than custom ASP.NET controls and user controls. The Sitefinity page editor UI allows you to drop widgets in placeholders on a page and configure their properties. The placeholders are defined in a masterpage (a normal ASP.NET masterpage) or through the UI. It is very easy to create custom widgets. Here's a Quick Start: http://www.sitefinity.com/blogs/gabesumner/posts/11-08-29/ldquo_hello_world_rdquo_guide_to_custom_sitefinity_widgets_amp_controldesigners.aspx

We also have modules, which are a little more complicated concepts. They manage data, have backend and frontend UI. I encourage you to go through our blogs and documentation for further info.

We also have an SDK, containing samples with source code for extensions to the CMS.



回答3:

You may want to look at Kentico CMS that supports similar scenarios - you can easily mix your own ASPX pages and CMS-controlled ASPX pages, so it's very flexible.