Question

J'ai une classe qui gère toutes les interactions dans ma demande avec mon service WCF et il semble que MSDN dire que l'utilisation de l'aide) _ déclaration avec WCF est mauvais - je peux voir pourquoi cela est mauvais et d'accord avec elle ( http://msdn.microsoft.com/en-us/library/aa355056.aspx)

mon problème est que leur méthode proposée de mise en œuvre signifie que j'ai 10 méthodes [comme 10 méthodes publiques dans mon service] qui auront le même code de structure et cela bien sûr ne suit pas le principal SEC - le code ressemble à ce qui suit:

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;
}

n'a pas encore l'exploitation forestière mais bien sûr quand je fais venir à démarrer la connexion alors je vais devoir ajouter le travail de l'exploitation forestière dans près de 10 endroits différents

Quelqu'un at-il des conseils sur la façon dont je peux être un peu plus de ressources ici dans le code réutilisation

Merci

paul

Était-ce utile?

La solution

J'utiliser un usage général, le composant de gestion des exceptions configurable qui permet le traitement de base comme la gestion des exceptions exploitation forestière, re-jeter, etc. pour être découplé du lieu réel de manipulation. Un exemple de composant est un Microsoft de gestion des exceptions bloc d'application .

Ensuite, vous pourriez finir avec un code comme ceci:

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

CloseIfNeeded désigne une méthode d'extension personnalisée encapsulant la logique de fermeture du canal WCF, et la méthode d'exception Handle appelle le mécanisme de gestion des exceptions, en passant un nom de la politique d'exception qui sera appliquée sur ce lieu.

Dans la plupart des cas, vous pouvez réduire exception logique de gestion à une vie décente une ou deux lignes de code, vous donnant plusieurs avantages:

  • configurabilité instantané du comportement de la gestion des exceptions (politiques)
  • avec les gestionnaires d'extensibilité exception personnalisée liés à des types spécifiques de d'exceptions et des politiques d'exception
  • une meilleure gestion et la lisibilité du code
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top