Wednesday, January 18, 2006

The Component Marketplace

I heard from several people that read my last article Website in a Can, that said, "I had that same idea". That was encouraging. What was even more encouraging was that nobody told me that it wouldn't work. There were discussions on what the start-up cost might be, but not about if it was a viable idea. Very encouraging indeed.

But what else might make sense to sell?

I am going to write this entry in a slightly different manner than the previous. In this one I am going to write about my product idea as if it already existed.

What I offer is a Java and .Net component store. You go online, browse through the available components, select the ones you need, and checkout. Available components include data access connectors for specific database pools, DAO components for things like blogs, and controller components to handle user input and retreive the requested information.

Below is a sample of how you might some of these components. Note that all of these components use Inversion of Control, so it would help to understand how that works if you want to understand how these components could "plug" into each other.

Lets start out with a need. I have a customer who had required blog functionality on their site. The requirement was that it needed to be written in Java, works with Oracle, customizable, and could draw information in from their current CMS system. Further, it was requested that this blog be hosted locally so that they could control their own data.

I did some research, and found one that I thought might work, except that it didn't support Oracle. So I spent a lot of time pouring through the source code, trying to build my own Oracle connector. It seemed like ti was definately possible, but I quickly got lost in what I considered to be a tangled mess of code. The attempt failed, and we fell back to a backup plan of an externally hosted blog.

A second need arose for blog-like functionality, but only a very small subset. It was requested that their CMS be used for the administration of content, and that it be hosted locally. The solution was to build the code from scratch.

These two cases combined required the expenditure of thousands of dollars in development cost. What I am offerent here is a way to lessen that cost, and provide more functionality than any of the packaged blog software available today.

My components are small, well tested, open source, and fit a very specific need. You can pick and choose the exact components you need, and plug them together to get the desired effect.

In the first case, of a full blog, you might purchase the following components:

  • Oracle Blog DAO
  • Blog Manager
  • Ehcache Connector Module
  • Blog Admin Controller
  • Blog Admin Presentation Pages
  • Blog Web Controller
There are a couple of components that I didn't include that would need to be made to finish out the application. First the Oracle Blog DAO needs an interface to the connection pool. In the stated case, we already have a connection pool that we like, so we will write a connector for that ourselves. The other thing missing are the JSP(s) for the Blog Web Controller (the pages the user would see), which we want to make ourselves so that it looks exactly the way we need it to look.

This solves all of the stated problem except integration with our CMS. Note that the requirement was light integration, and not to use the CMS as the admin tool. To fill this requirement we could subclass the Blog Web Controller, and add additional values to be passed to the presentation.

If you are still looking at the list, and still trying to figure out how they connect, lets sing a little slong called, "The head bone is connected to the Blog Controller". The components in parenthesis are the components that will need to be built by us. The arrows (=>) indicate which components (left side) get plugged into another component (right side).

(Pool Connector) => Oracle Blog DAO => Blog Manager
Ehcache Connector Module => Blog Manager
Blog Manager => Blog Admin Controller
Blog Manager => Blog Web Controller

Blog Admin Controller => Blog Admin Presentation Pages
Blog Web Controller => (Blog Web Presentation Pages)

Note that the Ehcache module is optional, and it will still work without a caching component, but if you have a lot of traffic this isn't recommended.

The second case involved something a little easier, except that the requirement was integration with the current CMS system. Lets see what this shopping list would look like:

  • Blog Manager
  • Blog Admin Presentation Pages
  • Blog Web Controller
A much shorter list, but that means we need to do more of it ourselves. In this case we need to write the DAO, but because the connection between components is well documented this shouldn't be an overly complex task. We also removed the caching system, because in this specific case we are using a page cache provided by the application server.

So as you can see, our business is not to provide you with a complete system, instead we provide the components so that you can integrate them into your own system at a cost savings. Our components are relatively inexpensive at roughly 2-5% of the development cost.

We also offer much more than blogging components, here is a small sampling of the components we have in stock; pool connectors (Resin, DPCP, etc), blog components (Oracle, MySQL, PostgreSQL), page tagging components (Oracle, MySQL, PostgreSQL), flash widget components, personalization components (Oracle, MySQL, PostgreSQL), RSS feed components, image gallery components (Oracle, MySQL, PostgreSQL), calendar components (Oracle, MySQL, PostgreSQL), and many many more.

Thanks for shopping at the S-Mart Component Store, please come again!


No comments: