Вы должны быть осторожны, чтобы не пытаться объединить слишком много функциональности в одном классе, ваша формулировка звучит так, как будто вы хотите один объект "File", который будет делать все, это не очень хорошая идея.
У вас должна быть концепция представления файла, которую можно передавать везде, как вы определили, - но это должно быть немного больше, чем идентификатор и, возможно, имя - тогда все зависит от отдельных компонентов, чтобы решить, как они обрабатывают это, например, HTML-страница может использовать объект File json и делать вывод, что jsFile.Id нужно получить, используя ftp: // xxx / uploads / {id} или что-то еще, чтобы отображать дополнительную связанную информацию, чтобы служба WCF могла получить идентификатор файла и найти информацию в базе данных.
Возможно, имеет смысл иметь класс FileAttributesDTO или что-то подобное, чтобы отличить его от того, когда вы имеете дело с физическим файлом. Вы должны рассмотреть разделение проблем и зафиксировать как можно больше вариантов использования, прежде чем продолжить. Например, вам действительно понадобится дополнительная информация или простая обертка вокруг службы FTP даст вам все, что вам нужно.