Messages by Default, Direct Calls by Exception in .NET

A practical rule for modular systems: direct calls for immediate decisions, messages for post-commit outcomes, durability when it pays off.