Semi-OT: Programming Question

Charles, Joshua Micah (UMKC-Student) jmcqk6 at umkc.edu
Fri Mar 11 13:36:18 CST 2005


Hey Brian,
 
Thanks for the reply.  No it's not a homework assignment (I dropped my
comp sci degree cause it was moving to slow for my tastes).  The end
project will be a portal, somewhat like dotnetnuke, or rainbow portal,
but I'm wanting to build it from the ground up on linux / mono. The
reasons for this is that I don't like either one of the above mentioned
projects, and I also want to learn the more advanced skills such a
project will require.  Of course, the project will be open source, and I
think it can take off.  To get away from my sales pitch now... :)
 
I've got an object model that is monolithic right now, but I want to
make it more flexible.  I guess what I'm trying to figure out is how I
would implement a totally dynamic program, where everything from the gui
to the datalayer is decided at runtime.  The lines I'm thinking of now
is creating some high level interface, perhaps something along the lines
of a IMenuItem, which would contain methods for access the information
needed to create a menu dynamically.  I could then search through the
plugin dll's and load all the objects that implement that interface.  Of
course, I realize that this is a big performance hit, but I think the
flexibility of the software will overshadow that.  The clients I'm
working with now are always changeing the requirements of the software,
even after deployment, and it seems that my framework would make those
changes easier to implement (especially since even the most minor change
wouldn't require a re-compile (or re-translation, if you want).
 
Portability is not something I've even begin to study yet on my own, so
I'm going to have to look into it.  I know some of the basics (don't
depend on a particular character encoding for example), but I think this
will be minimalized by running on top of mono, which itself is portable.
Since the framework will interact with endusers through web services and
web pages, i don't have to worry about messing with gui toolkits, but
even if I did, mono's implementation of a native toolkit is coming along
really well.
 
Josh


------------------------------------------------------------------------
----
From: Jack [mailto:quiet_celt at yahoo.com]
Sent: Thu 3/10/05 10:33 PM
To: Charles, Joshua Micah (UMKC-Student); kclug at kclug.org
Subject: Re: Semi-OT: Programming Question


This sounds kind of like a homework assignment.
But, why not use an object model. If you are looking
to make the data and the functions dynamic objects are
the way to go, by encapsulating the functions and
variables in the objects and thus allow them to be
overridden. Even though I consider them over used. You
could also use templating and the data formats are
defined at run-time. Of course this costs you in
processing.
While you're making this modle don't forget the Linux
world, you ought to give some thought to OS
portability.
Lastly, C# is an interpreted language. C is a compiled
language. If C# was a compiled language then there
would be no need for Mono on Linux, one could just
build a C# compiler to be part of the gnu compiler
family. Some might argue that C# is a compiled
language because it cinverts the code to byte code,
just like Java. But really you still need that byte
code interpreter to run it. It may be a bit more
optimized or compressed by this means making it more
efficient than run-of-the-mill interpreted languages,
but it's still interpreted. Ok, so maybe I'm a purist,
but I don't see doctors calling aspirin a cure or a
vaccine for headaches.

Brian Densmore

--- "Charles, Joshua Micah (UMKC-Student)" wrote:

>
> I'm working on an application framework idea that
> I've had, and have ran into the following problem.
> My original (rough) design called for a monolithic
> core that provided the main functionality I was
> looking for, and would be extensible via plugins.  I
> then realized, though, that my software would be
> much more flexible if I started out with a plugin
> framework, and made all functionality
> compartmentalized into plugins.  That way if a user
> doesn't want some functionality, they don't need to
> install that plugin.  The problem I'm running into
> is trying to figure out exactly how I am going to
> implement it.  I've read a book on design patterns,
> and have done some good research on google, but it
> seems most of the documentation I'm finding is very
> basic (i.e. how to dynamically load a dll, and
> execute the code it contains.)
>
> Here's where I'm at right now.
>
> I can load a third party dll into my program and
> execute the code, but I can't quite figure out how
> to make it interact with dynamic data.  Should I
> create large object that contain the data, and when
> the plugin is called, through an event of some sort,
> just pass in that object? 
>
> I'm also considering going through the MyPhpNuke
> code to see how they do it in PHP.  Would this be
> helpful even though it's a interepreted language,
> and I'm using a compiled language (C#)? 
>
> I'm also looking at the option for doing all the
> extensions through a scripting language, but that
> seems to me to cause other problems.  What I would
> really want is to have complex plugins that are
> encapsulated into a single dll. Distribution would
> be made via a zip file, which would contain the zip
> file, a SQL file ( containing any modifications to
> the database needed), a manifest file ( with version
> information ), documentation, and a xml config file
> that will hold any needed configuration settings.
>
> Another option would be that I provide an interface
> to keep all configuration in a single place, which
> might be more elegant.
>
> I've been reading through the RainbowPortal code to
> try to figure out exactly how they did it, but the
> fine points elude me.  Does anyone know of any good
> documentation that can get me to the next step?
>
> Thanks,
> Josh



More information about the Kclug mailing list