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.

Reply via email to