Respectfully,

Adam Phillip Churvis
Member of Team Macromedia
Certified Advanced ColdFusion MX 7 Developer
http://www.ProductivityEnhancement.com

Download Plum and other cool development tools,
and get advanced intensive Master-level training:

* C# & ASP.NET for ColdFusion Developers
* ColdFusion MX Master Class
* Advanced Development with CFMX and SQL Server 2000

----- Original Message ----- 
From: "Aaron Longnion" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Saturday, July 30, 2005 11:08 AM
Subject: [plum] Architecture question


Hi all -

I have a question about the flexibility of PLUM in regards to software
architecture.

We're working on a potential architecture for our CF apps moving forward
that is highly scalable and flexible, with as little redundant code as
possible.

We're thinking of something like this:

   1. a centralized repository of CFCs (which are not dependent on any
   scopes, especially Application and Session, that are tied to the
   CFAPPLICATION)

This brings up my first question: what compelling reason do you have for
separating your code based into multiple applications?

   2. multiple applications/sites that use the same set of CFCs from the
   centralized repository

Plum purposefully gives each application its own framework so that one
application doesn't "wag the dog" on any other application.  This enables
one application to have its framework modified without affecting the others.
Again it comes down to the central question of why you would want to
separate your code base into multiple application spaces.

   3. the majority of the CFCs will be used for data abstraction, mostly
   business logic and calls to stored procedures (SQL Server 2000)

Cool.  Try out Plum's tools for generating stored procedures, the component
methods that call them, and the invocations for each method.

   4. we want to be able to create multiple instances of CF (MX 7), and
   yet call the central repository of CFCs directly (without exposing them
as
   Web Services, although now that I think of it this is probably a
limitation
   of CF and unrelated to PLUM?)

This sounds more like a storage issue, where you might pull from a shared
NAS or SAN device.

   5. the reason we like the architecture described above is because we
   have multiple sites (and we're adding additional sites rapidly), all
which
   basically do the same thing, and so rather than dealing with multiple
   versions and instances of the same (or nearly the same) code base for
each
   site, it would be nice if at least the business logic was separated out
from
   the presentation layer. This way, each site could simply be given it's
own
   "skin" (using HTML/CSS, a plain text site, a Flash site, etc) , and
simply
   make calls to the CFC library to deal with data.

Do they do basically the same thing with the exact same data in the same
database?  If not, then each should have its own set of CFCs that deal with
its own data.  I know having one central "repository" of CFCs and such
sounds convenient, but to me it's not so good because you inevitably get
stuck when you want one app to break out of the mold and go in a slightly
different direction.

   6. the main problem I see with the out-of-the-box implementation of
   PLUM is that CFCs are tied to each PLUM project, though the Application
   scope. I'd like to move the CFCs outside of the framework, so that each
new
   PLUM project could access the CFC library. Then, we'd be able to rapidly
   deploy each new "skinned" sites to the CFC library rapidly, without
needing
   a redundant set of CFCs in each project.

Are you talking about instantiating the CFCs in the Server scope instead,
and accessing them that way?  Hmmmm.  Sounds like something we should look
at for the next version (at least making it easy for developers to do this
themselves).  There would of course be a real headache trying to do this in
a shared server environment, but I suspect that most developers wanting to
do this would be on their own server boxes anyway.

   7. For # 6 above, I realize this would require some custom
   manipulation of a PLUM project, and once the CFCs are moved outside of
the
   project, then I probably wouldn't be able to manage PLUM from the IDE any
   longer. So, am I missing something? And would you recommend using PLUM
(at
   least for the initial build of the code-base) for our planned software
   architecture?

There comes a time in every Plum project when it becomes divorced from the
Plum IDE and coding continues by hand (preferrably using the custom tag
editors for ease of use), so no, you're not missing a thing, Aaron.

This is some good food for thought, and David and I will add it to our
discussion for "what's next."

-- 
Aaron Longnion
[EMAIL PROTECTED]
512-470-1211

-- 
Aaron Longnion
[EMAIL PROTECTED]
512-470-1211


**********************************************************************
You can subscribe to and unsubscribe from lists, and you can change
your subscriptions between normal and digest modes here:

http://www.productivityenhancement.com/support/DiscussionListsForm.cfm
**********************************************************************

Reply via email to