Our company wants to standardize apps across the enterprise on the .net stack. We're building an enterprise style guide. We have a solutions architect helping us with the design of our enterprise architecture. His recommendations include an enterprise services layer and also an enterprise UI layer with reusable components.
I completely agree on having an enterprise services layer that will be used by most if not all web apps for data. However I'm not convinced about the enterprise UI layer.
Many of our existing applications display the same information eg order details. His argument is that our company has spent money to build the order details UI multiple times for each application when it shows have been built once and reused in other applications. He wants to build reusable UI components on angular and bootstrap that can be dropped into future applications built or rewritten on the same stack.
I like the idea of having reusable components but I think it should be limited to the structure and styles and not include the UI framework. Adding the UI framework adds complexity to each control and also costs more and we'd be essentially building a cms. Besides that I feel we'd be locked in with angular which is not necessarily bad but what if another framework like react was better suited for a future application?
My questions are -
1. Has anybody built or worked in an environment that had a similar architecture? What was your experience?
2. What do you see as the pros and cons of this architecture?
Thanks in advance for your help.
Regarding the provided recommendations:-
UI Integration is different that UI re-usability. You can use UI integration in several ways
2.1 Some framework can provide you tools and APIs to bring several UI components "screens" from running apps into one screen. Microsoft has a framework and a commercial product for that purpose.
2.2 Some technologies like Java Portals allow you to include portlets "reusable UI components with it's business logic" into any other portal page and provide API to communicate between Portlets.
Reusable UI components is of course obvious but this is development practice not really impacting the architecture. It has its own overhead and governance, depends on your projects size. If you have one UI team to serve all project this might be effective to ensure there is high re-usability.
Using ESB is definitely the best way forward but it will change the way you are used to. There are some areas to consider