Fundamentally, what ECNs brought to market is a total automation (and enormous speed) of running a basic limit book both internally and against other market participants.
Pre-ECN having major volume if one wanted to sell a million shares and not to get screwed, one needed to develop a very good relationships with specific traders. Now most of such trades are considered to be pretty basic - you may get a little bit of slippage but by god you don't need to call a desk. It really solved front-running issue - it is possible to do a limit 5.1722 500k order but tell ECN to only display "100@5.1722 until 500k filled". So no desk knows that some fund wants to by 500k shares so it can't trade against this order.
ECNs were f!cking amazing and when Datek started routing limit orders to Island (genius play) from retail investors the days of crazy spreads, slippage and free money became history. Some of them also allowed you to do cross-exchange routing - I think BRUT was first to do it - so you could send your order via BRUT to a specific exchange. This killed NYSE/PHL/AMEX arbitrage (AMEX and PHL were slower than NYSE so it was possible to do a trade on NYSE and take offsetting position on PHL/AMEX immediately locking the spread)
Since ECNs would self-cross at the NBB and NBA even if the market had no action because the likes of NITE and GSCO were slowing down just to get better money on the order flow, the trading simply moved to Island and Instinet forcing regular market makers to play ball.
The effect of ECNs in trading was equivalent of introducing Ansible and Puppet management in server management. Crypto-exchanges now act the same way as the who who say "We only manage our servers using Vt100 terminals using vi"