Two MAX3140 (SPI to RS485) connected to one another
use two uC and convert SPI to RS485 then convert RS485 to SPI


Converting SPI to RS485 then back to SPI only really works in the master-to-slave forward direction. It doesn't work when trying to extract data from a slave because of the turn-around time and the immediate possibility that data coming back will gradually become out-of-sync with the forward going clock signal over longer and longer distances.

For instance I have sent 2 MHz clocked SPI converted to RS485 many tens of metres to drive remote DACs and it worked just fine - clock and data roll along to the slave and appear in-sync with each other and all is well.


  use two uC and use their UART and convert them to RS485 then
  vice-versa


This is the obvious choice because you are creating a solution that does not require clock sync across the full cable - you have local sync at both ends and that works just fine. The MX chip appears suitable for this but, as always the devil is in the detail so read the data sheet to see if there are any gotchas.


  use two uC and apply Ethernet/PoE between the two


Harder to get up and running but could be the best overall solution for a "many-user" system


  implement long distance SPI


See my first answer - use 485 as a buffer and take note that slave-to-master comms will be problematic.