2010-09-02 3 views
7

Ich weiß nicht, ob das eine dumme Frage ist! Ich suchte im Internet nach nützlichen Treffern. Ich bin ein dot net Benutzer (C#). Ich möchte einen Server zu entwickeln, kann es ein Middleware-Server genannt werden (eigentlich bin ich mir nicht sicher), die die folgenden Aufgaben, Ich habe einen Server, der nicht geändert werden kann und viele Clients, die den Server anfordern und die Ergebnisse erhalten. Ich kann die Clients ändern. Jetzt möchte ich Software entwickeln, die Clientanforderungen empfängt, überprüfen, ob der Server ausgelastet ist oder wie viele Aufgaben auf dem Server in der Warteschlange stehen, die Clientanforderungen in der temporären Datenbank speichern, wenn der Server ausgelastet ist temporäre Datenbank und an den Server weiterzuleiten und dann die Ergebnisse erhalten undWelche Technologien für Middleware-Server in .net verwenden?

  1. , welche Technologien am besten zu den Kunden und die like.The Fragen weiterzuleiten, während in dotnet verbleibenden zu verwenden, WCF, Webservives, Remoting oder andere ?

  2. Wie komplex ist diese Aufgabe unter der Annahme, dass es Aufgaben wie Transaktionsverarbeitung, Lastverteilung, Protokollierung, Sicherheitsüberprüfungsmechanismen und dergleichen gibt?

  3. Welche Dinge sollte ich lesen, um diese Aufgabe zu erledigen?

  4. während der Suche finde ich solche Dinge wie Middleware in Java, aber nicht in dotnet. was ist der Grund?

Antwort

1

Middleware ein sehr weit gefasster Begriff, Sie sprechen speziell über einen Proxy:

http://en.wikipedia.org/wiki/Proxy_server

http://en.wikipedia.org/wiki/Proxy_pattern

die auch eine Middleware ist, natürlich.

Die anderen Antworten hängen davon ab, welche Technologien Sie für die Client-Server-Kommunikation verwenden (Webdienste, REST, JSON, ...?), Wie komplex Ihre Serverlogik ist und wie viele Anforderungen Sie verarbeiten müssen. ..

Die einfachste Sache, die möglicherweise in Ihrem Szenario funktionieren könnte, ist ein Load Balancer (http://en.wikipedia.org/wiki/Load_balancing_(computing)), der Anforderungen an zwei oder mehr Server je nach Serverlast weiterleitet. Offensichtlich funktioniert das nur, wenn Sie Ihre Server-Instanzen replizieren können.

Putting eine Middleware, die eine Warteschlange speichert, wenn der Server ausgelastet ist, könnte funktionieren, aber nichts versichert über die Möglichkeit, die Warteschlange Kapazität dieses Proxy zu überschreiten, und dort gehen Sie wieder ...

0

In .NET Der empfohlene Ansatz für einen Middleware-Server ist die Verwendung von Enterprise services, die eine .NET API über COM + bereitstellt.

COM + bietet alle Funktionen, die Sie (unter Punkt 2) erwähnen, für .NET-Anwendungen.

WCF ersetzt Remoting, aber es geht um Interoperabilität. Obwohl es Sicherheits- und Transaktionsfunktionen bietet, sind diese auf die Kommunikation zwischen zwei Endpunkten ausgerichtet, nicht auf Ihre Anwendungsobjekte.

+0

danke, ich werde deine Empfehlung sehen.Können Sie .net und Java für diese Art Lösung vergleichen und kontrastieren? Ich kann in die Java-Welt gehen, wenn es Vorteile gibt, diese Art von Szenarien zu lösen, alles, was Sie empfehlen – kebede

5

Kurze Antwort: Von den Tönen, wenn es, wenn Sie nur möchten, Ihren Server vor Überlastung Puffer, können Sie mit der Bearbeitung der Anfrage asynchron. WCF unterstützt MSMQ nativ. MSMQ unterstützt DTC, sodass Nachrichten transaktional platziert und entfernt werden können.

Das größere Thema Middleware ist ein ziemlich unscharfer Begriff (wie Begriffe wie Transaktionen, ESB, etc.). MS haben Produkte in diesem Raum. Dazu gehören:

  • queing Technologien (Message Oriented Middleware) MSMQ (Alternativen sind IBM Websphere MQ, Kaninchen MQ usw.)
  • XA/ACID/TP-Monitore - Microsoft DTC
  • EAI - Microsoft BizTalk für die Integration hat (Es gibt viele andere Anbieter hier)
  • ESB - Microsoft hat BizTalk. Sie können auch die MS Managed Service Engine (MSE) für die Dienstvirtualisierung anzeigen.Dies ist nicht mehr existierenden
  • für RESTful-Integration, WebAPI
  • BPM/BPEL - Wieder MS BizTalk haben. Kann auch Business-Level-Überwachung und Berichterstattung
  • Operative Aspekte umfassen - wie Sie beschrieben haben - Management, Überwachung, Lastverteilung, Drosselung, SLA-Vereinbarungen auf Dienstleistungen usw.
  • Für Webdienste (und WS-Erweiterungen), WCF. Hier gibt es eine große Anzahl von Konfigurationsmöglichkeiten, die die Notwendigkeit, den Code zwischen den Schaltprotokollen zu ändern, weitgehend abstrahieren.

Und das kratzt nur an der Oberfläche :)

+0

Danke für diese kurze Antwort. Es wird wirklich hilfreich sein, wenn Sie Lesematerial vorschlagen, um sie zu benutzen. – Richie

+0

@Richie - das Thema Middleware und Integration ist wirklich massiv - ich habe meine Karriere damit verbracht und weiß immer noch nicht die Hälfte davon. Wenn Sie eine bestimmte Frage haben, senden Sie bitte eine neue Frage an SO. – StuartLC

1

Für 1 #:

Bitte geben Sie zusätzliche Informationen über Ihre Aufgabe: 1. Grobe Schätzung für Menge an Kunden 5, 100, 10000, 1000000 2. Geschätzte Größe der Daten, die zwischen Client und Server erzwungen werden und zurück 3. Wo Clients im Internet oder Intranet arbeiten? Irgendwelche Einschränkungen durch die Sicherheit? 4. Client wird eigenständige Anwendung oder Web-Anwendung (wie Seite oder Widget auf der Seite) sein?

Für # 3:

Wenn alles, was Sie # 2 erwähnt müssen sich als Teil der Aufgabe umgesetzt werden, dann glaube ich nicht, dass Sie nur ein paar Bücher lesen und sie umzusetzen. Oder das Ergebnis der Implementierung wird weit von den Produktionsanforderungen entfernt sein. Ich empfehle, einen Architekten zu engagieren oder es an ein erfahrenes Team auszulagern. Nur für allgemeine Informationen kann ich empfehlen zu lesen - "Muster der Unternehmensanwendungsarchitektur" Von Martin Fowler. Aber nur Lesen kann Erfahrung nicht ersetzen.

Für # 4: Ich glaube, es gibt auch Middleware-Systeme für .Net. Es gibt kommerzielle Middleware-Systeme, die mit Java, .Net & C++ arbeiten.

IMO Microsoft wählte anderen Ansatz dann Java-Community. Sie haben Frameworks bereitgestellt, mit denen Sie so etwas wie "Middleware" erstellen können. Schauen Sie zuerst in WCF & REST. Die Warteschlange kann einfach in der DB implementiert werden. Wenn es nicht genug ist, schauen Sie in WCF & MS MQ. Wenn Sie MS MQ nicht mögen, schauen Sie sich Amazon SQS an. Wenn es nicht genug ist, schauen Sie in BizTalk.

P.S. Java- und .NET-Plattformen sind so groß, dass Sie auf beiden Plattformen das erstellen können, was Sie wollen. Es macht keinen Sinn, von .NET nach Java oder von Java nach .Net zu springen, nur weil Sie denken, dass etwas in der Plattform fehlt.

+0

Warum haben Sie gesagt: "Ich glaube nicht, dass Sie nur einige Bücher lesen und implementieren können. Oder das Ergebnis der Implementierung wird weit von den Produktionsanforderungen entfernt sein."? Die Architektur ist bereits behoben, da die eigenständigen Clients und die Server bereits vorhanden sind und die Notwendigkeit einer Software-Middleware ein Muss ist. Keine Frage, wie die Architektur sein sollte. Das Problem ist gegeben die Funktionen der Middleware und dass es kompliziert ist, welche Technologien empfohlen werden? Funktionen sind Load Balancing, Transaktionsverarbeitung, Sicherheitsprüfung, temporärer Speicher, zentrale Protokollierung. – kebede

+0

erwartete Anzahl von Clients ist mehr als 5000, und große Datenverarbeitung ist ein Muss. – kebede