I would like to add that many times people use channels when they don't have to. For example:
You have an ore processing system with multiple machines required to finish this. Let's call it a Mekanism system since it requires like four machines to get a tripling.
* The worst way: Every machine in the processing system has an interface and an export bus, so whenever you request ores, it can make them.
Why: Way too many channels made, and surprisingly difficult to set up to run automatically. Also a CPU hog.
* The better way: One export bus on the 'input' machine, one import bus on the output of the final machine. The machines either auto-pass to each other, or use a non-AE form of passing back and forth until it is done.
Why: Only two channels here, and you are now exporting all of the ores you want processed automatically rather than requiring active input/
* The most efficient way: Your input chest uses a non-AE transportation system with at least low-level sorting capability that auto-sorts the ores to the ore processing facility. The result eventually pipes into an ME Interface that already exists somewhere else.
Why: No extra channels used in this setup, you're using an Interface that is already in use elsewhere, and taking advantage of the fact that anything piped into it goes into the ME Network. This is particularly good with EnderIO or ExtraUtils.
As another case, DW20's setup of automating chipsets which eats up a ton of channels. Same concept as the above. You put the patterns in the individual inscribers, then filter the materials to the appropriate inscriber. The output from the inscribers and redstone go to the final chipset inscriber. So, for example, you tell the ME Network that 1 silicon + 1 (material) + 1 Redstone = 1 (type) chipset. These go to the chest. the material and silicon go to the appropriate inscribers, the redstone goes to the final chipset inscriber. Once the silicon and material chipsets have been made, they go to the final assembler, the final chipset is made, and is output directly to that same ME Interface that requested it. EnderIO with basic filters handles all the complicatedness, all you need are three patterns in an interface. You can do this with ExtraUtil as well if you like.