OrchardCMS / OrchardCore

Orchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.
https://orchardcore.net
BSD 3-Clause "New" or "Revised" License
7.23k stars 2.34k forks source link

Orleans client module for OrchardCore #2875

Open jpiquot opened 5 years ago

jpiquot commented 5 years ago

Hi,

I am actually implementing Orleans in my OrchardCore project : Orleans Project

I can share an OrchardCore.Orleans.Client module if this is of any interest for someone in the Orchard Project.

Piedone commented 5 years ago

I'd be curious on what you're building and how Orchard and Orleans fit together!

jpiquot commented 5 years ago

For a CMS, Orleans can be a distributed cache with or without event sourcing. In my project that is a business application where Orchard is used as a framework, the goal is to implement CQRS where queries used data stored in the OrchardCore database and Commands update an Oracle transactional database.

Piedone commented 5 years ago

I see, sounds interesting! You could talk about the project, if you can, during Tuesday's community meeting (https://meet.lync.com/microsoft/sebros/7QRH5WR8 at noon PST).

jpiquot commented 5 years ago

I would like be more advanced in my Orleans/OrchardCore integration before presenting it. The Client and Silo setup/initialization module that initialize Grain Storage, Streams, Reminders and clusters is done. Now I am implementing OrleansContentManager that will call Orleans grains to persist data using internally OC ContentManager.

Each OC instance can consume grains as a client or host them as a server. They can be configured as a cluster to have a distributed cache scenario.

Settings : image

Piedone commented 5 years ago

Could you show your code? I don't see it under your GH profile.

jpiquot commented 5 years ago

The source code is a private Git on Azure DevOps. I will move it to GitHub soon.

I have also integrated the orleans dashboard for monitoring global health.

image

image

jpiquot commented 5 years ago

Hi,

I have now content items in Orleans ;)

image

Piedone commented 5 years ago

Nice!

sebastienros commented 5 years ago

But are you still storing them in SQL?

jpiquot commented 5 years ago

Before I was storing them in Oracle as it was a projet constraint. But now the customer decided to shift to SQL Server as there was too many issues with Oracle (not due to MS Orleans). MS Orleans has many integrated persistence providers. The speed is very fast : 300K content items sending 10K in parallel takes 2 minutes. The default AdoNet storage is very similar to YesSQL but you can use other persistance technologies like CosmosDB, EventStore, etc. The biggest advantage is to be able to write a custom storage provider and inject it easily. Wich is for me the missing part of OC, if you want to use it as an application framework instead of a CMS. In applications we have many storage strategies and OC is a bit to tied to YesSQL.

MiroslavMikus commented 2 years ago

@jpiquot Great idea!

Were you able to move the repo from Azure DevOps to GitHub??