问一下直接调用方法和发送事件调用方法的关系

想请问一下各位大佬,直接调用方法和通过发送事件调用方法这两种方式,各有什么优势和劣势,各自应该在什么情况下使用?