Angular - MVC - Hybrid Application

So here is what I am trying to do....and am not sure how to do this or perhaps find an example.

I will have 3 solutions in visual studio..that would be managed separately.  Do not want any dependencies between the 3.

These would all be UI based solutions.  I am thinking Angular/MVC hybrid apps.   But here is the catch.

One solution would be like a dashboard/Shell application.  It essentially does not but handle authentication..and would act as a method to launch these other solutions...in such a seamless fashion that they appear to one app.  When in fact they are independent solutions.  To do this what would I need to consider.  I know for a fact one of the child apps would be an angular and mvc5 hybrid.  The other solution might be the same or mvc with jquery only.  

Is this possible...I need to put a proof of concept together and am not sure where to begin.
LVL 11
Robb HillSenior .Net DeveloperAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ambienceCommented:
I did something like that with MVC, jQuery/KnockoutJs, though all of the plugin apps were using the same, but it doesn't really matter.

To make it all happen, I had to develop a Framework (built on top of ASP MVC) which is used by the plugin applications. Of course, this means the plugin apps have to developed specially (unlike the shell which is a traditional MVC app). I also used RazorGenerator to package all plugin cshtml into a single pre-compiled assembly and thereby achieve the flexibility of extending the shell by simply dropping the dll into the bin folder (and nothing else).

In my case, the Shell was responsible for a dashboard style layout, authentication, logging etc. The framework for example provided the plugins the ability to use

User.IsDeveloper, User.IsAdministrator, User.IsGuest

to alter their behavior. At bootstrap the shell's PluginManager service would enumerate all plugins and Load them. Every plugin has to implement an IPlugin interface, which besides other things allows the shell to enumerate top-level menu items (entry points into the plugin). Also, every plugin would register an MVC Area so that requests would be dispatched to the corresponding Controllers. Due to the way ASPNET Layout engine works, every plugin View is a self-contained piece. The layout I had used one view active at a time. To have multiple views active a time, flexibly, would have required additional work. Of course, I could have had a layout with optional Sections but that would have required also a way to ask all plugin to contribute content if needed. I didnt like this Pull approach.

A particular problem with this design was managing Configuration unique to each plugin, especially the Save/Edit part. Its a bit tricky to design a "Settings" page where all settings are presented in a smart way, yet these may be coming or needed by different plugin. To develop a dynamic and flexible settings system might have needed quite some work, but in my case I opted to hardcode the settings part since there wasnt that much to change.

This all worked.

---

In part two of the application, I wanted to develop a RegionManager such that multiple plugins could publish content to predefined regions, and thereby overcome the one view at a time limit. Also, a MenuBuilder service so that complex menus could be provided by plugins. I tried to use AngularJs this time, because it provides greater UI composition and separation of concern (though now even Knockout has picked up some ideas). The idea was to have a directive like

<widget data-region="sidebar" /> go inside a

<region data-region-id="sidebar" /> (provided by the shell).

Unfortunately, plans never materialized beyond some initial research and therefore I cannot detail all that was needed.

---

I hope there is something useful for you in that.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Robb HillSenior .Net DeveloperAuthor Commented:
THanks for ideas
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C#

From novice to tech pro — start learning today.