Bases de données pour le développement du bureau Windows: Bienvenue dans la jungle

1Jtz3v9U6Sm5IEsiLYVZMuA.jpeg

Microsoft a oublié un détail – ou nous dit sciemment quelque chose.

Pexels

J'étais un passionné de Microsoft. Et je suis un développeur de bureau Windows. Vous pouvez juger et arrêter de lire ici. Ou vous êtes peut-être dans le même bateau et vous vous demandez pourquoi Microsoft a décidé d'abandonner le développement pour Windows.

Je suis sur le point d'expédier un application de bureau. Je suis loin de swdev depuis quelques années, mais j’ai écrit du code pour les trente dernières années. Une douzaine d'années avec .NET.

Alors, pour ma nouvelle application, j'ai opté pour l'excellent Windows Presentation Foundation. WinForms a disparu et UWP semble orphelin et confiné à Windows 10. Je connais des personnes qui achètent des applications de bureau Windows (j'en fais partie, bien sûr). Mais je ne connais personne qui les achète sur Microsoft Store, ni même vérifie cela de temps en temps, et je crains que cela ne va pas s'améliorer de si tôt. Je garde toujours mon ancien Windows Phone sur une étagère, à titre d'avertissement.

Sans dire, WPF va avec Entity Framework. Pas nécessairement, bien sûr, mais de préférence.

En tant que base de données locale, j'ai commencé avec un mdf (donc, SQL Server). Je me suis dit: «Nous verrons ce qui sera le mieux, peut-être SQL Compact ou quelque chose du genre. Ce n’est pas le problème. »En tant qu’application personnelle, il était obligatoire d’avoir une configuration unique, le tout inclus, mais cela n’a jamais été un problème dans ma vie.

Le moment des touches finales est arrivé et ce qui semblait être une "touche finale" s'est avéré être une douleur dans le cul. Je suis loin de swdev depuis un moment. Trop, peut-être.

Microsoft a oublié un détail

Ou nous dit sciemment quelque chose. Rappelez-vous que Nadella est un homme de nuage.

De nos jours, tout est en nuage – je comprends bien – mais beaucoup d’entreprises et de productivité fonctionnent toujours hors ligne. Et Microsoft était plutôt bon à ça.

Surprise – ma mauvaise –SQL Server Express nécessite une configuration séparée dans tous les cas. J'aurais dû imaginer.

Je misais sur LocalDb, la version simplifiée de SQL Server Express. De Microsoft:

«SQL Server Express LocalDB est une version allégée d’Express dotée de toutes ses fonctionnalités de programmabilité, fonctionnant en mode utilisateur, d’une installation rapide sans configuration et d’une liste succincte de conditions préalables.»

Instances utilisateur. Excellent. J'espérais aussi livrer aux utilisateurs sans droits d'administrateur.

Mais… Vous pouvez obtenir un fichier msi de LocalDb (pour pouvoir plus ou moins installation silencieuse) mais des droits d’administrateur sont requis dans tous les cas pour l’installation (utilisateur mode, pas utilisateur autorisations…) En outre, il ne peut pas être protégé par mot de passe ni crypté. Il est destiné à être utilisé par les développeurs, mais ce n'est pas pour développeurs. C'est pour temps de conception.

En quelques mots, LocalDb n’est pas exactement la base de données que l’on pouvait s’attendre de Microsoft 26 ans après l’introduction d’Access.

Mais l’histoire ne se termine pas ici. Windows 7 et x86 sont non supporté par SQL Server Express 2017. Microsoft a décidé que la moitié de mes clients potentiels possèdent un système d’exploitation obsolète (Windows 7 ne desservant toujours qu'un bon tiers des utilisateurs mondiaux d’ordinateurs de bureau / d’ordinateurs portables) et qu’il ne peut pas être adressé.

Essayez également d’installer une version antérieure de SQL Server Express – prise en charge de Windows 7 – et… elle ne peut pas ouvrir votre fichier MDF, car vous l’avez créé avec Visual Studio 2017 ou le dernier SQL Server. Aucun outil de déclassement disponible pour un problème aussi commun, ni aucune option permettant de créer un «vieux» MDF. Dans l’espoir de lire votre fichier mdf dans Windows 7, vous devez le migrer manuellement vers une version précédente – en utilisant un outil «plus ancien» de SQL Server – et renoncer à utiliser Visual Studio pour le gérer. Sensationnel. Ils auraient vraiment dû penser aux développeurs lors de la conception de ce piège.

OK, annulons. SQL Compact. Installation privée, aucun privilège administrateur requis, protection par mot de passe. Parfait.

Bien, non. SQL Compact vit toujours dans un coin sombre des serveurs Microsoft, mais depuis février 2013, il est devenu obsolète. Vous pouvez y aller, à vos risques et périls, mais Windows 8 et 10 ne sont pas dans les spécifications et zapper la configuration externe nécessite une solution de contournement. De plus, Visual Studio et SQL Server Management Studio indiquent clairement que SQL Compact est une pierre morte et oubliée. Tu es tout seul.

Plus de restauration. Accès? (Oh mon…)

Entity Framework ne prend pas en charge Access. Oui, vous l'avez lu correctement. Microsoft ne prend pas en charge sa propre base de données populaire avec son propre ORM recommandé.

Les mises en œuvre sont là, par exemple JetEntityFrameworkProvider, mais il ne supporte que le code en premier. Et c’est de bubibubi. Je suis sûr que Bubi est un excellent développeur, mais j’espérais quelque chose de plus… officiel.

J'ai déjà écrit un ORM pour Access et .NET, mais ma nouvelle application est déjà entièrement basée sur EF.

En utilisant Linq to DataSet, avec accès? Jamais utilisé, mais je suis sûr que la performance en pâtit – entre autres choses, vous devez remplir entièrement le jeu de données -, et je dois déjà faire attention à ce côté-là. Cela ne semble pas être une solution traditionnelle. Je ne suis pas prêt à faire beaucoup de travail pour avoir d’autres surprises.

Vous pouvez deviner que j'ai commencé à transpirer.

OK, sortons du territoire Microsoft. Quel est le moteur de base de données SQL autonome le plus renommé, avec l’assistance EF? SQLite, bien sûr.

Mais SQLite vient avec quelques limitations. Vous ne pouvez pas supprimer une colonne, par exemple, ou ajouter une contrainte. Imaginez prendre en charge des copies complètes de la base de données lors de chaque changement de schéma.

Et le mot de passe / cryptage ne sont pas supportés nativement par SQLite. Bien sûr, quelqu'un vous dira qu'un plugin est là pour tout. Avec quelques limitations. Mais là encore, il y a l’autre plugin, qui fonctionne différemment, ou s’annule après quelques années…

MySQL? Oracle, le concurrent le plus acharné de Microsoft. Je suis sûr qu’ils font de leur mieux pour soutenir .NET contre Java – et je n’aurai plus de surprises – mais laissez-moi m'inquiéter. Ensuite, vous devez trouver votre chemin pour une installation silencieuse, en croisant les doigts.

Et vous pouvez continuer, encore et encore… Naviguer dans de nombreuses mers et rêver de découvertes et de refactorages sans fin.

Alors?

Nous avons donc beaucoup d’options et pas de solution.

Microsoft a deux réponses claires: SQL Express sur le bureau (avec un programme d’installation séparé et volumineux, sans mot de passe, sans cryptage), ou Azure (c’est-à-dire que le cloud et qu’il n’est pas approprié pour trop d’applications de bureau).

Microsoft a oublié – ou veut oublier – les applications de bureau et leur besoin de bases de données intégrées basées sur des fichiers. Vous pouvez trouver de nombreuses options, mais il n’existe pas de solution simple et complète, clairement et entièrement prise en charge par Microsoft maintenant et à long terme.

Que vais-je faire?

Tout d'abord, je dois accepter que je n'appartiens pas à cette ère de Cloud & Chaos. Je vais probablement me battre avec ça pour le reste de ma vie.

Maintenant quoi, avec mon application de bureau?

Eh bien, je prévois d’étendre mon produit aux équipes. Donc, SQL Server est sur mon chemin, étant donné que je préfère rester sur le territoire de Microsoft, si possible. Mieux vaut commencer avec cette technologie depuis le début.

Je vais rester avec un fichier mdf, le migrer vers une version antérieure (utilisez donc un ancien serveur SQL Server) et renoncer à le gérer à partir de Visual Studio.

J'ai ensuite pensé à déployer LocalDb en mode silencieux, à l'aide de la ligne de commande msiexec, intégrée à ma configuration (étant donné que le fichier msi est fourni):

msiexec / i c: temp SqlLocalDB2017.msi

Mais… Msi ne peut pas fonctionner dans un autre msi (et j’utilise un projet d’installation de Visual Studio, que je préfère aux autres options pour de nombreuses raisons). J'ai donc décidé de l'exécuter à la première exécution de l'application (sinon, j'aurais pu écrire un wrapper d'installation ou utiliser un autre constructeur d'installation). Bien sûr, je dois

  • détecter d'éventuelles installations antérieures de SQL Server (en vérifiant le registre, puis les fichiers),
  • décider quel moteur installer (LocalDb 2014 sur Windows 7 – x86 ou x64 -, sinon LocalDb 2017 – x64 -),
  • invite l'utilisateur (qui sera certainement ravi de la configuration supplémentaire, surtout s'il s'agit d'un consommateur),
  • et probablement distribuer la / les configuration (s) SQL avec l'application, ou en tant que configuration fat optionnelle (sinon, un téléchargement LocalDb séparé sera requis).

Pas de commentaire, Microsoft.

Aucun chiffrement et les utilisateurs ne peuvent être ajoutés que par la logique d'application ou au niveau de SQL Server.

Cela fonctionne, mais je ne suis pas heureux. En outre, il m'a fallu des jours pour prendre ma décision, la mettre en œuvre et la tester.

Maintenant, si vous voulez bien m'excuser, j'ai un peu de retard sur mon travail, car je ne m'attendais pas à perdre autant de temps sur la base de données locale après 22 ans à compter du premier Visual Studio.


Bases de données pour le développement du bureau Windows: Bienvenue dans la jungle a été publié à l'origine dans Hacker midi sur Medium, où les gens poursuivent la conversation en soulignant et en répondant à cette histoire.

Source

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Faits divers

Homme accusé de la mort d’une fille de 4 ans…

Les procureurs vont demander la condamnation à mort d’un banlieusard de Chicago accusé d’avoir battu à mort une fillette...

Un chirurgien condamné à une amende de 3 000 Dollars…

Le conseil de médecine de la Floride a annoncé qu’un chirurgien de West Palm Beach avait accepté de payer...

Un ancien combattant et son épouse font don de toutes…

Un ancien combattant compatissant et son épouse font don de la quasi-totalité de leurs biens matériels aux pompiers qui...

Cette beauté jaune de la taille d’un œuf est le…

En dépit de ce que leur prix élevé suggère, les diamants ne sont pas rares. Environ 133 millions de carats , soit...

Articles recents

La bêta privée Division 2 commence le mois prochain

Ubisoft a annoncé une beta privée pour La division 2, ce qui donnera aux joueurs leur premier aperçu du nouveau paramètre. La bêta privée débute le 7 février et...

Qui est Mason Lowe? 5 faits sur le coureur de…

C'est tellement tragique. Mason Lowe, 25 ans, coureur de taureaux professionnel, a perdu la vie alors qu'il participait à un spectacle à Denver, au Colorado. Voici 5 choses à...

A découvrir

Découvrez le récit d'un homme contraint de se sous-vendre pour travailler et ne pas se résoudre à vivre aux crochets des aides sociaux pour vivre (Suivre son blog)

illusions-d-optique-video
plages-cachees-newstrotteur
personnes-incroyables-newstrotteur
endroits-mysterieux-newstrotteur
science-inexpliquees-newstrotteur
mystères_jamais-resolues

Actualité