引用马丁·福勒在他关于控制反转的文章中所说:
控制反转是使框架与库不同的关键部分。 库本质上是一组可以调用的函数,这些天通常组织成类。每次调用都会执行一些工作并将控制返回给客户端。
框架体现了一些抽象的设计,具有更多的行为内置。为了使用它,您需要将您的行为插入到框架的各个位置中,无论是通过子类化还是通过插入自己的类。然后框架的代码在这些点调用您的代码。
因此,简而言之,区别在于您的代码调用库,而框架调用您的代码。
框架在开发人员中强制执行某些设计模式,并提供一些代码生成工具。这与我的第一句话很配合,因为它以某种风格/模式生成代码。
库为您提供了功能,供您根据需要使用。就像C的stdio函数,C#的控制台,PHP的“内置”函数等一样
您可以将库视为某种API