Ospho is a rust convertor. When the acid reacts with rust it forms iron phosphate, turning the metal black. You then REMOVE the Ospho residue and then paint over it with primer. The best procedure is to use a wire wheel or sandblast the rust down to bare metal and treat with Ospho, remove the residue (with soapy water) and then prime and paint.
POR-15 is a rust encapsulator. It does not convert the rust to anything. It simply encapsulates it in a REALLY hard paint shell so no oxygen can get to it, thus stopping further rust. POR-15 has a very specific application procedure and works best on rusty, but well-prepared metal. If the metal is too smooth the POR-15 will peel off like electrical tape. POR-15 is also not UV safe - it will turn milky and chalky from sunlight.
Which to use depends on what you are trying to do, how well you can prep the surface, how you can apply it. For rusty frame rails you can do either but it might be easier to use POR-15, though it will probably cost more. That stuff is expensive. They do have some new products that apply over POR-15 rust encapsulator, like chasis paints (to provide UV protection). If you topcoat it, you have to do it before it cures or else sand it, which is almost impossible.