Get lost in UVM ports - please help to understand which one to use

Dear Forum,

I completely lost in UVM ports, there are so many of them. Please help me to clarify which port to use.

So I have one input monitor which sends 2 different write data transaction to scoreboard and 1 output monitor which sends the read data to scoreboard. Now I want to make connection using UVM ports.
I found out more than 5 ways of doing this:

Could you please help understand
a) Which of the up mentioned connection mechanism to use
b) Pros and cons of each connection method.
I have read UVM help documentation and cookbook but still lack of info, please could you point some other place where I can get more info about the ports.

Thanks
Hayk

In reply to haykp:

Hi,
You can make use of uvm_analysis_port in monitors and analysis_fifo in the score board. This is the best way to to implement scoreboard and monitor connection so that you can achieve sync between two components.

In reply to RAGHU_BHAT:

Thank you RAGHU_BHAT for the answer.
Can you please expand more why it is the best way and why other mechanisms are not good enough?

In reply to haykp:

There are not so much other constructs to deal with the analysis data effectively. The analysis port is a means which allows you to connect any number of components to it. And the analysis fifo is a fifo with unlimited size. Important on the analysis side is that you do not loose any data and the data stay in the right order. This is what the analysis fifo is providing. And the analysis port allows you to connect multiple components like coverage collectors and/or scoreboards to it and provides methods to deal with.

In reply to chr_sue:

Thank you very much chr_sue for explanation