2009-09-13 3 views
5

Ich habe eine Java-Anwendung, die unter Tomcat läuft. Ziemlich einfache Architektur - Benutzer rufen ein Servlet über HTTP auf, das dann eine Anforderung in eine Warteschlange im Speicher legt. Ein Consumer-Thread, der als ServletListener gestartet wurde und ständig ausgeführt wird, fragt die Warteschlange ab und verarbeitet die Anfragen, einschließlich des Aufrufs einiger gespeicherter Prozeduren und des Sendens einiger Daten über Socket-Verbindungen an Backend-Systeme.Microsoft-Technologie ähnelt Java EE-Servlets?

Ich muss den Code möglicherweise zu C# portieren. Was ich herausfinden möchte ist, was ist die äquivalente Technologie in Microsoft Land, die es mir erlauben wird, das gleiche System zu entwerfen. Die Portierung des Codes von Java nach C# wird trivial sein, aber was ich nicht finden kann, ist eine Anwendungsserver-Technologie von MS, die es mir erlaubt, meinen Code einzutragen und dann deklarativ anzugeben, dass ich ein neues "Servlet" möchte. für jeden HTTP-Anruf, und dass ich einen "Daemon" -Thread in demselben Prozess usw. ausführen muss ...

Irgendwelche Ratschläge? Ich bin nicht sehr vertraut mit der MS Landschaft ...

Antwort

1

Wenn Sie mit der Microsoft-Umgebung nicht vertraut sind, dann sollten Sie nicht schnell etwas lernen, da das Ausführen einer Website/eines Dienstes viel komplexer ist, als die meisten Leute denken. Das heißt, wenn Sie eine sichere Umgebung ausführen möchten.

Zunächst frage ich mich, warum Sie nach C# und IIS verschieben. Apache läuft auch unter Windows einwandfrei, und es würde mich nicht wundern, wenn Sie auf einem Windows-System alles gleich laufen lassen können.

Aber wenn Sie in Richtung C# und Windows-Entwicklung bewegen möchten, lesen Sie zuerst einige technische Bücher! O'Reilly hat einige ausgezeichnete Bücher über C# und .NET, einschließlich Titeln wie "Learning WCF", "Programming Entity Framework" und "Programming ASP.NET 3.5", die genügend Informationen für den Wechsel zu .NET liefern sollte.

Allerdings wird es anders als das, was Sie gewohnt sind. Die Designmuster sind ähnlich, die Namen und Techniken unterscheiden sich jedoch.

Ich bin jedoch kein Java-Typ. Also ich weiß nicht, was du hier machen willst ...


Wenn du deinen Kommentar und deine Wünsche betrachtest, scheint es, dass das, was du machst, ein messagequeue System ist, in dem Anfragen an eine Warteschlange auf dem Server gesendet werden gelöst werden. Windows hat dafür einige gute Funktionen, obwohl es nicht genau das ist, wonach Sie suchen. Dennoch wäre das Prinzip einfach: Die Webschnittstelle fügt der Warteschlange Anforderungen hinzu, und ein Windows-Dienst (kein WEB-Dienst) fragt die Nachrichtenwarteschlange nach neuen Anforderungen ab, um diese zu verarbeiten. Es macht jedoch die Portierung Ihres Codes von Java nach C# viel weniger trivial!

Über das Äquivalent von Servlets in ASP.NET denke ich, Gimel ist teilweise richtig. Mit einem HTTP-Handler können Sie jede Art von Antwort generieren, einschließlich Nicht-HTML-Seiten. Ich habe sie in der Vergangenheit verwendet, um Daten im XML- oder Excel-Format an den Benutzer zurückzugeben. Ich habe sie auch verwendet, um dynamische Bilder mit zusätzlichem Wasserzeichen zu erzeugen. Ein Datendienst (.svc) könnte aber auch eine gute Alternative sein. (Ich benutze einen als REST-Service um ein Entity-Modell herum.) Oder einfach ein regulärer Web-Service (.asmx) könnte so praktisch sein.

.NET und Java sind auf dieser Ebene nicht einfach zu vergleichen. Jeder hat viele eigene Techniken, um mit Dingen umzugehen. Ich würde fast denken, dass das Äquivalent von Servlets ASP.NET selbst ist, kein Unterabschnitt.

+0

Beachten Sie, dass Entity Framework nicht die einzige ORM/OPF-Lösung für .NET ist. ;) – TrueWill

+0

Das stimmt, aber es vereinfacht ein paar Dinge, besonders wenn Sie WCF verwenden, um einen REST-fähigen Dienst rund um Ihre Datenbank zu erstellen. Es ermöglicht die Verwendung von schnellen Lösungen, die Benutzer früher verwenden können, bevor die endgültige Version geliefert wird. –

+0

Das Interesse, es zu .NET zu bewegen kommt vom Klienten, es ist nicht meine Entscheidung. Ich hätte es so belassen wie es ist. Auch dies ist eine interne Anwendung, so dass der Sicherheitsaspekt wirklich nicht so kritisch ist. Um zu wiederholen, alles was ich tun möchte, ist meine (ziemlich einfache) Architektur zu replizieren. Ich möchte die Fähigkeit für mehrere gleichzeitige Clients in der Lage sein, Anforderungen in die Warteschlange eingereiht zu senden. Dann gibt es einen Daemon-Prozess, der die Warteschlange lesen und die Anfragen verarbeiten kann. –

0

Der Anbieter, der einen standardisierten, transaktionalen, containerbasierten .NET-Server mit allen Java EE-Konzepten wie Servlets, MDBs und Ressourcenconnectors erstellen wird, die mit weniger als 1 Million Konfigurationsdateien arbeiten.

Verwandte Themen