.Net Core 3.0 à .Net 8 (C#,F#, Visual basic .Net)

Parce qu'il en faut pour tout le monde, discutez ici d'ADA, de shell et autres Wolfram...

Modérateur : Francois

Répondre
Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

.Net Core 3.0 à .Net 8 (C#,F#, Visual basic .Net)

Message par Bud Spencer » mer. 11 sept. 2019 13:55

Déjà disponible en preview, la version finale de .Net Core 3.0 devrait pointer son nez dans quelques jours. Pour ceux qui ne connaissent pas .Net Core, voici la définition qui en faite sur Wikipédia :
.NET Core (prononcé « dot net ») est un cadriciel (Framework) Libre et Open Source pour les systèmes d'exploitation Windows, macOS et Linux3. Il comprend CoreCLR, un environnement d'exécution complet de CLR, la machine virtuelle qui gère l'exécution des programmes .NET.
CoreCLR est livré avec un compilateur à la volée amélioré, appelé RyuJIT. .NET Core inclut également CoreFX, qui est un fork partiel de FCL. Bien que .NET Core partage un sous-ensemble d'API .NET Framework, il est livré avec sa propre API qui ne fait pas partie de .NET Framework. En outre, .NET Core contient CoreRT, le runtime .NET Native, optimisé pour être intégré aux fichiers exécutables natifs compilés par AOT. Une variante de la bibliothèque .NET Core est utilisée pour UWP. L'interface de ligne de commande .NET Core offre un point d'entrée d'exécution pour les systèmes d'exploitation et fournit des services de développement, tels que la compilation et la gestion des packages.


Pour résumer c’est l’implémentation moderne, open source et multi-plateforme du Framework .Net de Microsoft (qui est exploitable sous Windows par de très nombreux langages comme Ada, C#, C++,lisp, APL, Lua, Eiffel, Fortran, Haskell, Python, Ruby, JavaScript, CAML, Pascal, Visual Basic, Php, F# ect ect ect … , sous Win Linux et Mac avec le portage MONO et sur les os smartphone android, ios, winphone avec Xamarin)

Concernant la version Core elle est exploitable avec les langages C#, Visual basic et F#. Si vous n’avez pas l’expérience de ces technologies et que vous désirez vous y intéresser, je vous recommande le C# qui a l’avantage d’être syntaxiquement plutôt conventionnel et d'une richesse énorme.

Pourquoi je vous parle de ça ici ? tout simplement parce que cette version 3.0 dispose de 2 packages Dédié au PI (Entre autre).
netcore3pi.png
netcore3pi.png (45.6 Kio) Vu 10379 fois
System.Device.Gpio, qui expose des API pour utiliser le Hard du PI (les GPIO, SPI,I2C,PWM) et Iot.Device.Bindings qui prend déjà en charge quelques composants dont voici la liste actuelle:

Analog/Digital converters
ADS1115 - Analog to Digital Converter
MCP3008 - 10-bit Analog to Digital Converter
Mcp3428 - Analog to Digital Converter (I2C)

Accelerometers
ADXL345 - Accelerometer
BNO055 - inertial measurement unit
LSM9DS1 - 3D accelerometer, gyroscope and magnetometer
Sense HAT

Volatile Organic Compound sensors
AGS01DB - MEMS VOC Gas Sensor
BMxx80 Device Family

Gas sensors
AGS01DB - MEMS VOC Gas Sensor
BMxx80 Device Family

Light sensor
BH1750FVI - Ambient Light Sensor
MAX44009 - Ambient Light Sensor
TCS3472x Sensors

Barometers
BMP180 - barometer, altitude and temperature sensor
BMxx80 Device Family
LPS25H - Piezoresistive pressure and thermometer sensor
Sense HAT

Altimeters
BMP180 - barometer, altitude and temperature sensor
BMxx80 Device Family

Thermometers
BMP180 - barometer, altitude and temperature sensor
BMxx80 Device Family
Cpu Temperature
DHTxx - Digital-Output Relative Humidity & Temperature Sensor Module
HTS221 - Capacitive digital sensor for relative humidity and temperature
LM75 - Digital Temperature Sensor
LPS25H - Piezoresistive pressure and thermometer sensor
Sense HAT
SHT3x - Temperature & Humidity Sensor
Si7021 - Temperature & Humidity Sensor

Gyroscopes
BNO055 - inertial measurement unit
LSM9DS1 - 3D accelerometer, gyroscope and magnetometer
Sense HAT

Compasses
BNO055 - inertial measurement unit
HMC5883L - 3 Axis Digital Compass

Lego related devices
BrickPi3

Motor controllers/drivers
28BYJ-48 Stepper Motor 5V 4-Phase 5-Wire & ULN2003 Driver Board
DC Motor Controller
Servomotor

Inertial Measurement Units
BNO055 - inertial measurement unit
LSM9DS1 - 3D accelerometer, gyroscope and magnetometer
Sense HAT

Magnetometers
BNO055 - inertial measurement unit
HMC5883L - 3 Axis Digital Compass
LSM9DS1 - 3D accelerometer, gyroscope and magnetometer
Sense HAT

Liquid Crystal Displays
Character LCD (Liquid Crystal Display)
Hygrometers
BMxx80 Device Family
DHTxx - Digital-Output Relative Humidity & Temperature Sensor Module
HTS221 - Capacitive digital sensor for relative humidity and temperature
Sense HAT
SHT3x - Temperature & Humidity Sensor
Si7021 - Temperature & Humidity Sensor

Clocks
Realtime Clock

Sonars
HC-SR04 - Ultrasonic Ranging Module

Distance sensors
HC-SR04 - Ultrasonic Ranging Module
VL53L0X - distance sensor

Passive InfraRed (motion) sensors
HC-SR501 - PIR Motion Sensor

Motion sensors
HC-SR501 - PIR Motion Sensor

Displays
Max7219 (LED Matrix driver)
RGBLedMatrix - RGB LED Matrix
Sense HAT
Solomon Systech Ssd1306 OLED display
Ws28xx LED drivers

GPIO Expanders
Mcp23xxx - I/O Expander device family
NXP/TI PCx857x
Pca95x4 - I2C GPIO Expander

CAN BUS libraries/modules
Mcp25xxx device family - CAN bus
SocketCan - CAN BUS library (Linux only)

Proximity sensors
MPR121 - Proximity Capacitive Touch Sensor Controller

Touch sensors
MPR121 - Proximity Capacitive Touch Sensor Controller

Wireless communication modules
nRF24L01 - Single Chip 2.4 GHz Transceiver

PWM libraries/modules
Pca9685 - I2C PWM Driver
Software PWM

Joysticks
Sense HAT

Color sensors
TCS3472x Sensors

LED drivers
Ws28xx LED drivers

SPI libraries/modules
Software implementation of SPI

Ajoutons à ca System.IO.Ports.SerialPort qui permet d’utiliser les ports com

Je n’ai pas encore testé cette version (j’attends la finale release), mais j’ai déjà écrit beaucoup de chose avec les versions 1 et 2 aussi bien pour le boulot que pour jouer avec le PI. Pour ce dernier, j’avais fait le portage d’un wrapper C# que j’avais initialement écrit pour utiliser d’abord WiringPi puis la lib bcm2835 avec le Framework MONO, mais si cette version 3.0 tiens toutes ces promesses, je n’en aurais même plus besoin.


https://docs.microsoft.com/fr-fr/dotnet ... t-core-3-0

https://github.com/dotnet/iot/tree/master/src/devices
Modifié en dernier par Bud Spencer le dim. 19 nov. 2023 15:29, modifié 2 fois.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

cbalo

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par cbalo » mer. 11 sept. 2019 23:59

Bonjour,
Intéressant mais je me demande si la puissance du Pi permettra d'utiliser .Net avec suffisamment de confort.
Tu as un retour d'expérience à ce sujet ?
Merci tu retour.

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » jeu. 12 sept. 2019 15:27

Alors je ne peux bien sûr pas me prononcer sur cette version 3 que je n’ai pas encore essayé mais j’ai toujours eu d’excellents résultats sur le PI avec les versions .Net Core 2.x en wrappant soit WiringPi soit la BCM2835 (tout comme avec le Framework MONO d’ailleurs). Ce qu’il faut juste savoir, c’est que .Net Core ne peut pas être utilisé sur les PI de première génération et sur les PI 0. Ce n’est pas lié un problème de performance ou de puissance, c’est juste que le compilateur JIT pour ARM utilise des instructions qui requièrent au minimum un soc ARMv7. Dès la sortie de la finale, je ferais de toute façon toutes une batterie de tests (boulot oblige) et j’en profiterais pour essayer ces nouvelles fonctionnalités dédiées au GPIOs du PI. D’après ce que j’ai lu il y a même de très forte chance que je puisse réutiliser toutes les librairies que j’ai déjà écrites pour Windows 10 IoT pour les faire tourner sous Raspbian.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » dim. 15 sept. 2019 18:58

Iot.Device.Bindings s’est enrichi de quelques composants très intéressants depuis, notamment pour les adc mcp3xxx

MCP3001, MCP3002, MCP3004, MCP3008, MCP3201, MCP3202, MCP3204, MCP3208, MCP3301, MCP3302 et MCP3304

https://github.com/dotnet/iot/tree/mast ... es/Mcp3xxx

Ca me démange de tester en preview, mais … non. Je ne cèderais pas à la tentation :lol:
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » mar. 17 sept. 2019 11:33

Net Core 3 est passé hiers en RC-1 (release Cadidate) et Iot.Device.Bindings c'est enrichi d''un nouveau composant i2c (BH1745 Détecteur de couleurs)
https://github.com/dotnet/iot/tree/mast ... ces/Bh1745
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » lun. 23 sept. 2019 21:31

Ca y est, .Net Core 3 est passé en GA (general availability). Bon c’est clair que ce n’est pas vraiment un truc pour les noobs et cela cible plutôt le monde pro, mais vu que cela tourne sur un PI et qu’il y a dedans tout ce qu’il faut pour s’amuser avec les GPIO, ce serait dommage de s’en priver :)
nc3ga.png
nc3ga.png (73.57 Kio) Vu 10190 fois
https://devblogs.microsoft.com/dotnet/a ... -core-3-0/
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

cbalo

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par cbalo » mar. 24 sept. 2019 22:33

Cool :
Encore un nouveau moyen de programmer le Pi.
Les habitués du dev pour Windows vont être content

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » ven. 27 sept. 2019 12:06

Bha tu sais, Windows n’a rien à voir là-dedans. Ça fait plus de 10 ans que je développe sur des plateformes non Windows en utilisant les technologies .Net et c’est le cas dans de très nombreuses entreprises. Beaucoup de personnes font encore l’erreur d’assimiler .Net à Windows alors que dans la réalité il existe une multitude de framework .Net pour différentes plateformes et architectures et il ni en a qu’un seul parmi eux qui est propriétaire et exclusivement réservé à Windows. Là ou .Net Core fait la différence avec tous les autres framework, c’est qu’il devient la référence .Net, ce qui permet de bénéficier des mêmes innovations au même moment sur tous les systèmes. Même sous Windows, Microsoft encourage les développeurs à migrer leurs applications .Net Framework vers .Net Core et de choisir ce framework pour tous leurs nouveaux développements
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

cbalo

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par cbalo » ven. 27 sept. 2019 13:03

Je sais. N'empêche que ça première apparition c'est
sous Windows, raison de cette erreur de jugement.
Tout comme de nombreux autres softs, on pense qu'ils sont cantonnes au 1er os sur lequel ils sont sortis.
Les exemples sont nombreux

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » ven. 18 oct. 2019 20:11

Op, comment installer tout ca sur un PI
Chez moi, test fait sur un PI3 avec un SD toute fraiche et le dernier Buster.

Pour une install complète (SDK, Runtime .NEt Core et ASP .NET Core). Vous pouvez au choix vous contenter du (des) runtime.

Déjà on trouve le link pour la version linux Arm ici : https://github.com/dotnet/core/blob/mas ... ownload.md

ensuite, juste une liste de procédures classique(update, téléchargement,decomp)
sudo apt-get update
sudo apt-get install curl libunwind8 gettext
curl -SL -o dotnet.tar.gz https://download.visualstudio.microsoft ... arm.tar.gz
sudo mkdir -p /usr/share/dotnet
sudo tar -zxf dotnet.tar.gz -C /usr/share/dotnet

On ajoute un lien symbolique
sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet

et on s'assure que tout est bien installé
dotnet --info
dotnetinfo.png
dotnetinfo.png (71.75 Kio) Vu 9987 fois

Je vous recommande de tester les applis Blazor (avec ou sans server ASP) , les MVC ASP. Perso, je me suis en plus amusé un peu sur une vm Debian avec un SQL Server Docké et Entity et tout fonctionne parfaitement. Coté GPIO, je n'ais pas encore essayé
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Autres langages »