Connect smartphone via Wifi to Arduino MEGA

I need to connect my smartphone to my arduino MEGA 2560 via WIFI.
1- Which appropriate hardware(Shield) should i use?
2- Is Arduino wifi Shield a Complete Solution ?
3- Is ESP8266 is an option ?
4- Is Wifly?
thank you in advance :slight_smile: