[DLL] Bibliothèque de classes + service de composants ?
7 réponses
Loupinet
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve
pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via
une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis
mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais
comme d'habitude : inscrire celle-ci dans le service de composants du
serveur web. Or ce dernier me renvoi le message comme quoi mon fichier
"ne contient pas de composant ou de bibliothèque de types". L'exécutable
regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la
sorte :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Loupinet
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe COM" ou "Composant transactionnel"... j'y est cru, mais le problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais comme d'habitude : inscrire celle-ci dans le service de composants du serveur web. Or ce dernier me renvoi le message comme quoi mon fichier "ne contient pas de composant ou de bibliothèque de types". L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la sorte :
'-- Partie ajoutée suites recherches, '-- n'a aucun effet sur mon problème Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables Dim MaVariable as String
'-- Constructeur Public Sub New(ByVal MaValeur as string) Me.MaVariable = MaValeur End Sub
'-- Méthodes Function MaFonction() As Boolean ... End Function
End Class **************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien y fait, impossible d'inscrire la DLL dans le service de composants !
Help !
Loupinet, en galère...
Je viens de découvrir qu'on peut "ajouter une classe" en tant que
"Classe COM" ou "Composant transactionnel"... j'y est cru, mais le
problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve
pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via
une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis
mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais
comme d'habitude : inscrire celle-ci dans le service de composants du
serveur web. Or ce dernier me renvoi le message comme quoi mon fichier
"ne contient pas de composant ou de bibliothèque de types". L'exécutable
regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la
sorte :
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe COM" ou "Composant transactionnel"... j'y est cru, mais le problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais comme d'habitude : inscrire celle-ci dans le service de composants du serveur web. Or ce dernier me renvoi le message comme quoi mon fichier "ne contient pas de composant ou de bibliothèque de types". L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la sorte :
'-- Partie ajoutée suites recherches, '-- n'a aucun effet sur mon problème Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables Dim MaVariable as String
'-- Constructeur Public Sub New(ByVal MaValeur as string) Me.MaVariable = MaValeur End Sub
'-- Méthodes Function MaFonction() As Boolean ... End Function
End Class **************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien y fait, impossible d'inscrire la DLL dans le service de composants !
Help !
Loupinet, en galère...
Loupinet
Personne n'a d'idée ?
Loupinet a écrit :
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe COM" ou "Composant transactionnel"... j'y est cru, mais le problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais comme d'habitude : inscrire celle-ci dans le service de composants du serveur web. Or ce dernier me renvoi le message comme quoi mon fichier "ne contient pas de composant ou de bibliothèque de types". L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la sorte :
'-- Partie ajoutée suites recherches, '-- n'a aucun effet sur mon problème Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables Dim MaVariable as String '-- Constructeur Public Sub New(ByVal MaValeur as string) Me.MaVariable = MaValeur End Sub
'-- Méthodes Function MaFonction() As Boolean ... End Function
End Class **************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien y fait, impossible d'inscrire la DLL dans le service de composants !
Help !
Loupinet, en galère...
Personne n'a d'idée ?
Loupinet a écrit :
Je viens de découvrir qu'on peut "ajouter une classe" en tant que
"Classe COM" ou "Composant transactionnel"... j'y est cru, mais le
problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve
pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient
via une page web ASP. Habitué de ce genre de manipulation avec VB6 je
suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais
comme d'habitude : inscrire celle-ci dans le service de composants du
serveur web. Or ce dernier me renvoi le message comme quoi mon fichier
"ne contient pas de composant ou de bibliothèque de types".
L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la
sorte :
'-- Partie ajoutée suites recherches,
'-- n'a aucun effet sur mon problème
Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables
Dim MaVariable as String
'-- Constructeur
Public Sub New(ByVal MaValeur as string)
Me.MaVariable = MaValeur
End Sub
'-- Méthodes
Function MaFonction() As Boolean
...
End Function
End Class
**************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais
rien y fait, impossible d'inscrire la DLL dans le service de composants !
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe COM" ou "Composant transactionnel"... j'y est cru, mais le problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais comme d'habitude : inscrire celle-ci dans le service de composants du serveur web. Or ce dernier me renvoi le message comme quoi mon fichier "ne contient pas de composant ou de bibliothèque de types". L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la sorte :
'-- Partie ajoutée suites recherches, '-- n'a aucun effet sur mon problème Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables Dim MaVariable as String '-- Constructeur Public Sub New(ByVal MaValeur as string) Me.MaVariable = MaValeur End Sub
'-- Méthodes Function MaFonction() As Boolean ... End Function
End Class **************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien y fait, impossible d'inscrire la DLL dans le service de composants !
Help !
Loupinet, en galère...
Fabien Bezagu
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer une DLL (donc on peut supposer que tu pars de rien) et tu parles d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple : il faut ajouter la référence à ton projet Web et faire, si besoin, un import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
"Loupinet" a écrit dans le message de news: 431c16a2$0$19428$
Personne n'a d'idée ?
Loupinet a écrit :
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe COM" ou "Composant transactionnel"... j'y est cru, mais le problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais comme d'habitude : inscrire celle-ci dans le service de composants du serveur web. Or ce dernier me renvoi le message comme quoi mon fichier "ne contient pas de composant ou de bibliothèque de types". L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la sorte :
'-- Partie ajoutée suites recherches, '-- n'a aucun effet sur mon problème Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables Dim MaVariable as String '-- Constructeur Public Sub New(ByVal MaValeur as string) Me.MaVariable = MaValeur End Sub
'-- Méthodes Function MaFonction() As Boolean ... End Function
End Class **************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien y fait, impossible d'inscrire la DLL dans le service de composants !
Help !
Loupinet, en galère...
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer
une DLL (donc on peut supposer que tu pars de rien) et tu parles
d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés
en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je
pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne
fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple :
il faut ajouter la référence à ton projet Web et faire, si besoin, un import
du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
"Loupinet" <loupinet@gmail.com> a écrit dans le message de news:
431c16a2$0$19428$636a15ce@news.free.fr...
Personne n'a d'idée ?
Loupinet a écrit :
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe
COM" ou "Composant transactionnel"... j'y est cru, mais le problème
persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve
pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via
une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis
mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais
comme d'habitude : inscrire celle-ci dans le service de composants du
serveur web. Or ce dernier me renvoi le message comme quoi mon fichier
"ne contient pas de composant ou de bibliothèque de types". L'exécutable
regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la
sorte :
'-- Partie ajoutée suites recherches,
'-- n'a aucun effet sur mon problème
Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables
Dim MaVariable as String
'-- Constructeur
Public Sub New(ByVal MaValeur as string)
Me.MaVariable = MaValeur
End Sub
'-- Méthodes
Function MaFonction() As Boolean
...
End Function
End Class
**************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien
y fait, impossible d'inscrire la DLL dans le service de composants !
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer une DLL (donc on peut supposer que tu pars de rien) et tu parles d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple : il faut ajouter la référence à ton projet Web et faire, si besoin, un import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
"Loupinet" a écrit dans le message de news: 431c16a2$0$19428$
Personne n'a d'idée ?
Loupinet a écrit :
Je viens de découvrir qu'on peut "ajouter une classe" en tant que "Classe COM" ou "Composant transactionnel"... j'y est cru, mais le problème persiste :'-(((
Moi même a écrit :
Bonjour à tous !
Je suis depuis quelques jours sur un problème pour lequel je ne trouve pas de solution qui pourtant, j'en suis sur, en plus qu'évidente :o))
Je cherche à créer une DLL appeler la maigre classe qu'elle contient via une page web ASP. Habitué de ce genre de manipulation avec VB6 je suis mis en déroute avec VB.NET.
Pour pouvoir instancier l'objet de la DLL via une page ASP, je fais comme d'habitude : inscrire celle-ci dans le service de composants du serveur web. Or ce dernier me renvoi le message comme quoi mon fichier "ne contient pas de composant ou de bibliothèque de types". L'exécutable regsrv.exe ne trouve pas non plus de point d'entrée.
Ma bibliothèque de classe contient un module de classe structuré de la sorte :
'-- Partie ajoutée suites recherches, '-- n'a aucun effet sur mon problème Inherits System.ComponentModel.Component
'-- Définitions de types + déclaration variables Dim MaVariable as String '-- Constructeur Public Sub New(ByVal MaValeur as string) Me.MaVariable = MaValeur End Sub
'-- Méthodes Function MaFonction() As Boolean ... End Function
End Class **************************************
J'ai tenté la compilation normal + "Inscrire pour COM Interop" mais rien y fait, impossible d'inscrire la DLL dans le service de composants !
Help !
Loupinet, en galère...
Loupinet
Ok, je crois que je vais revenir en arrière dans mon problème pour que vous compreniez mieux ce que je cherche à faire (j'aurais du commencer par ça :o))
J'essaye de mettre à jour une vieille application web, c'est à dire :
1 site en ASP (VBScript). 1 DLL créée avec VB6 en tant qu'ActiveX/COM inscrite dans le service de composants Windows Server. (Le script ASP fait appel à ce composant COM via "Server.CreateObject")
J'entrepends donc de profiter des possibilités offertes par .NET via Visual Studio .NET (avec quoi je débute) pour mettre à jour la DLL et la rendre plus performante.
Je fais donc ma petite classe que je teste d'abord en application, tente de la passer en DLL ensuite pour espérer l'appeler de la même manière (Server.CreateObject) avec l'ASP.
Si je comprends bien ce que vous me dites... il serait préférable de mettre à jour mon appli ASP vers un projet web .NET (ASPX) pour utiliser correctement (et facilement) cette DLL ?
Avez-vous une adresse qui explique clairement et simplement tout le mic-mac des assemblys, namespaces... etc ?
Merci pour votre aide ;-)
Benjamin
Fabien Bezagu a écrit :
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer une DLL (donc on peut supposer que tu pars de rien) et tu parles d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple : il faut ajouter la référence à ton projet Web et faire, si besoin, un import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
Ok, je crois que je vais revenir en arrière dans mon problème pour que
vous compreniez mieux ce que je cherche à faire (j'aurais du commencer
par ça :o))
J'essaye de mettre à jour une vieille application web, c'est à dire :
1 site en ASP (VBScript).
1 DLL créée avec VB6 en tant qu'ActiveX/COM inscrite dans le service de
composants Windows Server.
(Le script ASP fait appel à ce composant COM via "Server.CreateObject")
J'entrepends donc de profiter des possibilités offertes par .NET via
Visual Studio .NET (avec quoi je débute) pour mettre à jour la DLL et la
rendre plus performante.
Je fais donc ma petite classe que je teste d'abord en application, tente
de la passer en DLL ensuite pour espérer l'appeler de la même manière
(Server.CreateObject) avec l'ASP.
Si je comprends bien ce que vous me dites... il serait préférable de
mettre à jour mon appli ASP vers un projet web .NET (ASPX) pour utiliser
correctement (et facilement) cette DLL ?
Avez-vous une adresse qui explique clairement et simplement tout le
mic-mac des assemblys, namespaces... etc ?
Merci pour votre aide ;-)
Benjamin
Fabien Bezagu a écrit :
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer
une DLL (donc on peut supposer que tu pars de rien) et tu parles
d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés
en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je
pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne
fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple :
il faut ajouter la référence à ton projet Web et faire, si besoin, un import
du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Ok, je crois que je vais revenir en arrière dans mon problème pour que vous compreniez mieux ce que je cherche à faire (j'aurais du commencer par ça :o))
J'essaye de mettre à jour une vieille application web, c'est à dire :
1 site en ASP (VBScript). 1 DLL créée avec VB6 en tant qu'ActiveX/COM inscrite dans le service de composants Windows Server. (Le script ASP fait appel à ce composant COM via "Server.CreateObject")
J'entrepends donc de profiter des possibilités offertes par .NET via Visual Studio .NET (avec quoi je débute) pour mettre à jour la DLL et la rendre plus performante.
Je fais donc ma petite classe que je teste d'abord en application, tente de la passer en DLL ensuite pour espérer l'appeler de la même manière (Server.CreateObject) avec l'ASP.
Si je comprends bien ce que vous me dites... il serait préférable de mettre à jour mon appli ASP vers un projet web .NET (ASPX) pour utiliser correctement (et facilement) cette DLL ?
Avez-vous une adresse qui explique clairement et simplement tout le mic-mac des assemblys, namespaces... etc ?
Merci pour votre aide ;-)
Benjamin
Fabien Bezagu a écrit :
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer une DLL (donc on peut supposer que tu pars de rien) et tu parles d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple : il faut ajouter la référence à ton projet Web et faire, si besoin, un import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
Fabien Bezagu
> J'essaye de mettre à jour une vieille application web, c'est à dire :
1 site en ASP (VBScript). 1 DLL créée avec VB6 en tant qu'ActiveX/COM inscrite dans le service de composants Windows Server. (Le script ASP fait appel à ce composant COM via "Server.CreateObject")
Je n'avais effectivement pas compris tout cela. Maintenant, c'est clair.
J'entrepends donc de profiter des possibilités offertes par .NET via Visual Studio .NET (avec quoi je débute) pour mettre à jour la DLL et la rendre plus performante.
Il s'agira alors certainement plus d'une refonte de la DLL que d'une simple mise à jour. La différence est de taille puisque les deux technologies sont très différentes.
Je fais donc ma petite classe que je teste d'abord en application, tente de la passer en DLL ensuite pour espérer l'appeler de la même manière (Server.CreateObject) avec l'ASP.
Les DLL .NET de base ne s'enregistrent pas. Il faut, pour pouvoir les utiliser à partir d'ancienne technologie comme COM, créer un wrapper CCW (COM Callable Wrapper). Le principe est d'encapsuler la classe .NET dans un composant COM. Dans MSDN ou Google, tu trouveras plus d'info à ce sujet.
Si je comprends bien ce que vous me dites... il serait préférable de mettre à jour mon appli ASP vers un projet web .NET (ASPX) pour utiliser correctement (et facilement) cette DLL ?
Ce serait effectivement plus simple mais il faut considérer le temps passé pour la migration. Parfois, il est impossible de faire une migration. C'est pour cela que MS a inventé les CCW.
Avez-vous une adresse qui explique clairement et simplement tout le mic-mac des assemblys, namespaces... etc ?
Je n'ai pas d'adresse mais Google est ton ami :-) Cependant, AMHA, tu ne pourras acquérir une très bonne compréhension du framework qu'après la lecture de bons bouquins. Je peux te conseiller quelques titres si tu veux.
Fabien
Merci pour votre aide ;-)
Benjamin
Fabien Bezagu a écrit :
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer une DLL (donc on peut supposer que tu pars de rien) et tu parles d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple : il faut ajouter la référence à ton projet Web et faire, si besoin, un import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
> J'essaye de mettre à jour une vieille application web, c'est à dire :
1 site en ASP (VBScript).
1 DLL créée avec VB6 en tant qu'ActiveX/COM inscrite dans le service de
composants Windows Server.
(Le script ASP fait appel à ce composant COM via "Server.CreateObject")
Je n'avais effectivement pas compris tout cela. Maintenant, c'est clair.
J'entrepends donc de profiter des possibilités offertes par .NET via
Visual Studio .NET (avec quoi je débute) pour mettre à jour la DLL et la
rendre plus performante.
Il s'agira alors certainement plus d'une refonte de la DLL que d'une simple
mise à jour. La différence est de taille puisque les deux technologies sont
très différentes.
Je fais donc ma petite classe que je teste d'abord en application, tente
de la passer en DLL ensuite pour espérer l'appeler de la même manière
(Server.CreateObject) avec l'ASP.
Les DLL .NET de base ne s'enregistrent pas. Il faut, pour pouvoir les
utiliser à partir d'ancienne technologie comme COM, créer un wrapper CCW
(COM Callable Wrapper). Le principe est d'encapsuler la classe .NET dans un
composant COM. Dans MSDN ou Google, tu trouveras plus d'info à ce sujet.
Si je comprends bien ce que vous me dites... il serait préférable de
mettre à jour mon appli ASP vers un projet web .NET (ASPX) pour utiliser
correctement (et facilement) cette DLL ?
Ce serait effectivement plus simple mais il faut considérer le temps passé
pour la migration. Parfois, il est impossible de faire une migration. C'est
pour cela que MS a inventé les CCW.
Avez-vous une adresse qui explique clairement et simplement tout le
mic-mac des assemblys, namespaces... etc ?
Je n'ai pas d'adresse mais Google est ton ami :-) Cependant, AMHA, tu ne
pourras acquérir une très bonne compréhension du framework qu'après la
lecture de bons bouquins. Je peux te conseiller quelques titres si tu veux.
Fabien
Merci pour votre aide ;-)
Benjamin
Fabien Bezagu a écrit :
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à
créer une DLL (donc on peut supposer que tu pars de rien) et tu parles
d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET
compilés en DLL ne sont pas enregistrables comme l'étaient les DLL
ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu
dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple
: il faut ajouter la référence à ton projet Web et faire, si besoin, un
import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
> J'essaye de mettre à jour une vieille application web, c'est à dire :
1 site en ASP (VBScript). 1 DLL créée avec VB6 en tant qu'ActiveX/COM inscrite dans le service de composants Windows Server. (Le script ASP fait appel à ce composant COM via "Server.CreateObject")
Je n'avais effectivement pas compris tout cela. Maintenant, c'est clair.
J'entrepends donc de profiter des possibilités offertes par .NET via Visual Studio .NET (avec quoi je débute) pour mettre à jour la DLL et la rendre plus performante.
Il s'agira alors certainement plus d'une refonte de la DLL que d'une simple mise à jour. La différence est de taille puisque les deux technologies sont très différentes.
Je fais donc ma petite classe que je teste d'abord en application, tente de la passer en DLL ensuite pour espérer l'appeler de la même manière (Server.CreateObject) avec l'ASP.
Les DLL .NET de base ne s'enregistrent pas. Il faut, pour pouvoir les utiliser à partir d'ancienne technologie comme COM, créer un wrapper CCW (COM Callable Wrapper). Le principe est d'encapsuler la classe .NET dans un composant COM. Dans MSDN ou Google, tu trouveras plus d'info à ce sujet.
Si je comprends bien ce que vous me dites... il serait préférable de mettre à jour mon appli ASP vers un projet web .NET (ASPX) pour utiliser correctement (et facilement) cette DLL ?
Ce serait effectivement plus simple mais il faut considérer le temps passé pour la migration. Parfois, il est impossible de faire une migration. C'est pour cela que MS a inventé les CCW.
Avez-vous une adresse qui explique clairement et simplement tout le mic-mac des assemblys, namespaces... etc ?
Je n'ai pas d'adresse mais Google est ton ami :-) Cependant, AMHA, tu ne pourras acquérir une très bonne compréhension du framework qu'après la lecture de bons bouquins. Je peux te conseiller quelques titres si tu veux.
Fabien
Merci pour votre aide ;-)
Benjamin
Fabien Bezagu a écrit :
Loupinet,
Il y a visiblement une incohérence dans ce que tu dis : tu cherches à créer une DLL (donc on peut supposer que tu pars de rien) et tu parles d'interopérabilité COM. .NET n'est pas COM et les assemblages .NET compilés en DLL ne sont pas enregistrables comme l'étaient les DLL ActiveX/COM. Je pense que c'est de là que vient ton problème puisque tu dis que regsvr32 ne fonctionne pas...et c'est logique.
Si ta DLL est effectivement un assemblage .NET, alors rien de plus simple : il faut ajouter la référence à ton projet Web et faire, si besoin, un import du namespace.
Reviens nous dire si j'ai bien compris ton problème...
Fabien
Loupinet
Fabien Bezagu a écrit :
Ce serait effectivement plus simple mais il faut considérer le temps passé pour la migration. Parfois, il est impossible de faire une migration. C'est pour cela que MS a inventé les CCW.
La migration ne sera pas longue, à peine le temps de me faire la main en fait, l'application web fait 2 pages + la DLL ;-)
Je n'ai pas d'adresse mais Google est ton ami :-) Cependant, AMHA, tu ne pourras acquérir une très bonne compréhension du framework qu'après la lecture de bons bouquins. Je peux te conseiller quelques titres si tu veux.
Ok pour Google, j'ai maintenant un nouvel élément de recherche ("COM Callable Wrapper") :o)) Ok pour les livres également !
Merci, tout ça s'éclaircit petit à petit !
Benjamin
Fabien Bezagu a écrit :
Ce serait effectivement plus simple mais il faut considérer le temps passé
pour la migration. Parfois, il est impossible de faire une migration. C'est
pour cela que MS a inventé les CCW.
La migration ne sera pas longue, à peine le temps de me faire la main en
fait, l'application web fait 2 pages + la DLL ;-)
Je n'ai pas d'adresse mais Google est ton ami :-) Cependant, AMHA, tu ne
pourras acquérir une très bonne compréhension du framework qu'après la
lecture de bons bouquins. Je peux te conseiller quelques titres si tu veux.
Ok pour Google, j'ai maintenant un nouvel élément de recherche ("COM
Callable Wrapper") :o))
Ok pour les livres également !
Ce serait effectivement plus simple mais il faut considérer le temps passé pour la migration. Parfois, il est impossible de faire une migration. C'est pour cela que MS a inventé les CCW.
La migration ne sera pas longue, à peine le temps de me faire la main en fait, l'application web fait 2 pages + la DLL ;-)
Je n'ai pas d'adresse mais Google est ton ami :-) Cependant, AMHA, tu ne pourras acquérir une très bonne compréhension du framework qu'après la lecture de bons bouquins. Je peux te conseiller quelques titres si tu veux.
Ok pour Google, j'ai maintenant un nouvel élément de recherche ("COM Callable Wrapper") :o)) Ok pour les livres également !
Merci, tout ça s'éclaircit petit à petit !
Benjamin
Fabien Bezagu
> Ok pour les livres également !
Deux bons livres mais c'est peut-être pas utile de les avoir tous les deux : - Pratique de .NET et C#, de Patrick Smacchia chez O'Reilly. Il ne me quitte jamais, c'est mon préféré. Très complet, à la fois sur le framework mais aussi sur C#. - Programmer MS .NET Framework, de Jeffrey Richter (traduit) chez MS Press - Dunod. Plus exhaustif sur le framework avec des chapitres qui sont des must de clarté (sur le Garbage Collector notamment) mais des sujets presque pas abordés (l'interoperabilité par exemple).
A toi de voir et bonne lecture
Fabien
> Ok pour les livres également !
Deux bons livres mais c'est peut-être pas utile de les avoir tous les deux :
- Pratique de .NET et C#, de Patrick Smacchia chez O'Reilly. Il ne me quitte
jamais, c'est mon préféré. Très complet, à la fois sur le framework mais
aussi sur C#.
- Programmer MS .NET Framework, de Jeffrey Richter (traduit) chez MS Press -
Dunod. Plus exhaustif sur le framework avec des chapitres qui sont des must
de clarté (sur le Garbage Collector notamment) mais des sujets presque pas
abordés (l'interoperabilité par exemple).
Deux bons livres mais c'est peut-être pas utile de les avoir tous les deux : - Pratique de .NET et C#, de Patrick Smacchia chez O'Reilly. Il ne me quitte jamais, c'est mon préféré. Très complet, à la fois sur le framework mais aussi sur C#. - Programmer MS .NET Framework, de Jeffrey Richter (traduit) chez MS Press - Dunod. Plus exhaustif sur le framework avec des chapitres qui sont des must de clarté (sur le Garbage Collector notamment) mais des sujets presque pas abordés (l'interoperabilité par exemple).