I am in processing of finalizing MVVM UI framework for few WPF/C# applications, which we are expected to kick start. Just to deliver the idea, these applications can generally be categorized into small / large based on some quantifiable weight (eg. total number of screens and much more).
I presume to propose Caliburn Micro for small and PRISM for the large category. The rationale behind this is to avoid heavy weight framework since these applications are low latency systems (time bound) and I am trying to cut short all corners which is overkill.
But this is where I am stuck, as it is highly likely for an individual category to be elevated or lessen to other category. In such case, I might sometime end up having light framework for larger application (when we elevate category from small to large) or larger framework for small application (when we lessen category from larger to small). I am not so confident to go with my approach (two different type of framework) since I had rely on two different framework to achieve this with have no flexibility of switching.
Question: Is there any framework which has the elasticity to offload components, which i don't need in my application ?
A big framework doesn't necessarily slow you down if you don't use all of it. Also, any framework will slow you down if you don't use it correctly. I've had hideous speed problems with Caliburn Micro in the past because I was doing things wrong - they go away when you do things right, but of course we all make mistakes.
Using two different frameworks for different classes of application sounds like a disaster waiting to happen. As you've already realised, something's going to change category, and changing framework is a very time-consuming process even in the best-structured code imaginable. Choose one and use it for everything, unless you have compelling evidence that it's unsuitable for specific purposes. Personally, I really like ReactiveUI, which is fairly unusual but does make getting things right an awful lot easier than Caliburn.
Whatever you do use, you're going to have to be very, very careful with WPF to make sure it keeps up with your requirements for display time, and do a lot of work with asynchronous functions to keep the UI thread available for rendering.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With