But I have a question about packages:
We currently have 20+ applications in our shop.
We have maybe 10-20% of our code in 6 reusable libraries
that are shared by those 20 applications.
But the reusable libraries were structured without good guidelines (but
with good intentions I promise <grin>).
So now I want to refactor and move stuff from one package to another.
But that's very tedious and requires minor namespace and reference
refactoring (.Net technology) in all 20 applications.
And we still have a lot to learn.
So why don't I just shove all 6 reusable libraries into one
giant enterprise reusable library?
Then use folders and namespaces to organize it?
Then I can refactor that easily.
If I ever am satisfied with the high-level structure,
we can split it into appropriate packages again if there is anything to
gain by that.
At first I worried about memory usage of having 20 apps each have a
copy of a large reusable library, but I'm not sure the numbers in our
case make that a serious problem. After all, all 20 applications use
most of these libraries anyway already. Including a few things they
don't need won't make a big difference.
In fact, we can eventually put these in the Global Assembly Cache to be
shared by all the apps, actually reducing memory.
Then I worried about versioning, but that's irrelevant as we use .Net
framework and it allows us to manage that easily (as long as we change
version #s when we change code).
So what do you think of "one big shared package?"
Oh, and have you read "
See larger image
Share your own customer images
Publisher: learn how customers can search inside this book.
Are you the publisher or author? Learn how Amazon can help you make
this book an eBook.
Fundamentals of Object-Oriented Design in UML" by Meilior Page-Jones ?
He offers 4 layers:
Application Domain
Business Domain (shared by applications)
Architecture Domain (platform-specific stuff)
Foundation Domain (int, string, Date, Stack, Queue, etc...)
I like his ideas too.
Respectfully,
David K Allen
Minneapolis, Minnesota
USA
I enjoyed your message from April on "Meaning of layering".
I intend to study your article
http://www.ratio.co.uk/W13.html
more fully as it seems very informative.
But I have a question about packages:
We currently have 20+ applications in our shop.
We have maybe 10-20% of our code in 6 reusable libraries
that are shared by those 20 applications.
But the reusable libraries were structured without good guidelines (but
with good intentions I promise <grin>).
So now I want to refactor and move stuff from one package to another.
But that's very tedious and requires minor namespace and reference
refactoring (.Net technology) in all 20 applications.
And we still have a lot to learn.
So why don't I just shove all 6 reusable libraries into one
giant enterprise reusable library?
Then use folders and namespaces to organize it?
Then I can refactor that easily.
If I ever am satisfied with the high-level structure,
we can split it into appropriate packages again if there is anything to
gain by that.
At first I worried about memory usage of having 20 apps each have a
copy of a large reusable library, but I'm not sure the numbers in our
case make that a serious problem. After all, all 20 applications use
most of these libraries anyway already. Including a few things they
don't need won't make a big difference.
In fact, we can eventually put these in the Global Assembly Cache to be
shared by all the apps, actually reducing memory.
Then I worried about versioning, but that's irrelevant as we use .Net
framework and it allows us to manage that easily (as long as we change
version #s when we change code).
So what do you think of "one big shared package?"
Oh, and have you read "
See larger image
Share your own customer images
Publisher: learn how customers can search inside this book.
Are you the publisher or author? Learn how Amazon can help you make
this book an eBook.
Fundamentals of Object-Oriented Design in UML" by Meilior Page-Jones ?
He offers 4 layers:
Application Domain
Business Domain (shared by applications)
Architecture Domain (platform-specific stuff)
Foundation Domain (int, string, Date, Stack, Queue, etc...)