[de] Singleton-Implementierung (solved)

Topics: Technical Support
Sep 16, 2010 at 11:33 PM

Hallo Rainbird,

in der Singelton-Implementierung in SessionManager.cs sollte - wenn schon - ein Double-Check-Lock sein.

// Wenn keine Singleton-Instanz existiert ...
if (_singelton == null)
{
    lock (_lockObject)
    {
        // Singleton-Instanz erzeugen
        _singelton = new SessionManager();
    }
}

Hier könnte passieren dass zwischen dem if-null-Test und lock ein Threadwechsel stattfindet und dieser ein Objekt erzeugt. Wird wieder zurückgewechselt erzeugt dieser Thread noch ein Objekt.
Siehe Singleton (Entwurfsmuster)

 

mfG Gü .

 

Coordinator
Sep 17, 2010 at 6:08 PM

Hallo gfoidl,

auch daran hatte ich nicht gedacht. Danke.

Der Fehler wurde bereits behoben. Du findest die aktualisierte Version unter: Changeset 621

Gruß

Rainbird

Sep 17, 2010 at 7:05 PM

Hallo Rainbird,

super!

 

Ich muss mir das Projekt noch genau zur Gemüte führen. Auf den 1. Blick denke ich: Nette Alternative für meine WCF-Szenarien.
Danke für das Projekt.

 

mfG Gü

Coordinator
Sep 17, 2010 at 10:38 PM

Hallo gfoidl,

freut mich, dass Dir mein Projekt gefällt.
Ich habe geplant auch einen generischen Host-Prozess dafür zu schreiben. Aber erstmal muss das Framework wirklich rund laufen.

Als Ersatz für WCF ist es durchaus gedacht. Allerdings nur in 100% Anwendungen. Interoperabel ist Cyan leider nicht,
Dafür einfach, schnell und auch sicher. Für Anbindung an Nicht-.NET-Systeme kann man ja wieder WCF einsetzen.

Es werden verschiedene Konfigurationen unterstützt, ähnlich wie Bindings bei WCF.
Ich nenne sie allerdings Protocol Setups. Du findest sie im Namensraum Cyan.Communication.Protocols.
Im Gegensatz zu Bindings in WCF gibt es Cyan Protocol Setups immer für Client und Server separat. Das erleichert das Handling,
da nur die Optionen angeboten werden, die für die jeweilige Seite sinnvoll sind. So gibt es z.B. ein TcpBinaryClientProtocolSetup
und ein TcpBinaryServerProtocolSet. Diese beiden sind übrigens Standard, wenn man nichts explizit angibt.

Stolz bin ich in Sachen Sicherheit vor allem auf die Möglichkeit, verschlüsselte Kommunikation ohne Windows-Domäne und ohne Zertifikate
betrieben zu können (wird von TcpCustomXXXXXProtocolSetup und HttpCustomXXXXXProtocolSetup unterstützt). Einfach "encryption"
im Konstruktor des jeweiligen Protocol Setup auf true setzen. Wer möchte kann auch den Verschlüsselungsalgorithmus einstellen
(Standardmäßig wird 3DES verwendet). Für die intern verwendeten asymmetrischen Schlüssel wird RSA verwendet.

Ich werde im Bereich Dokumentation hier auf der Codeplex Projektseite noch ausführlich zu den einzelnen Features schreiben.

Gruß

Rainbird

Sep 17, 2010 at 10:53 PM

Hallo Rainbird,

danke für die zusätzliche Info.

Ich werds übers Wochenende mal in einem Projekt anstatt WCF einbauen - sollte leicht möglich sein da ich nur den Baustein tauschen muss - und wenns was unerwartetes gibt lass ich es dich wissen ;-)

 

mfG Gü