Question

J'ai une telle structure

projet - WebUI contrôleurs, vues Cadre des dépôts de couche de service et domaine

Alors maintenant, j'ai 3 méthodes / classes

  1. Ouvrir Id / Open auth

Au début, je pensais que je mettrais toute ma logique dans une couche de service dans mon projet-cadre (préparation de la demande, la vérification de la réponse et etc serait dans cette couche).

Alors maintenant, je suis en utilisant la bibliothèque dotnetopenauth et parce que je dois utiliser la méthode AsActionResult dans mon contrôleur (je reviens « OutgoingWebResponse » de ma couche de service que je ne veux rien MVC dans mes couches de service)

Il me fait penser quand je décidé de ne pas avoir quoi que ce soit MVC dans ma couche de service. Comme ce que je lis est que votre couche de service qui contient votre logique d'affaires ne devrait pas avoir de dépendances comme références MVC parce que si vous allez à une application Windows Phone vous ne devriez pas utiliser des choses MVC.

Votre couche d'affaires devrait être une sorte de plug and play dans une application.

Alors maintenant, je ne sais pas si je devrais passer ce que j'ai écrit pour OpenId dans mes modèles dossier dans mon mvc projectjust pour les raisons ci-dessus. Depuis si je vais à une application d'application Windows Phone ou les formes que je ne vais pas utiliser dotnetopenauth puisque je ne pense pas qu'il est pris en charge dans ces types d'applications.

  1. Mon deuxième est avec l'authentification par formulaire. Encore une fois à peu près mêmes raisons que ci-dessus. Si cela aller aussi bien dans le dossier mes modèles en tant que couche service local / repo (dans le même fichier de projet).

  2. J'utilise NHibernate, nhiberate fluide et ninject. Mes prises en pension sont tous dans mon projet-cadre. J'ai donc bien sûr toutes les références là-dedans. Mais depuis que je me sers pour ninject cio avoir toutes les références dans mon projet webui ainsi.

Je n'ai pas la moindre idée si celui-ci pourrait être modifié pour se débarrasser de ces références de mon webui. Je pense pas parce qu'ils je ne peux pas avoir mon coi dans mon webui où je pense que ça devrait aller.

Était-ce utile?

La solution

En règle générale, vous ne devriez pas écrire du code par rapport aux exigences qui n'existent pas (portage de l'application sur un téléphone Windows).

Normalement, vous auriez résumé ceci dans votre couche de service cependant intégration OAuth ou Facebook pose un problème en raison de sa dépendance à l'égard http et d'être en mesure de visiter le site d'authentification.

Le problème que vous allez rencontrer parce que « toutes les abstractions sont qui fuit » est que votre couche de service sera corrompu en quelque sorte par le processus d'inscription OpenAuth quel que soit l'endroit où vous le placez. Détails sur l'enregistrement des utilisateurs et connexion tels que ce que leur URL OpenID finira dans votre base de données. Vous êtes un service / repo / db / modèle / mvc / viewmodel / contrôleurs classes sont tous vont savoir ce que OpenAuth est en raison de sa nature.

La bonne chose est ces stratégies d'authentification par navigateur peuvent vivre dans un Windows Form, WPF ou application Silverlight. Il vous suffit d'ouvrir un navigateur dans l'application au lieu de rediriger nativement avec MVC.

Alors, ce que je vous recommande est placer votre code d'enregistrement dotnetopen auth à l'intérieur de votre couche de service et abstraire fait comment le processus de redirection et de rappel se produit.

Quelque chose comme:

public interface IOpenAuthRedirect
{
      public void Redirect( url )
      public void ParseCallback( url )
}


public class MVCOpenAuthRedirect
{
     public void Redirect(url)
     {
        HttpContext.Current.Response.Redirect(url);
     }
}

public class SilverlightOpenAuthRedirect
{
    public void RedirectUrl( url )
    {
        SomeBrowserControl.IForgetTheCallToRedirect( url );
    }   

}

Maintenant, les différents détails d'implémentation sont flexibles et vous pouvez facilement passer à une autre plate-forme en plus MVC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top