MIDI is a protocol used between musical elements to communicate. It describes for example how a keyboard / wind controller or something else can communicate with a computer having a midi compatible software. Explanation on Wikipedia here.
Soundfonts are basically files containing the description of musical instruments. From the reading on that file, we know how to play it (through samples and a lot of parameters). Nothing in this format force us to use the MIDI protocol with it, but it's been designed and adapted for this purpose.
What makes the link between soundfonts and the midi protocol is the sound engine. For example, Polyphone, FluidSynth, Vien(n)a are all listening to midi events coming from a midi device and create a sound from the reading of the soundfont.