2010-04-12 6 views
6

Notre architecte a parlé de l'utilisation de techniques SOA dans toute notre base de code, même sur des interfaces qui ne sont pas réellement hébergées en tant que service. L'une de ses demandes est que nous concevions nos méthodes d'interface de sorte que nous ne fassions aucune hypothèse sur l'implémentation réelle. Donc, si nous avons une méthode qui accepte un objet et qui a besoin de mettre à jour une propriété sur cet objet, nous devons explicitement renvoyer l'objet de la méthode. Sinon, nous nous appuierions sur le fait que Quelque chose est un type de référence et C# nous permet de mettre à jour les propriétés sur un type de référence par défaut.Utilisation des principes SOA sur OOD dans le code non-service

Alors:

public void SaveSomething(Something something) 
{ 
    //save to database 

    something.SomethingID = 42; 
} 

devient:

public Something SaveSomething(Something something) 
{ 
    //save to database 

    return new Something 
    { 
    //all properties here including new primary key from db 
    }; 
} 

Je ne peux pas vraiment obtenir ma tête autour des avantages de cette approche et je me demandais si quelqu'un pouvait aider?

Est-ce une approche courante?

Répondre

1

Je pense que votre architecte essaie d'obtenir moins d'effets secondaires. Dans votre exemple spécifique, il n'y a pas de bénéfice. Dans de nombreux cas, votre architecte aurait raison, et vous pouvez concevoir de grandes parties de votre application sans effets secondaires, mais cela ne peut pas se produire lors d'opérations sur une base de données. Ce que vous devez faire est de vous familiariser avec la programmation fonctionnelle, et de préparer vos conversations sur des cas comme ceux-ci avec votre architecte. Rappelez-vous que ses intentions sont probablement bonnes, mais les cas spécifiques sont VOTRE domaine. Dans ce cas, l'effet secondaire est le point, et vous voudriez probablement un type de retour de bool pour indiquer le succès, mais retourner un nouveau type n'a pas de sens. Montrez à votre architecte que vous comprenez les effets secondaires limitant, mais certains effets secondaires doivent être autorisés (base de données, interface utilisateur, accès au réseau, et cetera), et vous trouverez probablement qu'il ou elle est d'accord avec vous. Trouvez un moyen d'isoler les effets secondaires désirés et de les rendre clairs pour lui, et cela aidera votre cas. Votre architecte appréciera probablement si vous le faites dans l'esprit de collaboration (ne pas essayer de tirer des trous dans son plan).

Un couple de ressources pour FP:

  1. A great tutorial on Functional Programming
  2. Wikipedia's entry on Functional programming

Bonne chance, je l'espère, cela aide.

Questions connexes