Frage

Ich habe eine Klasse, die Griffe alle die Interaktion in meiner Anwendung mit meinem WCF-Dienst und es scheint, dass MSDN sagen, dass die Verwendung der Verwendung) _ Erklärung mit WCF ist schlecht - ich sehen kann, warum dies schlecht ist und stimmen mit ihm ( http://msdn.microsoft.com/en-us/library/aa355056.aspx)

mein Problem ist, dass ihre vorgeschlagene Methode der Umsetzung bedeutet, dass ich 10 Methoden haben [als 10 öffentliche Methoden in meinem Dienst], die die gleiche Struktur Code haben und dies natürlich nicht die DRY Haupt folgen - der Code sieht ähnlich auf die folgenden:

try
{
    results = _client.MethodCall(input parameteres);
    _client.Close();
}
catch (CommunicationException)
{
    if (_client != null && _client.State != CommunicationState.Closed)
    {
        _client.Abort();
    }
}
catch (TimeoutException)
{
    if (_client != null && _client.State != CommunicationState.Closed)
    {
        _client.Abort();
    }
}
catch (Exception ex)
{
    if (_client != null && _client.State != CommunicationState.Closed)
    {
        _client.Abort();
    }
    throw;
}

Dies hat keine Protokollierung noch aber natürlich, wenn ich starten Sie kommen, um es Anmeldung dann werde ich die Holzwirtschaft arbeiten in fast 10 verschiedenen Orten hinzufügen müssen

hat jemand irgendwelche Tipps, wie ich hier ein bisschen mehr einfallsreich sein kann Code in der Wiederverwendung von

Dank

paul

War es hilfreich?

Lösung

ich einige allgemeine Zwecke verwenden würde, konfigurierbare Ausnahme Komponente in die Hand, die Handhabung Verarbeitung wie Protokollierung Grund Ausnahme erlaubt, wieder werfen usw. von den tatsächlichen Ort der Handhabung zu entkoppeln. Ein Beispiel für eine solche Komponente ist Microsofts Ausnahmebehandlung Application Block .

Dann könnten Sie mit einem Code am Ende wie folgt:

try
{
    results = _client.MethodCall(input parameteres);
    _client.Close();
}
catch (Exception ex)
{
    _client.CloseIfNeeded();
    if (!ex.Handle("Wcf.Policy")) throw;
}

wobei CloseIfNeeded ein Verfahren benutzerdefinierte Erweiterung bezeichnet die WCF Kanalschließlogik einkapseln und die Handle Ausnahme Methode ruft den Ausnahmehandhabungsmechanismus in einem Namen der Ausnahmerichtlinie vorbei, die an dieser Stelle aufgebracht werden sollen.

In den meisten Fällen können Sie reduzieren Ausnahmelogik Handhabung zu einem anständigen ein oder zwei Zeilen Code, können Sie mehrere Vorteile geben:

  • Instant Konfigurierbarkeit der Ausnahmebehandlung Verhalten (Policies)
  • Erweiterbarkeit mit benutzerdefinierten Exception-Handler gebunden an bestimmte Arten von Ausnahmen und Ausnahmepolitik
  • bessere Verwaltbarkeit und Lesbarkeit des Codes
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top