1

I am very keen to hear opinions on this.

We are building an extensible architecture for web applications. We have a core team that builds the default product. Other dev teams take the default product and want to override/replace/extend its functionality at the code level.

We are considering using Orchard's Core to achieve this.

If we did it would probably consist of:

Removing everything CMS related from Orchard Stripping out Orchard's database Using/building on Orchard's core DLLs to create the extensible capabilities we require One alternative to this is vanilla ASP.NET MVC extensibility.

Opinions?

skaffman
  • 398,947
  • 96
  • 818
  • 769
Casey Burns
  • 1,223
  • 12
  • 15

3 Answers3

1

We took a similar approach at ITV, we decided that we wanted to move to a new system and wanted a lot of functionality that Orchard has, but we don't need it all... i.e. the CMS part of things.

We took Orchard.Web as the host for all our 'areas/modules' - This is really important, as it forces developers to think about loosely coupling their components.

We then decided to take the framework and strip out certain aspects of it. In the framework we took Logging, Caching, and the DI stuff around IDependency. The hardest part was Autofac. Take your time around this as our implementation I think, was not the best and I am sure there are bugs in it. We took a lot of the Orchard DI code and tried to retrofit that it without all the shell stuff.

Nicholas Mayne
  • 1,694
  • 14
  • 18
0

Another, probably more experimental approach would be to use Orchard Application Host.

This framework lets you run light-weight Orchard shells inside any application, thus essentially you can write Orchard code anywhere, let it be a console app, a cloud worker or even a non-Orchard web app (though the latter one would be a bit pointless).

Furthermore Orchard App Host is an example of exactly what you want to achieve: stripping down Orchard to its core and use it as a generic application framework. It's possible in a fairly clean way (without modifications to Orchard) but quite complex. Without better understanding your use-case I doubt you want to roll out something similar.

You can basically remove every module from the Orchard solution, even the Core module if you fee adventurous and start to build from there: this is probably the easiest. However, naturally, this also means that once you try to use anything not in the bare core you'll have to re-implement stuff that's already in Orchard.

Piedone
  • 2,693
  • 2
  • 24
  • 43
0

Orchard is called a CMS, but it is certainly a lot more than that. It is very generic and gives you a lot of non-CMS functionality out-of-the box. For example, it can be easily extended using modules - this is great for building framework applications. Additionally, Orchard doesn't stop you from using regular ASP.NET MVC. You can add regular controllers and implement parts of your application in vanilla MVC if you can't find what you need in Orchard. Finally, the framework is very extensible itself and it's usually possible to override every single mechanism in it if you need so.

On the other hand, Orchard is a little hard to learn at the beginning. There isn't too much documentation and there's a lot of "magic" in the framework. Sometimes it's difficult to figure out how to implement some specific functionality. At least that's my impression. However, the community is very helpful and usually you can find people to help you. After you get a hang of Orchard it's a great framework.

So in your case, I think it's well worth a try.

Marek Dzikiewicz
  • 2,844
  • 1
  • 22
  • 24