P2P == unblock ports, or create program exception?

Installing a P2P client, Halite. Usual dilemma: P2P program wants to unblock ports, MS urges against it. MS’s philosophy is that it is safer to open an exception for this program rather than open the port, arguing that if i open the port then the port remains open always, even if the P2P program is not running.

Please offer a strategy, and an explanation to support it.

just create a program exception. that way, ports required by halite will be open when it is running. It is not safe to keep ports open all the time unless you are running a server.