2011-09-04 12 views
6

Ho un'applicazione di forma C# che si collega a un dispositivo elettronico utilizzando la porta seriale. La classe "'SerialCommunicationManager" "si collega alla porta seriale all'avvio dell'applicazione e gestisce la sporca attività di talkning sul dispositivo.Come esporre meglio i metodi in WinForm?

Quello che vorrei è esporre i seguenti metodi.

  • Write()
  • evento SerialDataReceived
  • SerialDataTransmitted evento

Principalmente un sito web locale in esecuzione sulla stessa macchina è quello che voglio per esporre i metodi per, ma in futuro mi immagina anche la necessità di applicazioni esterne.

Qual è il modo più semplice per esporre la funzionalità?

  • Server client TCPIP?
  • Servizio Web? (Posso creare un servizio Web all'interno di un WinForm?)
  • altro?

grande grazie

// David

enter image description here

+0

Non capisco il contesto; si inizia con Windows Form e si termina con i siti Web. Non capisco questo –

+0

L'applicazione Modulo è connessa a un dispositivo elettronico. Voglio altre applicazioni (come un sito Web) per poter vedere lo stato del dispositivo e inviare comandi. La grande domanda è: come consentire ad altre applicazioni di comunicare con il dispositivo. – David

risposta

4

mi sento di raccomandare self-hosting a WCF Service. Ciò ti offre un'enorme flessibilità in termini di modalità di pubblicazione e di pubblicazione di queste informazioni, inclusa la possibilità di modificare il metodo con cui viene servita tramite la configurazione.

1

Mi sembra, che se si desidera farlo correttamente, si dovrebbe suddividere i moduli applicazione e creare:

  • un servizio che gestisce comm seriale ed ha un'API esposta attraverso i servizi remoti
  • un'applicazione Forme che utilizza l'API e fa un modo con il servizio di

Poi, a seconda della località del tuo sito web, se rimarrà locale (o nei pressi di locali - LAN):

  • sito web dovrebbe utilizzare i servizi remoti per chiamare il servizio

altro, se si prevede di avere più siti web:

  • servizio web ospitato all'interno del IIS che vi avvolgerà servizi remoti API
  • sito web che utilizzerà il servizio web

Tuttavia, se è troppo lavoro da fare - basta utilizzare il servizio remoto e esporre i metodi necessari al web luogo.

1

In un recente progetto abbiamo fatto la seguente:

  • scrivere un'applicazione console (o Windows Service, a seconda delle esigenze) che comunica con il dispositivo elettronico.
  • Fare in modo che l'applicazione Console ospiti un servizio WCF .NET 4..
  • Scrivere un'applicazione .NET Windows Form per comunicare tramite i servizi Web con l'applicazione console.

In questo contesto, posso immaginare il sito Web di cui si sta parlando per utilizzare anche Web Services (WSDL) per comunicare con l'applicazione Console.