2009-09-13 20 views
5

Ho un'applicazione java che funziona con Tomcat. Architettura abbastanza semplice: gli utenti invocano un servlet tramite HTTP che quindi inserisce una richiesta in una coda di memoria. Un thread consumer che è stato avviato come ServletListener ed è in esecuzione esegue il polling continuo della coda ed elabora le richieste che includono il richiamo di alcuni proc memorizzati e l'invio di alcuni dati tramite le connessioni socket ai sistemi di back-end.Tecnologia Microsoft simile ai servlet EE Java?

Potrebbe essere necessario eseguire il porting del codice su C#. Quello che sto cercando di capire è quale sia la tecnologia equivalente in Microsoft Land che mi permetterà di progettare lo stesso sistema. Il porting del codice da Java a C# sarà banale, ma quello che non riesco a trovare è una tecnologia del server applicativo di MS che mi permetterà di inserire il mio codice e quindi dichiarare dichiaratamente che voglio un nuovo "servlet" per ogni chiamata HTTP, e che ho bisogno di eseguire un thread "daemon" nello stesso processo, ecc ...

Qualche consiglio? Io non sono molto familiare con il paesaggio MS ...

risposta

1

Se non si ha familiarità con l'ambiente Microsoft, non aspettarsi di imparare le cose rapidamente, poiché l'esecuzione di un sito Web/servizio è molto più complessa di quanto la maggior parte della gente pensi. Cioè, se vuoi eseguire un ambiente sicuro.

Prima di tutto, mi chiedo perché ti stai spostando su C# e IIS. Apache funziona perfettamente anche su Windows e non mi sorprende se riesci a far funzionare tutto nello stesso modo su un sistema Windows.

Ma se si desidera passare a C# e allo sviluppo di Windows, iniziare leggendo prima alcuni libri tecnici! O'Reilly ha alcuni libri eccellenti su C# e .NET, inclusi titoli come "Learning WCF", "Programming Entity Framework" e "Programming ASP.NET 3.5" che dovrebbero fornire informazioni sufficienti per il passaggio a .NET.

Tuttavia, sarà diverso da quello a cui sei abituato. I modelli di progettazione sono simili, tuttavia i nomi e le tecniche differiscono.

Non sono un ragazzo Java, però. Quindi non so cosa vuoi fare qui ...


Guardando il tuo commento e i tuoi desideri, sembra che quello che stai costruendo sia un sistema messagequeue, in cui le richieste vengono inviate a una coda sul server, in attesa essere risolto. Windows ha alcune buone funzionalità di build, anche se potrebbe non essere esattamente quello che stai cercando. Tuttavia, il principio sarebbe semplice: l'interfaccia web aggiungerà richieste alla coda e un servizio Windows (non un servizio WEB) interrogherà la coda dei messaggi per le nuove richieste di elaborazione. Tuttavia, rendere il porting del codice da Java a C# è molto meno banale!

Informazioni sull'equivalente di servlet in ASP.NET, penso che Gimel abbia in parte ragione. Un gestore HTTP ti consentirà di generare qualsiasi tipo di risposta, comprese le pagine non html. Li ho usati in passato per restituire i dati in formato XML o Excel all'utente. Li ho anche usati per generare immagini dinamiche con filigrana aggiuntiva. Ma un servizio dati (.svc) potrebbe anche essere una buona alternativa. (Ne utilizzo uno come servizio RESTful attorno a un modello Entity.) Oppure solo un normale servizio web (.asmx) potrebbe essere il più pratico.

.NET e Java non sono facili da confrontare a questo livello. Ognuno ha molte delle proprie tecniche per gestire le cose. Quasi penserei che l'equivalente di servlet sia ASP.NET stesso, non una sottoparte.

+0

Si noti che Entity Framework non è l'unica soluzione ORM/OPF per .NET. ;) – TrueWill

+0

Vero, ma semplifica alcune cose, soprattutto quando si utilizza WCF per creare un servizio RESTful attorno al proprio database. Permette l'uso di soluzioni rapide in modo che gli utenti possano utilizzare prima che venga consegnata la versione finale. –

+0

L'interesse a spostarlo su .NET proviene dal client, non è una mia decisione. L'avrei lasciato così com'è. Inoltre, questa è un'applicazione interna, quindi l'aspetto della sicurezza non è poi così critico. Per ribadire, tutto ciò che voglio fare è replicare la mia (abbastanza semplice) architettura. Voglio la possibilità per più client concorrenti di inviare richieste che vengono messe in coda. Poi c'è un processo demone che può leggere attraverso la coda ed elaborare le richieste. –

0

Il produttore, che realizzerà server .NET standardizzati e transazionali basati su container con tutti i concetti Java EE come Servlet, MDB e connettori risorsa che funzionano con meno di 1 milione di file di configurazione, vincerà.