I'm developing an application that in design and concept worked very much like outlook in the office suite. The application supports plugins. The last few weeks I have been looking into the n-tier based design approach of applications and feel that it's something that my application should utilise.
How ever a few design issues / question have come to mind when I have doing some modeling and thinking of the application. #1.DATA LAYER So far this layer is quite obvious to me and I do understand what to do and how to do it, thanks to many of you on the list. #2.BUSINESS LAYER This is where I design the code or the application and define the dependencis of objects as well. In mycase I have designed a heriachical object model, that in a very simplyfied way looks like this Application AddIns AddIn Websites Website Folders Folder Folders Items Item As you can see each folder can contain other folders and items. For those of you that have worked with the outlook object model it should appear quite. #3.BUSINESS FACADE Now I'm not quite sure this layer is needed since working with the hierahical object model is very comfortable. #4.PRESENATION LAYER This should be able to be a WWW or a Windows application but for the windows application there is a catch. Here I need some new objects (again like in outlook) that are Explorer (an instanbce of the main GUI) and Inspector (a property window). And both of those classes can handle one or more CommandBar objects for the meny and the various toolbars. #5.PLUGIN FACADE I'm wondering if I need to place this layer onto of the Business layer and my Windows UI Presentation Layer to semlessly blend the object models of both into a uniform object model that the plugins can work on. The plugins implement an interface called IPlugin and it has a method called void OnConnect(Application app); So what I actually want the plugins to work with is an object model that looks something like this Application AddIns AddIn Explorers Explorer CommandBars CommandBar <various objects for buttons and such thing> Inspector Inspector CommandBars CommandBar <various objects for buttons and such thing> Websites Website Folders Folder Folders Items Item So when the plugin is loaded into the application and connected it's passed an application object (global instance) so it can manipulate the application to add custom toolbars / menus as well as add items (customers, products etc) ... Is this laver needed to bring it all together like that or is the design flawed somewhere further down? If so then any suggestions would be nice. Thank you -- Andreas Håkansson Student of Software Engineering andreas (at) selfinflicted.org You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.