Если вы хотите сделать что-то по-MVVM, то вам не следует вставлять это в View, View Model, статический метод или Singleton.
FTP-сервер должен быть полноценнымКласс модели.
- Представление должно сообщить модели представления, что оно хочет выполнить
StopFtpServerCommand
- Представление модели должно сообщить экземпляру
FtpServer
, что FTP-сервер должен Stop
Это означает, что вы будете поддерживать несколько экземпляров FTP-серверов, даже если вы не будете предоставлять эту поддержку через пользовательский интерфейс.
Если вы пойдете по этому пути, вы избежитезаглядывая в угол в будущем, когда вы решите, что вам нужно несколько FTP-серверов.Это заставит вас написать лучшую абстракцию для вашего класса, так что вы с большей вероятностью будете использовать ее в будущих программах.
Это также не должно быть очень сложным в написании по сравнению с написанием Singleton или статическихметоды.
Если вам нужен доступ к одному и тому же экземпляру из нескольких моделей представлений (что, по-видимому, не требуется для вашего вопроса), это отдельная задача.Я лично предлагаю использовать такие вещи, как Внедрение зависимостей , чтобы решить эту проблему, чтобы вы не звонили new FtpServer()
изнутри ваших View Models.