AOP werden können, verwenden Sie zum austauschen von Daten zwischen verschiedenen threads ausgeführt in Anwendung Prozess?

StackOverflow https://stackoverflow.com/questions/1431463

  •  07-07-2019
  •  | 
  •  

Frage

UPDATE:Ich bin nicht klar in welchem Zusammenhang AOP sollte verwendet werden?Wie können wir verwenden die AOP für logging-Zwecke, Sicherheit(Authentifizierung) verwenden, schlagen Sie bitte ein paar andere Szenarien, in denen wir profitieren können von AOP.

Kann AOP verwendet werden, um Daten zwischen verschiedenen threads ausgeführt in Anwendung Prozess?

War es hilfreich?

Lösung

Aspekt-orientierte Programmierung ist ideal, wenn Sie brauchen, um zu reduzieren die "cross-cutting" - Funktionalität in Ihre code-Basis.Was dies bedeutet ist, haben Sie gemeinsamen code (Protokollierung, Sicherheit), die Klassen implementieren müssen, aber Sie kann nicht abstrahieren, dass Funktionen in Basis-Klassen.

So, AOP ist wirklich kleiner diese Stücke Funktionalität und Integration, die zur Laufzeit oder compile-Zeit, in Ihrem code, wo Sie das "cross-cutting" - Funktionalität vorhanden ist.

Ressourcen

Derzeit AOP ist nicht gebaut in C# gibt es aber die folgenden frameworks bauen kann AOP:

AOP für thread-Daten

In der Regel, mit AOP zu teilen Daten zwischen threads ist nicht der Weg zu gehen.Es gibt auch andere Techniken für Entwickler erhältlich, das zu tun:

  • [ThreadStaticAttribute] Append dieses Attribut, um die Felder zu diktieren, um die .NET-runtime, die das folgende Feld wird einzigartig sein, um mehrere threads

  • Synchronisation (häufigste Technik) Verwenden Mutexes, Semaphores, ReaderWriter Schlösser und EventWaitHandles zur Synchronisation des Zugriffs auf lokale oder Globale Daten aus mehreren threads.In C#, die lock - Anweisung ist syntaktischer Zucker für das Monitor Klasse, die verwendet werden können, um "lock" den Zugriff auf ein Objekt aus einem einzigen thread.

Andere Tipps

Ich mag es zu denken, AOP als smart-hinter-den-kulissen-code generation (compile-Zeit) / Ausführung (run-time), so dass Sie im Grunde fast alles tun.Es hat alle Vorteile (und mehr) der traditionelle code-Generierung ohne Nachteile (z.B.Wartbarkeit).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top