Поскольку наконец будет выполняться, даже если Вы не обработаете исключение в блоке выгоды.
Я предпочитаю использовать папки проекта как способ разделения подпространств имен. Так что в вашем случае, возможно, папка с именем Repositories, у которой есть класс в пространстве имен Data.Repositories. Примечание для частичных классов каждый файл должен находиться в одном пространстве имен.
Хорошая практика - называть папку после имени проекта.
Рекомендации по разработке библиотек классов содержат набор рекомендаций по именам
Последний пункт должен представлять для вас особый интерес:
Лучше всего разделять объекты в папках по значению объектной модели, а не по типу.
Если неясно, как сгруппировать классы по использованию или значению объектной модели, просто оставьте их все в одной папке. Использование подпапок не дает значений, если они этого не делают. • Организовать классы осмысленным образом.
Разделение папок по типу, например, перечисления, POCO, репозитории, частичные классы и т. д. вряд ли будет полезно.
Вы можете использовать подпапку для сгенерированного кода, который не должен
Также помните, что в обозревателе решений могут быть папки, которые не являются частью файловой системы. Учитывая, насколько затратно (по времени) в некоторых системах управления исходным кодом перемещение файлов между каталогами, я бы подумал о том, чтобы начать использовать только папки msdev, пока вы не определитесь с нужной структурой.
Нет необходимости , чтобы поместить каждое перечисление в свой собственный файл, если перечисление используется только одним классом , допустимо поместить его в тот же файл, что и класс. Например, перечисление PersonSex можно поместить в файл person.cs.
Я (в настоящее время - изменения в зависимости от проекта) обычно использую этот подход при именовании сборок / проектов / пространств имен в проекте в стиле SAAS / Web)
Чтобы объяснить услуги / клиент службы ... я использую IoC (в настоящее время StructureMap), который позволяет мне WebClient, чтобы либо разговаривать напрямую с бизнес-уровнем, либо быть перенаправленным для разговора через ServiceClient через службы на бизнес-уровень. Это дает мне гибкость для развертывания уровня моего приложения в моих веб-приложениях или для распределения частей моего бизнес-уровня (уровня приложения) на разные серверы с помощью принципов WCF / SOA.