Следуйте указаниям по присвоению имен, созданным Microsoft:
Имя, выбранное для пространства имен, должно указывать функциональность, предоставляемую типами в пространстве имен. Например, пространство имен System.Net.Sockets содержит типы, которые позволяют разработчикам использовать сокеты для связи по сетям.
Общий формат для имени пространства имен выглядит следующим образом:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
Например, Microsoft.WindowsMobile.DirectX.
Используйте префиксы имен пространств имен с названиями компаний, чтобы пространства имен разных компаний не имели одинаковых имен и префиксов.
http://msdn.microsoft.com/en-us/library/vstudio/ms229026(v=vs.100).aspx
В этом случае я бы сказал, что BusinessLogic или Dal являются просто абстракциями слоев и в действительности не принадлежат пространствам имен. Следовательно, я не буду использовать ни один из вас примеров, просто
Acme.EmailService
Эти дополнительные пространства имен только затрудняют поиск подходящего интерфейса / класса. Вы все равно используете несколько сборок, верно? В любом случае ваши разные слои будут разделены (с помощью сборок).
Спросите себя, что в действительности дает пространство имен слоя? Сколько классов в каждом пространстве имен? До 10? Делает ли это сложнее или проще работать с вашим кодом?