Server WCF per app mobili (Xamarin.Forms)

1

Ho una domanda sulla "lavagna bianca". Tecnicamente mi piacerebbe chiederti una cosa che non sono sicuro nel mio design, ma se hai tempo per una rapida revisione del resto del design, sarebbe fantastico. Ogni suggerimento è importante per me. Quindi ...

Sto lavorando a un gioco semplice, a turni (non un gioco d'azione). Qualcosa come gli scacchi. Per il cliente, voglio utilizzare Xamarin.Forms per distribuirlo su ogni piattaforma mobile. Sarà un gioco client-server, quindi devo creare un server per gestire i giocatori di accoppiamento che richiedono di trovare un avversario online.

La comunicazione tra i client avverrà tramite il server che utilizza WCF con il protocollo netTcp (SOAP). Voglio usare le callback, per mantenere la connessione con il cliente. Il protocollo SOAP lo ha di default in WCF.

Tutto sommato:

  • Client (s) - in C # e Xamarin.Forms, utilizzando lib di PCL. iOS, Android e Win Mobile
  • Server - ????? , che ospita il servizio WCF.
  • Comunicazione - WCF

Le domande sono:

  1. Quale tipo di applicazione dovrebbe essere un server? Dove dovrei ospitare i miei servizi WCF? Servizio Windows in esecuzione su Windows Server?
  2. Dovrei ospitarli in IIS?
  3. Dove mi consiglieresti di installare il mio server? Come un normale host Windows? Nube?

Non ho alcuna esperienza con un progetto del genere. Poiché il client sembra piuttosto semplice (distribuirlo nell'archivio), l'app del server è più complicata. L'app è abbastanza semplice - l'ho già scritto come servizio Windows, ma ero solo curioso di sapere come è stato fatto in produzione ...

Grazie per qualsiasi consiglio

    
posta Ish Thomas 05.12.2016 - 06:17
fonte

1 risposta

2

Cercherò di rispondere alla maggior parte della tua domanda, ma ha molte sotto-domande, il che rende difficile rispondere nel suo complesso.

Esecuzione e distribuzione

Noi (le persone presenti nella società per cui lavoro) tipicamente ospitiamo i servizi WCF in IIS. Ha pieno supporto per WCF e fornisce un eco-sistema già pronto per siti Web e servizi. Non dovrai implementare cose come sicurezza, binding, ecc da solo, ma puoi concentrarti sul nucleo dei tuoi servizi. Ad ogni modo, sono alcuni inconvenienti. Non si ha il controllo del sistema nella stessa misura in cui si ha con i servizi self-hosted (cioè in esecuzione da un programma che hai scritto). Se hai delle esigenze particolari, l'auto-hosting potrebbe essere la strada da percorrere.

Servizi self-service

Se vuoi ospitare autonomamente i tuoi servizi, puoi utilizzare un programma da zero o un servizio di Windows. In questo caso, consiglierei un servizio di Windows, dal momento che porta con sé un po 'di infrastruttura, ad es. riavviare il servizio o avviarlo insieme a Windows. C'è qualche sovraccarico, ma è gestibile. Con un programma da zero dovrai occuparti di tutto da solo. Questo ha senso solo in alcuni casi molto speciali (ad esempio se il servizio deve interagire con l'interfaccia utente sul server - un servizio Windows non può farlo).

Ambiente

Quando si tratta di prestazioni, i server cloud potrebbero essere peggio di un server dedicato. Ad ogni modo, molto probabilmente ci vorrà del tempo prima di arrivare a quel punto. I server cloud sono molto più maneggevoli, meno costosi (il più delle volte) e puoi migrare e scalare meglio. Potresti riscontrare problemi di prestazioni con i server cloud quando la tua base di utenti cresce, ma questo non ha alcuna importanza se hai bruciato tutti i tuoi soldi per un server dedicato di cui non hai bisogno la maggior parte del tempo. Se la tua app non ha un livello molto elevato di throughput dei dati, potresti andare spesso con un server cloud (se non sempre).

Un consiglio aggiuntivo

Non utilizzare SOAP se possibile. Potresti voler implementare anche una versione basata su browser e i framework comuni funzionano molto bene con JSON. Sarai in grado di spedire una versione web abbastanza velocemente quando tutti i servizi sono prontamente disponibili con il supporto JSON.

    
risposta data 05.12.2016 - 11:00
fonte

Leggi altre domande sui tag