If the storage consumers are going to be other Windows servers, iSCSi is a very efficient way to do it. OpenSolaris can do that. Personally I wouldn't trust NFS performance on Windows, others may disagree.
If the storage consumers are actually workstations, CIFS is about the only way to go. In that case you could go for a two-server model, with the storage server providing iSCSI and a second Windows server providing the CIFS serving.
As for efficiency of iSCSI, that greatly depends on what you'll be doing with it. When I last looked at OpenSolaris for just this kind of thing, it seemed to assume the standard transfer size was pretty large. The I/O subsystem in OpenSolaris needed to be tuned to an extent that I couldn't figure out, so small/medium random I/O operations really performed poorly on it (more details here, plus comments).
In my experience OpenFiler performed significantly better for the sort of random I/O I needed for iSCSI. If your AD Domain is small enough, the CIFS engine on that is very good.
Branching into the paid-for storage heads, the LeftHand stuff from HP is really nice. IIRC the latest releases of those have 10G Ethernet as an option, which reduces one of the major bottlenecks I discovered in my own testing. Sequential reads on the storage substystem I had were pushing the 3G SAS limit, but on a single GigE connection that doesn't matter. We didn't go LeftHand because were trying to keep our cost-per-GB on this particular system low.