Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Service WCF, autorisations et données [ Divers / General ] (Kevin.Ory)

vendredi 18 juillet 2008 à 20:28:37 | Service WCF, autorisations et données

Kevin.Ory

Bonsoir,

J'ai dans l'idée de me mettre au développement d'un MMORPG "low-speed". Voici la structure:

- Client (Silverlight et/ou appli WPF)
- Service WCF
- Donnée (BDD SQL?)
Le client fera donc appel au service WCF pour obtenir les données. Le problème, c'est que je n'ai absolument aucune expérience en base de donnée, et je ne vois pas trop comment gérer tout ça.

1.Tout d'abord, est ce qu'un service WCF est multi-threadé? Autrement dis, si 2 appels (par 2 clients différents) arrive en même temps sur un service, est ce que le service répondra aux 2 clients en même temps ou l'un après l'autre? C'est dans le but de clarifier l'accès aux données. Si ce n'est pas multithreadé, on peut par exemple écrire dans un fichier XML sans risquer de le faire 2 fois en même temps.

2. La base de donné. Comment faire? J'avais dans l'idée de faire un serveur SQL dans le but de rendre accessible les données sans forcément devoir passer par le service WCF (depuis un site web PHP/ASP par ex). Mais, est-ce la meilleur solution? Si la réponse à ma 1ère question (Service multi-threadé?) est non, ne serait-il pas plus performant d'accéder directement à un fichier de base de donnée (.mdf ou .xml) à partir du service sans devoir passer par un serveur SQL? (de plus ca permettrait de ne pas être limité par le nombre de BDD dispo chez un hébergeur) Un serveur php/asp pourra-t-il accéder à un service WCF? En passant, j'ai l'intention d'accéder aux bases de données avec LINQ.

3. Les autorisations. Mouarf, c'est compliqué, j'ai rien compris
Un utilisateur devra se loguer avec un nom d'utilisateur et un mot de passe. Ensuite, les données renvoyé par le service devra dépendre de l'utilisateur, et les données des autres utilisateur ne devront pas être accessible. Bref, c'est du standard pour un site web php/asp, mais moi je n'y connais rien
J'ai vu qu'on peut spécifier plusieurs type d'authentifications / autorisations dans WCF, par exemple une authentification Windows ou une authentification d'appartenance d'ASP.NET, qui serait le mieux adapté à 1ère vue. Certificat? Entitée? Instance du service? Liaison / répartiteur / hôte? Pfou...
J'ai vu que WCF pouvait gérer les authentifications par nom/password automatiquement avec une base de donnée, mais je ne sais rien de plus à ce sujet.
Bref, je n'attend pas vraiment de réponse à cette question, je vais devoir approfondir mes connaissances à ce sujet avant de savoir de quoi je parle. Mais si vous avez des tutos qui parle d'authentifications et d'autorisations en sens général (histoire que je comprenne comment tout ceci fonctionne), il sont le bienvenu (même si ça parle de ASP ou PHP, je suppose que ça peut m'aider...)

4. Que se passe-il lorsque un client s'authentifie sur un service? Il recoit un certificat? ..qu'il devra réenvoyer à chaque requete au service pour que celui-ci sache de qui il s'agit?

5. Que pensez vous de l'idée général de ce projet? Faisable ou pas?

Par expérience, j'ai peur de ne pas avoir beaucoups de réponses pour toutes mes questions (car mes questions sont souvent complexes ou trop abstraites)

Merci d'avance...

PS. Ce projet me permettra de me familiariser avec WCF, LINQ et SQL, et pouquoi pas devenir un projet concret / lucratif par la suite.

vendredi 18 juillet 2008 à 22:10:35 | Re : Service WCF, autorisations et données

nhervagault

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Regardes les webcasts du techdays 2008 sur le site microsoft.com/france/vision

En particulier le projet Vinci (WCF + securite + sqlserveur + wpf)
Le projet astoria linq + webservice

Ces deux projets te donnerons des pistes pour faire ton projet.

Bon courage

samedi 19 juillet 2008 à 19:43:26 | Re : Service WCF, autorisations et données

Kevin.Ory

Merci de ta réponse,

J'ai donc passé la nuit à regarder des webcasts ^^
Je n'ai pas trouvé grand chose pour les accès aux données (sql) mais j'ai vu d'autre choses très intéressante. Malheureusement, suite à ces information, j'ai cherché plus de détail au sujet de la communication entre une appli Silverlight et un service, et il semblerait que le seul type de binding compatible avec SilverLight soit BasicHttpBinding. BasicHttpBinding utilise une communication Soap1.1, ce qui rend impossible les accès asynchrones, et surtout, rend impossible les sessions (ne me demandez pas pourquoi).
Et sans session, on ne va pas loin. A moins de renvoyer les informations de comptes à chaque requête, je ne vois pas de solution. Pour tout dire, je suis déçu de cette limitation, je pense donc développer une appli WPF Windows pour commencer, en espérant que d'autre type de binding soit compatible avec la prochaine version de Silverlight. Mon but était d'offrir l'appli WPF seulement aux joueurs payant un abonnement, appli qui comportera plus de fonctions que l'appli Silverlight, notamment grâce à une communication binaire avec le service qui est beaucoup plus performante (plus rapide, duplex, session...).

Au niveau de l'accès aux données, encore une fois grâce à la "magie" de .NET, il importe peu que j'accède à un fichier mdf, xml ou à un serveur sql, puisque LINQ s'utilise de la même façon quel que soit la source de données. Autrement dis, il sera facile de changer la source de données (par ex de xml à serveur sql) sans devoir modifier la moindre ligne de code du service. (sauf si je commence à faire des spécialités pour simuler des sessions avec Silverlight)

Pour info, une session est très facile à utiliser. En fait il y aura une instance persistante du service pour chaque client, toutes les variables locale seront donc persistantes. Il suffit par exemple de déclarer une variable locale UserName pour pourvoir filtrer toute les requêtes suivante en fonction du joueur connecté.

Pour ce qui est de l'authentification (authentication), c'est apparemment un truc géré en parallèle qui n'a rien à voir avec le type de binding (sauf erreur). Mais grâce aux sessions, l'authentification est très facile à faire même manuellement je pense. Mais je vais encore me renseigner à ce sujet.


Merci encore, et affaire à suivre...

samedi 19 juillet 2008 à 20:02:22 | Re : Service WCF, autorisations et données

nhervagault

Administrateur CodeS-SourceS
Réponse acceptée !
Salut

Silverligth peut utiliser JSON
cf
http://weblogs.asp.net/mschwarz/archive/2007/06/01/silverlight-and-json-isolatedstorage-example.aspx

Les sessions peuvent etre remplacées par l'isolate storage de silverligth

Je n'ai pas creuser Silverligth (jamais utilisé c'est des pistes que tu peux suivre)

Bon courage



samedi 19 juillet 2008 à 21:41:34 | Re : Service WCF, autorisations et données

Kevin.Ory

JSON j'ai vu ça ouais, mais je n'y vois pas d'avantages par rapport à un codage XML (BasicHttpBinding). Donc à part pour rendre le service compatible avec des clients utilisant JSON, je n'en vois pas l'utilité...

Pour l'isolate storage, je ne suis pas d'accord (corrige-moi si je me trompe). Stocker des infos c'est bien, mais mon but principal est de pouvoir identifier le client à partir du service pour définir les accès aux données. (Chaque client recevra des infos différente en accédant au même service, c'est comme la page des paramètres du compte de CodeS-SourceS). Une donnée sur le client ne permettra donc pas au service de savoir à qui il a affaire. Sauf si, comme je l'ai dis avant, ces données sont ré-envoyé à chaque requête, ce qui complique tout et laisse des portes ouverte aux pirates (il ne faut surtout pas qu'un client ait accès à des données ne le concernant pas).

samedi 19 juillet 2008 à 22:16:14 | Re : Service WCF, autorisations et données

Kevin.Ory

Je corrige ce que j'ai dis précédemment:

"Grâce à LINQ, le code du service ne changera pas suivant à quel type de base de données on accède"

=> Faux. Sauf erreur, LINQ ne gère que la recherche/filtrage, mais pas l'ajout et la modification des données

Mais j'ai trouvé un truc pas mal sur l'authentification:
http://blogs.msdn.com/pedram/archive/2007/10/05/wcf-authentication-custom-username-and-password-validator.aspx

samedi 19 juillet 2008 à 22:28:54 | Re : Service WCF, autorisations et données

nhervagault

Administrateur CodeS-SourceS
Je pense que tu te trompes linq supporte la mise a jour

http://msdn.microsoft.com/en-us/library/bb399339.aspx



samedi 19 juillet 2008 à 23:10:24 | Re : Service WCF, autorisations et données

nhervagault

Administrateur CodeS-SourceS
Réponse acceptée !
Je viens de voir qu'un message n'a pas été posté.
(je l'avais préparé mais pas posté ;-)
Json est moins volumineux sur le reseau que du SOAP (Car les balises de fin xml on disparu)

Pour l'isolate, bien sur qu'il faut identifier tojours le user.

Une partie des variables peuvent etre dans l'isolate storage de silverligth sur le client.
(non sur le serveur) exemple un caddi dans un site de ecommerce, le stockage d'autre information

Apres pour etre identifié sur le serveur par WCF (Pascal Belaud si mais souvenir sont bon a mis en place un truc pour le projet VINCI)

http://blogs.developpeur.org/tom/archive/2007/06/15/silverlight-et-si-on-parlait-un-peu-s-curit.aspx
http://michaelsync.net/2008/03/27/uploading-with-silveright-2-beta-1-and-wcf


Bon courage

dimanche 20 juillet 2008 à 00:08:12 | Re : Service WCF, autorisations et données

Kevin.Ory

"Je pense que tu te trompes linq supporte la mise a jour"
Effectivement :) Et pour l'ajout et la suppression, on utilise des "procédures stockés" accessible par un contexte, sauf erreur.

"Json est moins volumineux sur le reseau que du SOAP (Car les balises de fin xml on disparu)"
OK, très bon argument :)

Pour la suite, je vais voir...
Encore et toujours merci  ^^

vendredi 1 août 2008 à 22:39:37 | Re : Service WCF, autorisations et données

Kevin.Ory

Bon, après tout ce temps je reviens pour dire ou j'en suis.
J'ai assez bien compris le fonctionnement de WCF. Reste qq doutes, mais c'est normal, je verrai tout ça avec de la pratique.
C'est un niveau SQL que ça coince, j'avoue ne pas comprendre grand chose à Sql Server. Mais ne voulant pas être bloqué par ça, j'utilise actuellement des fichiers binaires comme sources de données pour mes services. Si le projet devait se concretiser, il ne sera pas bien compliqué pour qqun de compétent dans le domaine de modifier le code pour accéder à une base de données SQL.

Les WebCast m'ont beaucoup aidé pour me mettre sur la voie.
Merci nhervagault pour ta participation..



Cette discussion est classé dans : asp, données, service, autorisations, wcf


Répondre à ce message

Sujets en rapport avec ce message

base de données asp [ par kwed ] bonjour à tous,j'ai une base de donnée access sur intranet et j'utilise les fonctions d'asp pour faire des recherches, des ajouts, des suppressions et FORM en ASP à mettre en .txt URGENT !!! [ par Zenway ] J'aimerais récupérer les données d'un formulaire HTML, et les écrires dans un fichier TXT selon ce format :Nom = ...; Prenom = ...; etc...J'arrive bie ASP et informix [ par MsgBox ] Je veux extraire des données d'une base de donnée Informix, ces données seront visualisé sur un site dynamique. Est ce possible ? (ASP MySQL FrontPage) accès refusé [ par Geronimo ] Mon site WEB avec base de données MySQL, DSN, fonctionne très bien en local. Lorsque je tente d'accéder à la base de données sur le serveur distant, a probleme de MAJ en ASP dans une base de données ACCESS 97 [ par shadowmaster ] voila mon probleme :je programme un site intranet en ASP avec la gestion d'une base de données derriere. ma connexion à la base de données (ACCESS 97) récupération de données [ par glopglop ] Salut avec une page, page1.asp, j'envoie une valeur a une autre page, résultat.asp.Je voudrait reecuperer cette valeur et surtout l'afficher!Pour le m ASP.NET-Datalist Rappatrier les données [ par steph95 ] Bonjour,Je veux utiliser une datalist pour récupérer et modifier mes données (enV. 4500 sous MDB).Mais la datalist ne me ramène qu'une seule donnée ré Probleme pour inserer des données dans sql par un web service! [ par kiki18 ] Bonjour,quelqu'un saurait-il comment on réalise un web service très simple pour insérer des données dans une base de sql server. Et dans ce cas me dir Receuillir des données sur un site en .asp [ par Rifer ] J'aimerais receuillir des information sur un site internet en .asp puis les envoyer dans un caption Et si vous savez comment placer une image dans un Extraction de données vers Excel, tri, puis réinjection... [ par Chauve ] Bonjour, je suis débutant en VB et j'ai un problème assez costaud (pour mon niveau) à résoudre. J'ai un fichier Excel dans lequel se trouve, en vrac,


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.