3 votes

Pourquoi avez-vous besoin de webservices pour accéder à une base de données depuis Silverlight ?

Je suis actuellement en train d'examiner plusieurs options pour créer une nouvelle application à laquelle plusieurs utilisateurs peuvent accéder à l'aide du navigateur dans un intranet fermé.

J'ai pensé à utiliser Silverlight pour sa convivialité et son design WPF si proche des clients riches auxquels les futurs utilisateurs sont habitués.

Le projet nécessite (bien sûr) l'accès à une base de données, également au sein de l'intranet. J'ai donc parcouru l'internet pour voir comment l'accès aux données était géré. J'ai été surpris de voir qu'apparemment ont d'utiliser des services web pour interagir avec les données, comme mentionné dans ce poste SO quels points ce tutoriel (une des nombreuses façons d'utiliser les webservices).

Ayant déjà créé plusieurs clients riches au sein d'un intranet, qui interagissent tous avec une base de données, j'ai été surpris d'être obligé d'utiliser des services web.

En effet, je comprends les avantages des services web, la sécurité qu'ils offrent, et toutes les autres caractéristiques de la création d'un bon DAL en général dans l'architecture logicielle. Cependant, je ne vois pas pourquoi vous ne pouvez pas simplement créer (par exemple) une bibliothèque contenant les classes Linq to SQL et utiliser cette bibliothèque comme référence dans le projet silverlight pour accéder directement aux données comme vous pouvez le faire avec une application client riche classique. Je comprends qu'en faisant cela, vous stockez les données d'accès dans la chaîne de connexion de l'application, mais je ne vois pas pourquoi cela ne pourrait pas fonctionner avec un client silverlight.

UPDATE :

Alors, deux questions :

  1. Est-ce que nous ont pour accéder aux données par le biais de services web ?
  2. Si oui, en quoi est-elle différente de l'approche classique du client riche ?
  3. Silverlight 5 me permettra-t-il de faire une telle chose ?

10voto

Reed Copsey Points 315315

Cependant, je ne vois pas pourquoi vous ne pouvez pas simplement créer (par exemple) une bibliothèque contenant les classes Linq to SQL et utiliser cette bibliothèque comme référence dans le projet silverlight pour accéder directement aux données comme vous pouvez le faire avec une application client riche classique.

Silverlight, contrairement à WPF, n'utilise pas ou n'a pas accès à l'intégralité du .NET Framework. Il fonctionne sous son propre CLR et son propre cadre restreint.

Lors de la décision sur ce qu'il fallait inclure et ce qu'il fallait omettre, il a été décidé que tous les composants d'accès aux données étaient exclus de Silverlight. Cela rend vraiment impossible la création directe de la "bibliothèque utilisant SQL" comme mentionné ci-dessus.

En utilisant les WebServices (ou WCF, qui est vraiment la méthode préférée), il vous suffit de pouvoir créer et accéder aux références du service, ce qui est pris en charge par Silverlight.

0voto

Jeremy Points 14078

Silverlight fonctionne sur le poste de travail du client tandis que la base de données réside sur un serveur quelque part. Il y aurait toutes sortes de problèmes de sécurité si la partie qui héberge la base de données devait la rendre directement accessible au logiciel client. L'utilisation d'un mécanisme comme les services Web permet de cacher la base de données au logiciel client.

De plus, l'utilisation des services web comme méthode d'accès aux données signifie que Silverlight n'a pas besoin de connaître le fonctionnement des bases de données. Vos données peuvent donc se trouver dans un serveur sql, oracle, mysql ou même dans des fichiers plats, et cela ne fait aucune différence pour le client Silverlight. C'est vraiment une façon intelligente de faire les choses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X