Sono piuttosto nuovo a WCF (o resto, o Json per quella materia) e mi piacerebbe avere alcune opinioni di esperti su quali metodi definire.
Una breve introduzione per dare un'idea di ciò che il webservice dovrebbe esporre: Sto costruendo software domotica (software in grado di controllare una rete ZWave) che ha diverse interfacce (un'applicazione GUI, un server Web per la configurazione e tablet / telefoni per controllare la rete).
Il webservice è l'applicazione centrale che: - ha un controller che può interagire con i dispositivi ZWave - espone un servizio JSON WCF in modo che i client possano interrogare e controllare sulla rete ZWave
I metodi semplici nell'interfaccia WCF:
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnodes")]
public List<Node> GetNodes()
{
// ... retrieve all nodes from ZWave Controller
}
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnode/{id}")]
public Node GetNode(uint id)
{
// ... retrieve specific node
}
Quello che mi stavo chiedendo, è come "specifica" l'API dovrebbe essere in termini di metodi POST / PUT. I client devono interagire con i nodi, come impostare il nome, impostare la stanza in cui si trova il nodo, attivare / disattivare un nodo, impostare un importo dim, ecc. Ecc.
Ho definito un metodo come segue:
[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, UriTemplate = "setnodename")]
public void SetNodeName(NodeNewName nodeNewName)
{
// .. sets the name of the node, as specified in the passed object
}
Funziona, tuttavia questo causa molti metodi e classi specifiche (come ho specificato un breve elenco sopra la funzionalità che richiederebbe metodi e classi specifici per ognuno di essi).
È questa la strada da percorrere? O dovrei avere un metodo UpdateNode
e una classe più generica come parametro che specifica solo le proprietà che devono essere aggiornate? O c'è qualche tipo di linea guida che mi aiuterebbe a definire un solido design per il mio webservice?
Ho cercato molto su questo argomento e ho letto alcuni articoli sulle linee guida per la progettazione di WCF, ma non sono davvero qualcosa su cui coprono questa parte. (o non sono il miglior googler su questo argomento specifico, che avrebbe senso visto che sono nuovo su WCF / REST / Json / etc).
Spero che qualcuno possa capire cosa sto cercando e può aiutarmi nel mio cammino.
Molto apprezzato!