L'avenir de VisualBasic
WebForms (formulaires Web), services Web (services Web) et améliorations linguistiques qui apparaîtront dans une version
Les lecteurs de cet article sont des utilisateurs déjà familiers avec Visual Basic.
Présentation : La prochaine version de Microsoft Visual Basic comporte trois améliorations principales : des améliorations des WebForms, des Webservices et de la syntaxe orientée objet. WebForms permet aux utilisateurs expérimentés de Visual Basic de développer des applications réseau aussi facilement qu'ils le font avec les programmes autonomes actuels. Grâce à l'interface SOAP, les services Web vous permettent de déployer les composants que vous concevez partout où vous avez accès à Internet. De plus, plusieurs améliorations clés des langages orientés objet rendent le code Visual Basic aussi flexible que le C, notamment l'héritage, le polymorphisme et la surcharge. Pour plus d'informations sur cet aspect, veuillez vous référer à la "VBITSkeynoteonthenextGenerationofVisualBasic" de Steve Ballmer.
isualBasic a subi de nombreuses améliorations. Mais une chose que j'aime depuis sa création, c'est que, fondamentalement, vous pouvez toujours écrire vos programmes de la même manière qu'en 1991. Bien sûr, son progiciel a été considérablement amélioré par rapport à cette époque, mais ces améliorations sont généralement supplémentaires et n'obscurcissent pas l'objectif d'être un outil de programmation lui-même. Cet objectif est : rendre Visual Basic plus facile et plus rapide. Utilisé pour concevoir, écrire. et déboguer des applications orientées objet exceptionnelles.
La version actuelle de Visual Basic 6.0 introduit les WebClasses comme moyen simplifié de configurer des applications robustes orientées réseau. En fait, les WebClasses offrent un grand nombre de façons de porter des programmes sur Internet via des outils courants. (Pour une discussion détaillée de l'évolutivité de Visual Basic 6.0 sur le réseau, voir « Advanced Basics Column » de Ted Pattison (publié par Microsoft Internet Developer en octobre 1999)
J'ai récemment eu l'occasion de prendre connaissance de certaines des nouvelles améliorations prévues pour la prochaine version de Visual Basic. La principale amélioration concerne la capacité de stockage, qui a triplé la capacité de stockage disponible pour les développeurs. La prochaine version de Visual Basic devrait proposer une fonctionnalité appelée WebForms dans l'environnement Visual Studio®. WebForms représente une nouvelle solution réseau basée sur des composants. Les services Web deviendront une nouvelle solution basée sur XML qui publie des fonctions de traitement d'événements de niveau intermédiaire via des protocoles réseau standard. Dans le même temps, le langage Visual Basic inclura certaines constructions demandées depuis longtemps par les développeurs, rendant Visual Basic cohérent avec les habitudes de programmation orientée objet familières aux utilisateurs de C et Java.
Ces améliorations seront annoncées dans la prochaine version bêta de Visual Basic. Ici, je vais donner quelques extraits de code, mais pas la solution complète. Alors de quoi faut-il s’inquiéter maintenant ? C'est simple, tant que vous êtes déterminé à profiter de ces nouvelles fonctionnalités, vous pouvez désormais concevoir vos programmes grâce à ces méthodes spécifiques et bénéficier des meilleurs exercices pratiques pour vous aider à passer en douceur à la prochaine version de Visual Basic. Même si vous ne le faites pas, vous n'avez rien à perdre tant que vous organisez vos futurs programmes selon les principes que j'expose à la fin de cet article.
VisualStudioWebForms
La prochaine version de Visual Basic fera partie de l'environnement de développement de Visual Studio et présentera probablement le nouveau concept de WebForm aux développeurs Web. Le but de l'introduction du concept WebForm est d'étendre la fonction d'accès aléatoire de Visual Basic afin que Visual Basic puisse être appliqué à l'écriture de programmes réseau ayant un impact de plus en plus large. Les développeurs utilisant n’importe quel langage dans Visual Studio peuvent partager ces WebForms Visual Studio.
Une page WebForms se compose de deux parties : un fichier HTML qui implémente l'interface visuelle de la page WebForms et un fichier source qui gère les événements de la page WebForms. Étant donné qu'un tiers des développements actuels basés sur l'environnement Visual Basic sont orientés réseau, Microsoft prévoit d'améliorer encore les capacités dans ce domaine. Dans la prochaine version de Visual Basic, vous pourrez concevoir des WebForms de la même manière que vous utilisez Visual Basic pour générer des formulaires aujourd'hui. Vous disposerez d’une boîte à outils de contrôles Web. Vous pouvez glisser et déposer des contrôles directement dans l'éditeur HTML pour les utiliser. Il vous suffit de définir leurs propriétés et d'écrire du code approprié. (Voir la figure 1). En résumé, vous pouvez effectuer ces tâches comme si vous utilisiez Visual Basic pour générer des formulaires. Vous disposerez de conceptions de formulaires et de codes compilés entièrement conformes au format IntelliSense®, WYSIWYG. Ainsi, tant que vous savez écrire des applications à l'aide de Visual Basic, WebForms vous permet de devenir développeur Web sans changer du tout votre façon de travailler.
Figure 1 : Création d'un formulaire Web en quatre étapes
WebForms s'exécute sur le serveur et transmet uniquement les formulaires au format HTML aux utilisateurs. Tout comme ActiveServerPage(asp), il ne s'agit ni d'un navigateur spécifique ni d'une application basée sur WebForm, mais l'ensemble du processus s'exécute également sur le serveur ; En fait, vous exécutez un programme qui génère une interface au format HTML 3.2 pour les utilisateurs distants. Contrairement aux pages Web ASP, ces codes sont compilés et exécutés au lieu d'être interprétés, ce qui améliore considérablement la vitesse d'exécution.
Le but de la conception de WebForms est d'obtenir les meilleures fonctionnalités d'ASP et de WebClass. Vous pouvez utiliser n'importe quel langage de la famille Visual Studio pour générer des WebForms. Ainsi, vous pouvez utiliser ce que vous savez pour écrire des applications Web efficaces et orientées serveur.
Webservices
Les services Web constituent la deuxième amélioration majeure apportée par le système d'outils de développement Visual Studio. À la base, un service Web est un gestionnaire d'événements de niveau intermédiaire publié via un protocole réseau standard. Puisqu'ils utilisent HTTP comme mécanisme de transport (voir Figure 2), ils peuvent communiquer via des pare-feu. Vous pouvez simplement créer plusieurs services Web dans une application Web à condition que les URL soient attribuées de manière appropriée. Lorsque le programme est en cours d'exécution, les appels entre tous ces composants internes sont automatiquement empaquetés et appelés via l'interface XML. Les développeurs peuvent écrire et utiliser des services Web sur n'importe quelle plateforme et dans n'importe quelle langue. Si vous avez besoin de confidentialité, vous pouvez utiliser SecureSocketLayer (SSL) ou une technologie de vérification standard.
Figure 2Architecture des services Web
Si tout cela commence à vous sembler familier, c’est un bon point de départ. Le mécanisme utilisé pour transférer les données entre les composants est SOAP, le Simple Object License Protocol. DonBox a présenté SOAP en détail dans le magazine MSDN™ publié en mars 2000.
Toutes ces nouvelles fonctionnalités sont conçues pour permettre aux développeurs d'applications Web de composer des services Web existants et réutilisables afin qu'ils puissent écrire leurs applications plus rapidement sans avoir à les écrire à partir de zéro à chaque fois. Cela inaugurera une nouvelle ère pour les fournisseurs de codes de programmes et les développeurs de programmes.
Grâce à la prochaine version de Visual Basic, vous pourrez bientôt publier et implémenter les fonctions dans un projet spécifique sous forme de Webservice. Vous connaissez peut-être le processus de création d'une classe Visual Basic publique. Il y aura un nouveau logo dans la prochaine version de Visual Basic, temporairement appelé webpublic. Cela signifie que le programme sera publié en tant que Webservice. Il peut non seulement être utilisé par les projets locaux qui en ont besoin via l'interface COM, mais peut également servir n'importe quel programme réseau faisant référence à son adresse URL. Tout comme vous pouvez ajouter une référence à un objet public dans un nouveau projet, vous pouvez ajouter une référence à un programme réseau et l'utiliser comme s'il s'agissait d'un programme local.
Bien entendu, le mécanisme de fonctionnement est quelque peu différent. Visual Basic peut résoudre les références aux objets locaux via l'interface COM. Lorsque vous ajoutez une référence à un service réseau à votre application, l'objet distant génère automatiquement la définition d'interface et l'envoie à l'environnement de développement Visual Studio à l'aide du protocole SOAP. Bien que ceux-ci soient générés sous forme XML, vous n'avez pas à effectuer vous-même aucun travail de connexion. VisualBasic le gérera automatiquement pour vous. Après avoir reçu la définition de l'interface, vous pouvez utiliser IntelliSense comme si vous aviez écrit du code faisant référence à l'objet.
Voici un exemple simple. Dans certains cas, vous souhaiterez peut-être écrire cette fonction appelée Seahawks, qui peut ressembler au code suivant :
PublicFunctionSeahawks(ByValopponentAsString)AsString
Seahawks = "perdre"
FinFonction
Si le projet que vous construisez inclut cette fonction, Visual Basic générera automatiquement une description au format XML de cette fonction et la publiera sur Internet.
<?xmlversion='1.0'?>
<methodshref='http://julian/Football/Teams'>
<methodname='Seahawks'href='Seahawks'>
<demande>
<paramdt='string'>adversaire</param>
</demande>
<responsedt='string'/>
</méthode>
</méthodes>
Ce fichier XML sera utilisé pour décrire les fonctions des Seahawks. Si vous utilisez l'environnement de développement Visual Studio, vous pouvez glisser-déposer n'importe quel service Web publié directement dans l'application pour créer une nouvelle classe. Si vous souhaitez appeler un Webservice n'importe où sur Internet, il vous suffit de créer une instance de la classe contenant le Webservice puis d'appeler ses méthodes publiées.
Lorsque la fonction Seahawks est appelée, elle communique automatiquement via des paquets XML. Si vous utilisez Microsoft® Internet Explorer 5.0 (qui inclut la prise en charge XML), vous pouvez essayer d'exécuter cette fonction dans votre navigateur. Vous pouvez également appeler cette fonction en utilisant l'adresse URL comme suit :
http://julian/webservice1/component1.methods/Seahawks?opponent=Miami
Il renverra les données au format XML comme suit :
<?xmlversion="1.0"?>
<Réponse>perdre</Réponse>
Afin de faciliter le développement de Webservices, Visual Basic introduira un nouveau type d'objet, WebService. Vous pouvez concevoir et déployer votre WebService sur un service distant aussi simplement qu'en créant un fichier DLL local maintenant.
Améliorations linguistiques
Il existe depuis longtemps une relation tendue entre les programmeurs qui préfèrent Visual Basic et ceux qui préfèrent d'autres langages plus « sophistiqués ». Plus d'une fois, j'ai défendu mon langage de programmation préféré contre les accusations selon lesquelles il s'agit d'un « langage jouet » et que Visual Basic manque de fonctionnalités POO.
D'accord, alors devinez ce qui s'est passé ? La prochaine version de Visual Basic mettra enfin fin à leurs plaintes. Microsoft prévoit d'ajouter trois fonctionnalités majeures à la programmation orientée objet : l'héritage, le polymorphisme et la surcharge. Ce n'est pas tout ! Des constructions supplémentaires, notamment la gestion structurée des erreurs et la navigation, seront également introduites dans le langage Visual Basic.
La fonctionnalité d'héritage vous permet de concevoir une classe de base, puis d'écrire des classes dérivées qui héritent des fonctions de la classe de base. Cela peut gagner du temps et améliorer la réutilisabilité du programme. Par exemple, vous écrivez une classe de base appelée BaseClass qui a une fonction :
FonctionGetCustomerName()
'Dosomestuff
FinFonction
Vous souhaitez maintenant écrire une autre classe qui puisse appeler la fonction GetCustomerName de la classe de base, tout comme sa propre fonction. Quelle était l’ancienne méthode ? Cela n'était pas possible dans le passé. Cependant, la nouvelle méthode ne nécessite désormais que l’insertion d’une simple ligne au-dessus de la nouvelle classe :
HériteBaseClass
FonctionGetCustomerID()
'Dosomestuff
FinFonction
L'écriture de deux fonctions ou plus avec le même nom mais des identifiants différents est appelée surcharge. Dans une certaine mesure, Visual Basic a implémenté une surcharge dans la conversion des types internes et la définition des propriétés lors de l'appel de fonctions. Comparez les deux lignes suivantes de code Visual Basic valide :
Texte1.Texte="7"
Texte1.Texte=7
Dans les deux appels, le texte de Text1 sera défini sur la chaîne « 7 ». Il s'agit d'un appel surchargé car Visual Basic sait comment gérer les différents types de données de l'entrée. Il les traite comme des variables et les convertit automatiquement. Lorsque vous appelez certaines fonctions avec des types de paramètres clairement définis, Visual Basic effectuera également la même conversion. Les deux appels de fonction suivants :
a=SetVal("Ceci")
a=ValeurDéfinie(7)
Les fonctions suivantes peuvent être appelées correctement :
FunctionSetVal(xAsString)
Form1.Text1.Text=x
FinFonction
Puisque Visual Basic peut déjà transférer de nombreux types de variables différents, pourquoi avez-vous besoin de fonctions de surcharge ? En effet, même si une seule fonction peut actuellement gérer plusieurs types de données, elle ne peut pas produire différentes actions basées sur les différents types de données transmis. Comparez plutôt les deux fonctions suivantes :
FunctionGetCustomerID(custnameasstring)AsInteger
'Rechercher l'ID client en fonction du nom du client
FinFonction
FunctionGetCustomerID (purchaslong) AsInteger
'Rechercher l'ID client en fonction de l'achatSECommande
FinFonction
Grâce à la surcharge, vous pouvez implémenter des fonctions basées sur le type de données d'entrée. Ceci est très important pour la prochaine version de Visual Basic, car elle comporte une nouvelle fonctionnalité : la protection du type de données par défaut. Généralement, la conversion automatique des variables est bénéfique, mais vous pouvez imaginer que cela peut parfois vous poser des problèmes. Par exemple, dans l'exemple précédent de SetVal, que se passerait-il si vous souhaitiez transmettre le caractère 7 au lieu de la chaîne « 7 » ? La prochaine version de Visual Basic détectera automatiquement cette erreur. (Si votre code est basé sur la précédente fonctionnalité non sensible au type de Visual Basic, cette fonctionnalité sera désactivée)
Enfin, le polymorphisme est le processus de redéfinition d'une classe déjà définie. Par exemple, vous souhaitez écrire une classe dérivée de la classe BaseClass, mais vous souhaitez réécrire la fonction GetCustomerName. Dans la prochaine version de Visual Basic, vous pourrez implémenter cette définition de classe en utilisant une nouvelle méthode similaire à la suivante : (Remarque : la syntaxe finale dépend de la version officielle)
HériteBaseClass
FonctionGetOrders()
OverridesFunctionGetOrders()
•••
FinFonction
Plus de fonctionnalités de syntaxe
La prochaine version de Visual Basic pourrait comporter bien plus que les améliorations orientées objet que j'ai mentionnées ci-dessus. Il existe également la génération de threads, la gestion des erreurs et de nombreuses nouvelles améliorations tant attendues en matière d'évolutivité et de réutilisation.
Actuellement, Visual Basic prend en charge le modèle cloisonné. Bien que ce modèle offre une réelle efficacité pour le développement d’applications, il n’est pas idéal. La prochaine version de Visual Basic comportera des améliorations dans ce domaine. Il utilise un modèle freethread, qui sera utile lors de l'écriture d'applications réseau évolutives. Visual Basic inclura également certaines constructions de syntaxe que vous pourrez utiliser pour générer plusieurs threads. Les opérations typiques se produisant sur les threads sont les suivantes :
sett=NouveauThread(NouveauThreadstart
(AdresseDe(BaseClass.Function1))
À partir de cet exemple, vous pouvez voir que la prochaine version de Visual Basic possède la structure AddressOf, qui est utilisée pour renvoyer l’adresse de la fonction. Vous n'êtes plus obligé de sauter les fonctions API qui nécessitent des pointeurs de fonction ! Si vous avez besoin d’un retour d’appel, vous pouvez l’utiliser pour le faire.
Une autre amélioration prévue est la gestion structurée des erreurs. Il n'y a pas si longtemps, Visual Basic vous obligeait à insérer de nombreuses instructions OnError dans votre code. Pendant des années, j'ai été mal à l'aise avec l'insertion d'autant d'instructions GOTO. Ces déclarations m’ont averti à plusieurs reprises de ne plus les utiliser ! Maintenant, regardons le problème en face : nous avons besoin d'un mécanisme de gestion des erreurs.
La prochaine version de Visual Basic centralisera la gestion des erreurs. VisualBasic prendra en charge la construction try...catch...finally comme ces langages "nobles". Vous pouvez placer un sous-programme contenant la gestion des erreurs en haut de votre code. Voici un exemple d’implémentation de la gestion des erreurs :
SubSafeWrite()
Essayer
Ouvrir "Fichier de test"
•••
Écrire #1
Attraper
Tuer "Testfile"
Enfin
Fermer#1
FinEssayer
FinSub
Il existe d'autres améliorations intéressantes avec lesquelles les utilisateurs actuels de Visual Basic se familiariseront. Dans la prochaine version de Visual Basic, vous pourrez initialiser les variables en même temps qu'elles sont déclarées :
Nombre entier = 10
Vous pouvez également créer et initialiser un nouvel objet dans une expression. Vous pouvez également partager des variables via des classes. Enfin, mais pas seulement, la notion d'héritage s'étend aux fondements de l'interface utilisateur du projet. L’une des critiques typiques de Visual Basic est qu’il rend difficile la création de nombreux formulaires différents basés sur la même base. (C'est souvent une exigence dans un environnement de développement conjoint). Dans la prochaine version de Visual Basic, vous pourrez le faire via des types de modèles.
Ces améliorations sont attendues depuis des années. Pourquoi ? Voyons. Les communications de Visual Basic (que je fais depuis près d'une douzaine d'années) sont devenues de plus en plus complexes, bien au-delà de la première version de 1991. Visual Basic était à l’origine utilisé pour la conception et le développement rapides de petits prototypes d’outils portables à ses débuts. En conséquence, Visual Basic a acquis une réputation (inattendue, à mon avis) de « langage jouet ». Maintenant que ce n’est clairement plus un jouet, quiconque dit cela agit par préjugé aveugle. Il existe désormais un grand nombre de progiciels basés sur Visual Basic dans divers domaines. VisualBasic évolue. L'année dernière, au Centre de recherche, j'ai discuté avec un développeur de logiciels qui écrivait des programmes utilisant Web-Class qui recevaient des millions de visites par semaine.
Les changements dans la prochaine version de Visual Basic sont surprenants. Si vous souhaitez bénéficier des avantages qu’ils apportent, utilisez-les. Si vous ne le souhaitez pas, vous pouvez utiliser en toute confiance ce que vous utilisez encore. Cependant, il est bon de savoir que les fonctions assurées par C et Java peuvent être implémentées dans un langage comme Visual Basic qui est beaucoup plus facile à utiliser que C et Java.
Tendances de développement futures
Quelle impression vous a laissé cette présentation en avant-première ? C'est une bonne question, mais vous pouvez y trouver la réponse. Au cours de l'année écoulée, nous pouvons clairement constater les changements dans le développement ASP. Ces programmes de développement consistent souvent en des scripts ASP faciles à lire, et l'ensemble du programme est exécuté sur la base de ces scripts. Étant donné qu'ASP interprète et exécute l'intégralité du code du script, lors de l'assemblage de chaque composant, les utilisateurs découvrent progressivement les limites inhérentes à cette technologie. J'entends de plus en plus de développeurs dire qu'ils souhaitent séparer complètement leurs gestionnaires d'événements du code de script et les implémenter sous un modèle de compilation plus rapide, écrit en C++ ou Visual Basic, via l'interface COM pour l'assemblage.
Pour toutes les raisons auxquelles vous pouvez penser, Visual Basic peut y répondre. Concevoir des composants avec Visual Basic n'est en réalité pas plus difficile que d'utiliser VBScript ou JScript®. Vous pouvez écrire du code qui s’exécute plus rapidement et répond facilement à vos exigences. Lorsque la prochaine version de Visual Basic sera publiée, vous pourrez utiliser Visual Basic pour générer des objets orientés réseau compatibles avec ASP. En bref, opter pour la combinaison de composants sera considéré comme le meilleur choix aujourd’hui et à l’avenir.
Comme je l'ai mentionné plus tôt, il existe une large base d'applications orientées Internet écrites à l'aide de Visual Basic (et de WebClasses). Le problème est que la plupart des applications basées sur les WebClasses ne sont pas bien conçues. Ils ne font pas bien la distinction entre les différentes couches de l'application, confondant les processus de niveau intermédiaire avec les interfaces utilisateur basées sur DHTML.
La prochaine version de Visual Basic introduira les WebClasses, qui sont des outils soigneusement sélectionnés pour le développement Web. Parce qu'il est plus évolutif, plus puissant et véritablement indépendant du langage. Cela fonctionne sur tous les outils de Visual Studio. Si vous prêtez attention à certaines règles de base du développement multicouche, vous pouvez effectuer cette transition facilement. Une attention particulière doit être accordée à la séparation du processus de couche intermédiaire et du processus de couche d'affichage. Il est fortement recommandé de se référer à l'architecture Windows® DNA2000 lors de la réalisation de ces tâches. Les fonctions principales de traitement des événements doivent être complétées dans la couche intermédiaire et vous pouvez utiliser divers composants écrits dans votre langage compilé préféré pour implémenter ces fonctions. Ces composants sont ensuite assemblés dans un fichier de script ASP afin qu'ils puissent fonctionner ensemble. Ce serait idéal si vous mettiez l'essentiel de votre logique dans des objets événementiels plutôt que dans des scripts. Non seulement c'est une bonne idée pour les futures transitions vers les services Web, mais c'est aussi une pratique qui mérite d'être imitée. ->