IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Firebird Discussion :

Développement UDF en C#


Sujet :

Firebird

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Développement UDF en C#
    Bonjour à toutes et à tous,

    Je souhaite développer une UDF Firebird (v2.1) en .Net C#.
    J'ai lu sur des sites web que cela était possible mais je ne trouve aucun exemple.
    Je cherche un prototype qui fonctionne pour la création de ma DLL.

    J'ai essayé le code C# suivant mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ClassLibrary2
    {
        public class TestUDF
        {
            public int Multiply (int Arg2)
            {
                return Arg2 * 2;
            }
        }
    }
    et dans Firebird :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION UDF_TEST
    INTEGER
    RETURNS INTEGER BY VALUE
    ENTRY_POINT 'Multiply' MODULE_NAME 'ClassLibrary2.dll';
    Firebird retroune le résultat suivant :
    Invalid token.
    invalid request BLR at offset 60.
    function UDF_TEST is not defined.
    module name or entrypoint could not be found.
    La DLL se trouve dans le dossier suivant de WindowsXP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\Firebird\Firebird_2_1\UDF\ClassLibrary2.dll
    Les UDF livrées avec Firebird fonctionnent et j'ai décommenté UDFACCESS dans le fichier de configuration, puis redémarré le service.

    Quelqu'un pourrait-il m'éclairer sur le sujet ?
    D'avance merci,
    Cordialement,
    Alex01

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Franchement je pense que c'est une mauvaise idée, ne serait que pour des raison de portablilité
    le jour où tu utilisera autre chose que Windows pour ton serveur Firebird, tu aura plus de difficultés à porter ton code, C et C++ sont les meilleurs langages pour les UDF

    et puis, moins on utilise d'UDF, mieux on se porte.
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Bonsoir,

    Je suis d'accord avec toi, mais l'application qui est développée autour de Firebird est écrite en C# (Framework 3.5) ce qui, de toute manière, ne permettra pas de portablité vers un autre OS.

    L'UDF que je souhaite écrire aura un role bien précis dans l'appplication et ne sera utilisée que de manière ponctuelle, donc pas de problème pour les performances si c'est cela qui t'inquiète.

    Par contre, aurais tu une solution / explication me premettant de l'écrire en C# ?

    Si cela n'est pas possible, ou si je ne trouve pas d'explication, effectivement je me tournerai vers C++ ou delphi.

    Merci pour ta remarque
    Bien cordialement,
    Alex01

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par Alex01 Voir le message
    Je suis d'accord avec toi, mais l'application qui est développée autour de Firebird est écrite en C# (Framework 3.5) ce qui, de toute manière, ne permettra pas de portablité vers un autre OS.
    et alors, le client certe, mais rien n'empêche d'interroger un serveur Firebird sur un autre OS

    désolé, je ne cause pas C#
    mais en plus franchement, se trimbaler toute la quincaillerie dotnet pour une simple UDF ....

    les UDF sont des nids à bug en général
    plus elles sont simples, moins elles mettent en oeuvre de chose, moins elles ont de dépendances, mieux on se porte
    C ou C++ sont les meilleurs choix et le vrai meilleur choix c'est pas d'UDF
    les UDF sont consommatrices de ressources, bien plus que toutes les fonctions internes.
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Bonsoir Philippe et merci de ta réponse.

    Oui, tu as probablement raison au niveau des UDF, ça doit être un nids à bug mais elles ont quand même leur utilité pour certain développement.
    Malgré tout, Je serais quand même curieux de faire fonctionner une UDF en C#.
    Bref, je développerai mon UDF en C++.

    Encore merci pour tes conseils,
    Bien cordialement,
    Alex01

Discussions similaires

  1. Développer des fonctions scalaires (UDF) avec PLpgSQL
    Par SQLpro dans le forum Débuter
    Réponses: 1
    Dernier message: 20/06/2011, 10h09
  2. Comment Développer en équipe ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 45
    Dernier message: 19/11/2007, 00h15
  3. Quel outil choisir pour un développement SQL-Server ?
    Par Mouse dans le forum Débats sur le développement - Le Best Of
    Réponses: 23
    Dernier message: 12/08/2003, 06h23
  4. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo