Page 1 sur 1

réseau à distance

Publié : lun. 03/nov./2014 23:58
par omega
Bonjour,

Un de mes clients m'a appelé ce matin pour me dire qu'il venait de créer un show room en plus de son ancien magasin de vente. Son show room se trouve à environ 1km plus loin que son magasin. Ce client utilise un de mes logiciels, au niveau de son magasin de vente, depuis plus de 3 ans déjà. Aujourd'hui, il souhaite travailler sous réseau (un serveur au niveau du magasin, un poste au niveau du magasin et un poste au niveau du show room). Bien entendu, il veut travailler au réel, c'est à dire les 2 postes peuvent accéder à tout moment à la même base de données sans que l'un gêne l'autre (pas de blocage pas de lenteur etc..), il souhaite que les deux agents utilisent le même logiciel et la même source de données.

Voilà, j'avoue que je n'ai jamais travaillé sur réseau à distance. Quelqu'un a une idée ?

Merci de votre aide

Re: réseau à distance

Publié : mar. 04/nov./2014 0:09
par falsam
Une base de données mysql hébergée sur un serveur non mutualisé et une application Pure Basic utilisant un wrapper mysql.

Le coût du serveur est inférieur à 10 euros par mois. ça ne doit pas être insurmontable pour ton client.

Re: réseau à distance

Publié : mar. 04/nov./2014 0:27
par omega
Oui, mais quel type de réseau dois-je utiliser (intranet? internet? par téléphone? faut il installer un modem?), besoin de détails plus précis.
Merci pour ton aide Falsam

Re: réseau à distance

Publié : mar. 04/nov./2014 0:36
par falsam
Une simple connexion internet suffit.

je suis allé un peu vite dans mon propos précédent: Tu peux aussi utiliser une base de donnée postgresql et dans ce cas pas besoin de wrapper.

La gestion des bases de données postgresql est native avec Pure Basic.

Re: réseau à distance

Publié : mar. 04/nov./2014 1:10
par Ollivier
@omega,

bonjour, tu peux aussi te renseigner auprès de
RS-Composants
pour transmettre tes données en 2.4 GHz crypté.

Inconvénients:
Il y a des normes à respecter sur les lieux publics. Il faut donc bien se renseigner.
Tu es garant de la maintenance.
A toi de programmer l'interface.
Bémol avec ton code APE.

Avantages:
C'est un transfert de budget. 10 euros par mois, c'est pour toi uniquement pour la location/maintenance de ton système matériel au client. Au bout de deux ans, tu es positif si tu as fait le bon choix du matériel et le bon choix sur sa mise en oeuvre (protection météorologique, protection électrotechnique, etc...)
En terme de fiabilité réseau, s'il n'y a pas une montagne, un monument, un relais (militaire ou civil) entre les deux sites client, tu t'éviteras de faire le tampon entre ton client et un fournisseur.
1 kilomètre à vol d'oiseau, c'est la limite max pour une antenne de 8cm.

Re: réseau à distance

Publié : mar. 04/nov./2014 2:18
par falsam
Un petit exemple pour illustrer mon propos précédent.

J'ai ouvert un compte free (10 mo web) chez alwaysdata et j'ai crée une base de données PostgreSQL (falsam_bd01) contenant une seule table (jeux) pour gérer une liste de jeux.
CREATE TABLE jeux (
idauto integer NOT NULL,
titre text,
editeur text,
annee integer
);
la table contient 4 titres.

:idea: Contrairement à Sqlite, il faut un nom d'utilisateur et un mot de passe pour accéder à une base de données PostgreSQL.

Utilisateur : falsam_01
password   : purebasicdemo (lecture seule)


Voici un code permettant de lister le contenu de la table jeux.

Code : Tout sélectionner

UsePostgreSQLDatabase()

Enumeration
  #Database
EndEnumeration

Global ReqSql.s, Buffer.s

;Connection à la base de données PostgreSQL
If OpenDatabase(#Database, "host=postgresql1.alwaysdata.com port=5432 dbname=falsam_bd01", "falsam_01", "purebasicdemo", #PB_Database_PostgreSQL)
  Debug "Connected to PostgreSQL"
  
  ;Execution d'une requête de sélection
  ReqSql="select * from jeux order by annee asc"
  DatabaseQuery(#Database, ReqSql)
  
  ;Affichage du résultat
  If DatabaseQuery(#Database, ReqSql)
    While NextDatabaseRow(#Database)
      Buffer = GetDatabaseString(#Database, 1)              ; Titre du jeu
      Buffer + " (" + GetDatabaseString(#Database, 2)       ; Editeur
      Buffer + " - " + GetDatabaseLong(#Database, 3) + ")"  ;Année 
      
      Debug Buffer
    Wend
  EndIf  
  
  ;Fermeture de la base de données 
  CloseDatabase(#Database)
  
Else
  Debug "Connection failed: "+DatabaseError()
EndIf
Comme tu peux le constater : Une simple connexion internet suffit.

Pour ouvrir un compte : http://www.alwaysdata.com (Hébergement mutualisé 10 Mo)

Re: réseau à distance

Publié : mar. 04/nov./2014 18:30
par omega
@falsam

=============================================================================================
If OpenDatabase(#Database, "host=postgresql1.alwaysdata.com port=5432 dbname=falsam_bd01", "falsam_01", "purebasicdemo", #PB_Database_PostgreSQL)

=============================================================================================

Tout le problème est là justement cher falsam. Si j'arrive à bien comprendre ce petit code, alors je peux dire que j'avance à 80% !

Je sais que je suis un peu embêtant mais une petite explication me sera d'une grande utilité.

If OpenDatabase(#Database, ===>>(ça je l'ai bien compris)
host=postgresql1.alwaysdata.com===>>(là, je crois qu'il s'agit de l'url mais ...)
port=5432 ===>> comment savoir ce n° de port? est ce toujours 5432?? hum...
dbname=falsam_bd01 ===>> c'est sûrement la base de données qui nous intéresse mais où se trouve elle? j'espère qu'elle ne se trouve pas dans un espace web le mieux serait qu'elle se trouve dans le pc-serveur présent au niveau du magasin de vente??
falsam_01, ===>> je crois que c le mot de passe (d'après la syntaxe)
purebasicdemo == >> là je vois pas ..

Merci pour ton aide falsam

Re: réseau à distance

Publié : mar. 04/nov./2014 19:01
par falsam
omega a écrit :If OpenDatabase(#Database, ===>>(ça je l'ai bien compris)
Ouf tant mieux :)
omega a écrit :host=postgresql1.alwaysdata.com===>>(là, je crois qu'il s'agit de l'url mais ...)
Oui c'est bien l'url ou est stocké la base de données de démonstration.
omega a écrit :port=5432 ===>> comment savoir ce n° de port? est ce toujours 5432??
C'est le port TCP/IP sur lequel postgres attend les connexions des applications clientes. Par défaut cette valeur est habituellement égale à 5432.
omega a écrit :dbname=falsam_bd01 ===>> c'est sûrement la base de données qui nous intéresse mais où se trouve elle? j'espère qu'elle ne se trouve pas dans un espace web le mieux serait qu'elle se trouve dans le pc-serveur présent au niveau du magasin de vente??
C'est bien la base de données (je le précise dans mon explication précédente) et elle se trouve chez un hébergeur.

Tu peux bien sur monter un serveur PostgreSQL dans le magasin mais son accés doit se faire à travers une adresse ip fixe.
omega a écrit :falsam_01, ===>> je crois que c le mot de passe (d'après la syntaxe)
Non c'est le nom de l'utilisateur pouvant se connecter sur le serveur.
omega a écrit :purebasicdemo == >> là je vois pas ..
C'est le mot de passe de l'utilisateur (Hum tu ne lis pas bien mes explications :) )

Tu as peur des serveurs externalisés ?

Re: réseau à distance

Publié : mar. 04/nov./2014 21:40
par omega
Merci beaucoup pour ces précieuses informations.

J'ai une dernière question (et j'espère que la réponse sera OUI, sinon, c 'est la catastrophe !)

Ma question: supposons que j'ai un site internet qui existe et qui est opérationnel. Serait-il possible d'héberger ma base de données dans ce site au lieu d'utiliser un serveur externalisé? (j'espère que ce n'est pas une question trop bête??)

Merci

Re: réseau à distance

Publié : mar. 04/nov./2014 22:25
par falsam
Si ton site internet est hébergé par un fournisseur d'hébergement, alors tu es sur un serveur externalisé.

Si c'est le cas, regarde si tu as l'option création d'une base de données PostgreSQL
Si oui vérifie que cette base est accessible depuis une application client. L'application client est celle que tu auras développée avec Pure Basic comme le code exemple que j'ai posté.

En règle générale la plupart des hébergement mutualisés ne permette pas de communication entre une application client et une base de données hébergée sur ce type de serveur (sauf rare exception comme le site que je cite)

Si cette condition est remplie alors OUI tu peux le faire :)

N'hésite pas à poser tes questions sur ce sujet.

Re: réseau à distance

Publié : mer. 12/nov./2014 21:00
par omega
Merci pour tout

Re: réseau à distance

Publié : sam. 20/déc./2014 4:09
par microdevweb
A mon sens si ton client préfère la base de donnée peut également être stockée sur le serveur (local) du client, et via une IP fixe (voir site spécialisés) consultable par internet. (J'ai déjà fais cela mais en Windev et base hyperfile serveur).

Attention également au blocage du record, je ne penses pas que postgresql gère le blocage automatique. Il faudra donc le programmer.

Moi pour l’hébergement je travaille généralement avec https://www.kalanda.net, mais ils ne font pas postgresql

Re: réseau à distance

Publié : lun. 22/déc./2014 20:57
par omega
@MicroDevWeb

Justement, j'ai pensé à cette possibilité, mais je ne l'ai pas encore testée. 1 serveur au niveau du poste client, et 2 postes utilisateurs distants (poste A et poste B qui accèdent à la base qui se trouve dans le serveur S), une adresse IP fixe est nécessaire dans ce cas pour éviter la mise à jour des adresses ip toutes les 24 heures. Pour ce qui est du blocage record, il n'y a pas de problème bien que j'utilise une base de données sqlite qui ne permet pas le partage automatique mais je n'ai pas de soucis de ce côté là puisque j'utilise une routine qui s'occupe de cette opération. D'ailleurs, au niveau du réseau local, ça marche parfaitement.

Maintenant j'ai un petit problème, où dois-je placer mon exécutable ? Est ce que je dois réfléchir comme si c'était un réseau local? En réseau local, le lecteur réseau est connu pour chaque poste (généralement z:\) et on peut voir l'arborescence sur le poste de travail mais est ce que c pareil pour le réseau à distance??

Merci

Re: réseau à distance

Publié : mar. 23/déc./2014 1:26
par microdevweb
Bonsoir omega,

Dans le cas d'une base de donnée par un hébergeur, il faudra installé l’exécutable sur chaque poste client ou passé par une appli web (tu ne saura pas lancer l'exe).
Dans le cas d'une Ip fixe il y moyen de faire un réseau, mais la solution la plus facile est d'installé l’exécutable sur chaque poste client (tu n'est pas obligé de l'installé sur le serveur sauf si il agit comme client également) et d'agir comme si la basse de donnée était hébergée. Bien que n'ayant pas vraiment beaucoup travaillé avec postgresql, ce moteur de BD à vraiment l'air très puissant (procédure stockée sur le serveur et déclenchable par timer ou événement).