Last post Feb 19, 2010 04:59 AM by jdmalik
Feb 19, 2010 02:16 AM|Haansi|LINK
thanks for your attention and time.
Regarding component based development I have some questions. It will so nice of you if you spare time and share your knowledge and ideas. Thanks in anticipation.
1. Can you please explain me what is component based development ? What I am already doing is using layers (user interface, custom types, data access layer and busines logic layer). For example for filling a drop down list with countries what I do is
getting data from DAL using custom types in my BLL and BLL return a list of countries to user interface. Now in my opinion it is a plug-able component that I can use anywhere. Should it be called a component ?
2. What is a component a method ? or class or a assambly ?
3. Can components be like that (methods and assemblies) or they are services to embed ?
4. Actually I never have used services, if component can be in both ways (services & classes and assemblies) than what approach is better, should component be made in form of assemblies or services ?
5. Without being so technical any general rules on making re-usable components ?
I really thankful to you for sparing time & guiding me.
<input id="gwProxy" type="hidden"><input onclick="jsCall();" id="jsProxy" type="hidden">
Feb 19, 2010 04:23 AM|shabirhakim1|LINK
The "Componentization" of Software
component based development, is the encapsulation of business logic or technical functionality which admits a standard interface.
Any platform which supports components offers the possibility of building software applications by bolting together software components
in an analogous fashion to how electronic devices are built up from electronic components.
This approach applied to software development is referred to as component based development.
Moreover, Component based development (CBD)
consisting of developing software applications from loosely coupled components has the following distinct advantages:
Software Reuse - Encourages higher level of software reuse
Simplifies Testing - Allows testing to be carried out by first testing each of the components before testing the assembly of components
Simplifies system maintenance and modification - Since each of the components are loosely coupled you are free to upgrade and/or add components as
needed without effecting other parts of the system.
Higher Quality - Since a component can be built and then continuously improved upon by an expert or organization the quality of a component based application will improve over time.
Buy vs Build
By adopting a component based development approach you will have the option of buying off-the-shelf components from third parties rather than
developing the same functionality inhouse. By using this option appropriately to purchase generic functionality you will also gain from:
Shorten Development Cycles - The addition of a given piece of functionality will take days rather than months or even years.
Greater ROI - Significant savings can be gained through purchasing software components rather than developing the same functionality inhouse.
Enhanced Functionality - In order to use a component containing a given piece of functionality you only need to understand its nature, not its internal details or how it can be implemented as a piece of software. Therefore, functionality which would be impractical
to implement inhouse now becomes a distinct possibility.
There is a committee
OASIS Service Component Architecture / Assembly (SCA-Assembly) Technical Committee who defines standards for making SOA[Service oriented Architecture ] based Components
Complete details are give here
Feb 19, 2010 04:59 AM|jdmalik|LINK
Well googling will help you more for the words like "Component based development" though I would like to add my words
"It is the separation of concerns in respect of the wide-ranging functionality available throughout a given system"
As you said you are using a DAl abd BLL so both these are nothing else than a component.
2.What is a component a method ? or class or a assambly
An individual component is a software package or a module that encapsulates a set of related functions (or data).
So it can be a method declared in a class which further deployed as an assembly
3.Can components be like that (methods and assemblies) or they are services to embed
Components worked as part of the starting platform for service orientation. Components play this role for example,
in Web Services, in Service-Oriented Architecture (SOA)
whereby a component is converted into a service and subsequently inherits further characteristics
beyond that of an ordinary component.
WCF is a great example of component in .net world for services as a component
4.Actually I never have used services, if component can be in both ways (services & classes and assemblies)
than what approach is better, should component be made in form of assemblies or services ?
It depends on your architecture and requirement
if versioning is the issue then go for the component based architecutre, for lossely coupled system choose service oriented architecture
5.Without being so technical any general rules on making re-usable components
Reduce the size of methods
Class hierarchies should be deep and narrow
The top of the class hierarchy should be abstract
Subclasses should be specializations
Split large classes
Factor implementation differences into subcomponents
Separate methods that do not communicate
Send messages to components instead of to self