views:

367

answers:

7

I often see other developers naming libraries with "CORE". What does it actually mean?

+4  A: 

I use that convention and it is basically a core class library with generic utility classes and code that really has no place in their own library.

For instance, extension methods to a lot of classes, extra math functions, etc. Things that aren't big enough to warrant a whole other project for them.

What others do I have no idea though.

Lasse V. Karlsen
+6  A: 

I asked Bing to define "Core". One of the definitions it came up with was:

essential part: the central or most important part of something

So basically, when someone names a library core, it is the central and most important part of their application and/or framework :-)

Joel Martinez
Can you be more specific. ie, samples of stuff you'd put in the Core.I normally have a separate project for DataAccess, BusinessLogic,Presentation,Configuration, Error Handling, Utilities etc.I am not sure what is left to put in the Core, or if some of that stuff should/could be in the core
Dkong
Bing!??!?! Why!
micmoo
@micmoo, because it exists. I don't use Bing myself, but it's his choice what search engine to use.
Ionuț G. Stan
+6  A: 

In my opinion, CORE means something indispensable. Math functions and other functions with utility purposes are not in the core. They are rather "Utils".

The core is that part that makes everything else exist - without it, the others make no sense. Other stuff, that is not in the core can (not always possible by design) to be removed.

Victor Hurdugaci
+ 1: I can't say that I'm a well read student of the implementation of the .Net framework but just from general exposure it seems that this is consistent with the purpose of System.Core and mscorlib.
I Have the Hat
I'm inclined to agree with your concept of Utils.
Robert Harvey
Core is something on which everything else depends.
bjarkef
+1  A: 

I view the core as the the abstract heart of the application. The core typically implements enough logic to define the behavior of the whole application.

So in my view data access and presentation should not be part of core. This allows both web and desktop applications to share the same core module.

In your case I would have contain business logic, error handling and configuration in the core module.

I also belive that the main reason for having a big core module is to avoid the cost of having to maintain a lot of smaller modules.

Ola Herrdahl
A: 

I see core as a prerequisite for any other library that you may use from that vendor. So, while the vendor may offer several independent packages, they all rely on core to get things done. Otherwise it may result in severe code duplication.

Ionuț G. Stan
+1  A: 

This will probably be judged as heresy, but after several years of structuring solutions with separate projects for data access, business logic, etc, I am more likely going forward to put those layers into a single project called MyApp.Core so that a basic solution would consist of only the core project and a UI project. That's not to say no other projects would ever be needed or added (e.g. MyApp.Tests), but that the basic structure would be based on those two.

Edit: abridged per suggestion in comments.

I Have the Hat
-1: My take is that your answer goes far beyond the question, and has become a blog post or the start of a discussion. I recommend you edit it to stop after you say that you're putting these pieces together and calling it "Core".
John Saunders
Wow interesting take in contrast to the opinions of the site's proprietors who have stated repeatedly in their podcast that good answers are those that are detailed and provide supporting information to their theses, a position that seems reflected in the community by the myriad answers up-voted with comments indicating appreciation for going into detail. Also an interesting suggestion to truncate an answer that would be essentially subjective without context, rendering it almost as arbitrary as "I prefer blue" without saying why. To each his own though :-)
I Have the Hat
Meh, on further consideration I've wanted a reason to start blogging. Doing the edit.
I Have the Hat
I've removed the downvote, and actually upvoted this answer, because you took the time to consider what I wrote. I'd have upvoted even if you'd come back and said, "after consideration, I'm not changing it". My issue is not that you answered in detail, but that you answered a _different question_ in detail. It's not what OP was asking.
John Saunders
+1  A: 

Based on the answers already posted here, apparently there is no "standard" way of defining "Core" as it relates to developing libraries.

So I wouldn't worry about being "correct." Use the term as you see fit.

Robert Harvey