Pointed in the right direction?

E

Eric Cathell

I am planning on writing an application that has some base
functionality...for instance a basic PIM. But I want to be able to add
functionality to this PIM in the future...but I want to do so in the form of
pluggable modules. This way I can increase core functionality, or implement
different functionality within the new module(this could be for different
locations or different clients). I am thinking the provider pattern is the
way to go with this, and i have looked over the examples but none of them
really go in the direction I think I need to go.

So for instance client A wants a PIM that tracks XYZ information, but client
B wants to track WXYZ information. This would entail a database change to
include W information. however because the plugins are unique...the change
in the database does not affect them. Then if client b wants even different
funtionality it can be added for them at a later time, by working on their
plugin. At a later time client a wants to add POS to the application, they
would receive a new module which is plugged in(obviously this is a common
occurence). This would help to separate the program into various modules and
(in my mind) provide for better maintenance down the road.

So am I right to think that I need to start with the providerbase? Where
could I find examples of what I am trying to do? I have looked at the
quickstarts for the various providerbases...but they are super
specific...any tips?

Eric
 
W

Walter Wang [MSFT]

Hi Eric,

Based on my understanding, your question is how to use the Provider design
pattern in your application. Please feel free to post here if I've
misunderstood anything.

The theory of this pattern is that it allows to define a well-documented,
easy-to-understand API, but at the same time give developers complete
control over the internals of what occurs when those APIs are called.
Defined, a provider is simply a contract between an API and the Business
Logic/Data Abstraction Layer. The provider is the implementation of the API
separate from the API itself. For example, the Membership feature has a
static method called Membership.ValidateUser(). The Membership class itself
contains no business logic; instead it simply forwards this call to the
configured provider. It is the responsibility of the provider class to
contain the implementation for that method, calling whatever Business Logic
Layer or Data Access Layer is necessary.

To learn how to use this design pattern, you may read the source code of
built-in ASP.NET 2.0 Membership, Role Management, Site Navigation, Session
State, Profile, Web Events, and Web Part Personalization providers:
http://weblogs.asp.net/scottgu/archive/2006/04/13/Source-Code-for-the-Built_
2D00_in-ASP.NET-2.0-Providers-Now-Available-for-Download.aspx

Or you can learn from how to implement the Provider design pattern in
ASP.NET 1.1:
http://msdn.microsoft.com/asp.net/downloads/providers/default.aspx?pull=/lib
rary/en-us/dnaspnet/html/asp04212004.asp

Hope this helps. Please feel free to post here if anything is unclear.

Sincerely,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
E

Eric Cathell

Thanks for the response Walter. I am sort of familiar with what the pattern
is...I guess my question wasn't real clear. I want to create an application
that has base functionality. Or even a program that is a base shell. Then I
want to be able to add modules to this application as needed. Similar to
what a lot of Oracle integrators seem to do. Want Contact management? Here
is that module. Want Financial? here is that module...Need Job tracking?
Here is that module...

I think the provider pattern is what will provide me with that
functionality...but I have not found any information suggesting ways to code
the modules for pluggability. Are there resources that will show me how to
do this?

does that make better sense?
 
W

Walter Wang [MSFT]

Hi Eric,

Thanks for the update. That does make better sense.

If you only wanted to dynamically load modules into your "shell", a simple
interface and plugin system will suffice. However, a system like Oracle
integrators will require more complicated design patterns to be used
together. The Provider design pattern is one specific design pattern which
has specific purpose: design an API, choose an implementation dynamically
at runtime.

I recommend you take a look at http://patternshare.org, there're many
design patterns which can help you design your application architecture.



Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
E

Eric Cathell

Could you point me in the direction of good information on designing an
interface and plugin system? I was looking at reflection as a possible way
to load in the modules. Once I get my hands on some real meat I'll be
ok...its just I haven't really found a lot of information on plugin
systems(other than for VS or Office) on the net. I saw an article on JOM but
that isn't really what I am striving for either.

The reason I was looking at the provider is the way it works in .net with
the configuration sections. But I am sure I could do that with anything once
I can read the way others are doing it.

Thanks
 
W

Walter Wang [MSFT]

Hi Eric,

#Creating a Plug-In Framework
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html
/pluginframework.asp

#Let Users Add Functionality to Your .NET Applications with Macros and
Plug-Ins
http://msdn.microsoft.com/msdnmag/issues/03/10/Plug-Ins/

#Designing Extensible Windows Forms Applications
http://msdn.microsoft.com/msdnmag/issues/02/07/CuttingEdge/

#Speed Development With Custom Application Blocks For Enterprise Library
http://msdn.microsoft.com/msdnmag/issues/06/07/PatternsAndPractices/default.
aspx


Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
E

Eric Cathell

excellent...thank you very much...I actually found a couple more using
kartoo....Thanks for your patience and excellent help.
Eric
 
W

Walter Wang [MSFT]

Hi Eric,

You're welcome. I hope you will be successful in your project. Please feel
free to post in according newsgroups if you need more help during your
development.

Thank you for using MSDN Managed Newsgroup service!

Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top