what's the difference between an API, SDK, Framework, Library, and Assembly?
I've been learning to program using the .NET implementation of C# and there are few concepts that I still don't fully understand and I worry that if someone asks me what they are, I am not going to be able to give a clear answer.
I'll explain the concepts as I understand them and then you can correct me if I am wrong.
API (Application Programming Interface) = an interface that allows the developer to use publicly exposed members in order to access functionality while hiding the code used to implement that functionality.
SDK (Source Development Kit) = A set of tools, sample code, and/or documentation, that helps the developer use the API.
Software Framework = (as in the .NET framework), it's a collection of software libraries that provide a defined API?
Software Library = (as in .NET's Framework Class Library) a collection of assemblies?
Assembly = an .exe or a .dll file that contains an API? For example, the mscorlib assembly contains the System namespace, System.IO namespace, etc, and that collection of namespaces (along with the types they contain) constitute one of the many API's provided by .NET's framework class library?
As you can see, my understanding of these concepts is very shallow. Can someone please explain all these 5 concepts within the context of .NET and in a manner that is easy to understand?