Domanda

Sto provando a migrare un semplice WinForms app per una web app ASP.Net. WinForms app è fondamentalmente solo un livello di presentazione per un complesso pianura C app, e interagisce con il codice legacy attraverso l'interoperabilità COM. Ho modesta esperienza in ASP.Net, JavaScript, jQuery, e un sacco di esperienza in WinForms e interoperabilità, quindi so le basi, ho solo bisogno di prendere una decisione di design.

Il modo in cui l'applicazione si presenta in questo momento è questa:

  1. C'è un mucchio di legacy C (neppure C ++) codice che possono essere modificato e ricompilato, ma porting non è un'opzione. Questo è lo strato di business + dati, chiamatelo come volete. Mi riferirò ad esso come codice legacy .

  2. Una volta lanciato, il codice legacy un'istanza di un server COM che viene utilizzato per la presentazione e l'interazione dell'utente. Dati La presentazione è serializzato e inviato a questo oggetto COM ( "Io ti sto inviando un output." ), e l'interazione dell'utente è ottenuta attraverso polling ciclico ( "Hai qualche input per me ? "). Non è la soluzione più bella, ma semplice come l'inferno.

  3. COM oggetto è in realtà un WinForms App NET 2.0 esposto come COM. Questa applicazione espone anche alcune funzionalità ad altre applicazioni .NET tramite .NET Remoting, ma che non è così importante anche.

Anche se il sistema è piuttosto complicato, WinForms app è davvero utilizzato per l'interazione solo, quindi è abbastanza facile passare al web. Quello che non sono sicuro che è quello che è il modo migliore per fare il server web <---> interazione codice legacy.

La prima cosa che mi viene in mente (in quanto ho già .NET Remoting implementato) è quello di esporre la funzionalità WinForms per la parte Web tramite Remoting locali .NET, facendo agire come una sorta di proxy tra codice legacy e web app. Vorrei davvero solo bisogno la parte di comunicazione, senza forme. In tal caso, web app avrebbe dovuto accedere a questa funzionalità tramite .NET Remoting (localmente).

E 'consigliabile avere web app di comunicare a livello locale per un'altra applicazione utilizzando .NET Remoting? Inoltre, ho potuto cambiare l'applicazione per un servizio di Windows, ma sarei ancora in grado di esporre la sua funzionalità attraverso COM al codice legacy?

Quale potrebbe essere un modo migliore per raggiungere questo obiettivo? Si noti che io posso anche fare alcune modifiche al codice legacy, se necessario.

È stato utile?

Soluzione

Credo che un aspetto importante per voi è il singolo-userness di un'applicazione WinForms e il multi-utente-sessionness del web.

10 anni fa sono stato coinvolto in diversi progetti web dove abbiamo corso la logica di business come oggetti COM (VB6) in MTS e in seguito COM +. Lasciando quegli oggetti COM appartengono alle sessioni erano un no-no, perché se gli utenti arrivano e lasciano molto si potrebbe finire con un sacco di risorse legate a oggetti COM non utilizzate, ma che vivono.

Vorrei suggerire che si guarda in esecuzione gli oggetti COM in Servizi componenti. Potrebbe non essere la soluzione, ma vale la pena di esplorare.

Mettere gli oggetti COM in Servizi componenti è il più vicino si può arrivare a scrivere un servizio di Windows che è raggiungibile attraverso COM - qualcosa che vorrei toccare per tutta la x in y: dove x è il cibo e y preferito è posto preferito

.NET Remoting è meraviglioso, ma soprattutto interessante come un dispositivo di comunicazione. Non so se avete intenzione di dividere questo in molti server, suona come un'applicazione interna dell'azienda. Non ho dettagli sufficienti per essere più precisi.

Altri suggerimenti

Sembra che si dovrebbe provare a cercare via semplicemente riutilizzare il codice di WinForms semplice sull'infrastruttura ASP.NET. Ciò significa che probabilmente non sarà necessario ri-scrivere il codice di interfaccia utente, ma basta usare così com'è su alcune infrastrutture emulativa di WinForms su web.

Si prega di vedere la mia immediata suggestione di un quadro che fa esattamente questo: http://www.visualwebgui.com/landing/wow.aspx

Spero che questo aiuta ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top