Dove mantenere i servizi persistenti nell'architettura MVVM?

2

In un'applicazione MVVM ho bisogno di utilizzare alcuni servizi che sono persistenti, ad es. servizi di rete come P2P e WCF in cui il principale "motore" o endpoint del server deve rimanere attivo durante la vita della mia applicazione. Attualmente li ho codificati in singleton che riassumono la funzionalità, usando internamente l'istanza del motore o del server.

Un altro esempio è una coda di messaggi centrale (come un ciclo principale / BlockingCollection) in cui ho bisogno di accodare varie attività che devono essere elaborate in sequenza.

Come dovrei definire e accedere a tali servizi in un contesto MVVM? Ho letto del modello del localizzatore di servizi ma questo e i singleton sono spesso descritti come anti-pattern?

    
posta DaveO 26.04.2015 - 02:09
fonte

1 risposta

1

Il mio consiglio è di esaminare l'iniezione di dipendenza. Ecco un esempio reale di ciò che vuoi fare

Inietti il tuo comportamento nella VM

link

In questo esempio inserisco un ISettingsManager nella VM

public CurveSettingsViewModel(ISettingsManager settingsManager)
{
     this.settingsManager = settingsManager;
}

E capita di essere configurato come un singleton dal IoC (Nulla di ciò che la VM è consapevole e di cui non dovrebbe preoccuparsi)

link

private static void BindPersistance(StandardKernel kernel)
{
    kernel.Bind<ISettingsManager>().To<SettingsManager>().InSingletonScope();
}
    
risposta data 03.05.2015 - 12:45
fonte

Leggi altre domande sui tag