[.NET] Manier(en) om data tussen 2 programmas* te delen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
Mijn vraag
Wat zijn de manieren om kleinschalig data tussen 2 window less programma's te delen.

Klein schalig bedoel ik wat integers en strings, alles kan zelfs in 1 string en dan parse ik die wel.

Relevante software en hardware die ik gebruik
Visual Studio met Framework 4.8 (vb.net)

De mogelijke data als een string
\SetVisible=true\SetTextColor=-32704\SetShadowColor=-16777216\ShowShadow=true\UpdateDeskBand=RADIO BOB - Symphonic Metal_neu=Turilli & Lione Rhapsody - Fast Radio Burst

Wat ik al gevonden of geprobeerd heb
- Ik had gevonden om met sendmessage te werken maar dat werk alleen als je een venster hebt en dat moet in de meeste gevallen nog actief zijn ook, laat ik nu dus geen vensters hebben :+
- Nu heb ik ook WCF gevonden maar om dat op te zetten voor de klein beetje data over te zetten :/
- er is ook nog gRPC dot net
- memory mapped files & http://www.kbytes.co.uk/Articles.asp?articleid=75
- Een bestand op de schijf?
- named pipes Ben(V) in "[.NET] Manier(en) om data tussen 2 programmas* te delen"
- andere?

Iemand dat hier meer over weet wat eventueel nog mogelijke oplossingen zijn of zelf al zo iets heeft moeten maken?

[ Voor 3% gewijzigd door Damic op 11-08-2023 13:04 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag

Beste antwoord (via Damic op 12-08-2023 01:54)


  • Ben(V)
  • Registratie: December 2013
  • Nu online
Named pipes kun je hiervoor gebruiken.
zie
https://learn.microsoft.c...nterprocess-communication

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.

Alle reacties


Acties:
  • 0 Henk 'm!

Anoniem: 80910

Je sub-programma in cli json outputten en dat eventueel wegschrijven naar een bestand geen optie ?

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
@Anoniem: 80910 die mogelijkheid had ik toch gegeven? "- Een bestand op de schijf?"

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • Beste antwoord
  • +4 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Nu online
Named pipes kun je hiervoor gebruiken.
zie
https://learn.microsoft.c...nterprocess-communication

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • +1 Henk 'm!

  • Zenomyscus
  • Registratie: September 2012
  • Laatst online: 03-06 15:34
offtopic:
Ah heerlijk die Nederlandse termen. Pijpserver, pijpclients :+

Kinderachtig, ik weet het. Zo ben ik soms.

Acties:
  • +1 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
Zenomyscus schreef op vrijdag 11 augustus 2023 @ 13:06:
[...]

offtopic:
Ah heerlijk die Nederlandse termen. Pijpserver, pijpclients :+

Kinderachtig, ik weet het. Zo ben ik soms.
Er word wat gepijpt :+

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • +1 Henk 'm!

  • SiErRa
  • Registratie: Februari 2000
  • Laatst online: 03-06 18:44
Wel jammer dat het .Net Framework is, in dotnet 6 kan je in een console applicatie met Kestrel makkelijk een webservertje optuigen om data naar te pushen in wat voor een format dan ook.

Maar voor dit doel past named pipes wel goed
MSMQ zou ook nog kunnen trouwens

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
Mmmh ben me wat aan't inlezen (bij die voorbeelden) eb klopt dat een namedpipe server de clients start? Als dat zo is dan ben ik er niets mee.

De client kan al opgestart zijn maar de server niet en visa versa.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • ocwil
  • Registratie: Mei 2007
  • Laatst online: 11:06
Klinkt als een leuk projectje!
maar gRPC wat jezelf ook al noemt is een prima optie.

~ Portal 2 maps: linkje ~ LoL (EUW): Ocwil ~


Acties:
  • +1 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Nu online
Damic schreef op vrijdag 11 augustus 2023 @ 13:19:
Mmmh ben me wat aan't inlezen (bij die voorbeelden) eb klopt dat een namedpipe server de clients start? Als dat zo is dan ben ik er niets mee.

De client kan al opgestart zijn maar de server niet en visa versa.
Als een van beiden niet draait dan valt er natuurlijk niets te communiceren.
Vandaar de mogelijkheid een client op te starten als er gecommuniceerd moet worden.

Wat vaak gedaan wordt is een pipe server in de lucht brengen die altijd draait, die kan dan de communicatie voor je regelen.
Zo iets:
https://learn.microsoft.c...multithreaded-pipe-server

Als je het allemaal te moeilijk vind dan is een memory mapped file of gewoon een bestandje op disk natuurlijk ook een prima oplossing.
Je moet dan wel de locking en de synchronisatie zelf regelen.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
@Ben(V) ha dat had ik dus verkeerd gelezen, eens straks ofzo in verdiepen :)

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

Anoniem: 80910

Je zou ook nog kunnen kijken naar sqlite

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Anoniem: 80910 schreef op vrijdag 11 augustus 2023 @ 14:10:
Je zou ook nog kunnen kijken naar sqlite
Dat is, in essentie, een bestand op schijf maar dan met extra stappen ;)

Ik zou kijken naar named pipes of memory mapped files. Eventueel een socket, maar dan zit je vrij low-level te klooien.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 08:34
Als het op Windows draait kan je er ook altijd MSMQ tussen zetten, of in alle gevallen iets als MQTT, RabbitMQ of een andere queue-oplossing. Maar dat is waarschijnlijk flinke overkill als je zeker weet dat het één server en één client blijft.

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Merethil schreef op vrijdag 11 augustus 2023 @ 14:30:
Als het op Windows draait kan je er ook altijd MSMQ tussen zetten
MSMQ is op de retour. Het zal de komende 10(+) jaar nog wel ondersteund worden (want Microsoft), maar ik zou er geen nieuwe projecten meer op baseren. Los daarvan vind ik 't (ook) om een paar bytes te communiceren een beetje overkill om een complete queue/broker op te tuigen.

[ Voor 15% gewijzigd door RobIII op 11-08-2023 14:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 08:34
RobIII schreef op vrijdag 11 augustus 2023 @ 14:35:
[...]

MSMQ is op de retour. Het zal de komende 10(+) jaar nog wel ondersteund worden (want Microsoft), maar ik zou er geen nieuwe projecten meer op baseren. Los daarvan vind ik 't (ook) om een paar bytes te communiceren een beetje overkill om een complete queue/broker op te tuigen.
Ah, ik zit al jaren in de queues maar MSMQ komt bij mij ook uit een grijs verleden van "ooit moeten gebruiken omdat een implementatie er al gebruik van maakte" :+

Eens dat het overkill is in veel gevallen, maar zag hem nog niet genoemd en 't is "een oplossing" die wel leuk is om te leren kennen (eventueel voor verder gebruik in home automation / professionele omgeving / volgend hobbyproject). :)

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
Anoniem: 80910 schreef op vrijdag 11 augustus 2023 @ 14:10:
Je zou ook nog kunnen kijken naar sqlite
Zoals Rob al zei: dat is een soort van bestand :+ maar het blijft een goede suggestie.

@Merethil MQTT is een goede suggestie als je veel communicatei/data moet overdragen, maar voor dit project is dat nogal overdreven voor die paar bytes.

Eens zien of die named pipes wat is.
Edit: die named pipe is handig, alleen dat voorbeeld van Microsoft is niet wat het moet zijn. Ik had niet gezien dat de client een kopie van zijn eigen opstarten maar die sloot dus niet mee af, ik had dat pas door als mijn pc traag begon te worden en mijn geheugen dus vol zat.
Anyway nu wat aan't herschrijven met een aparte thread dat automatisch een nieuwe pipe opzet als de oude word afgesloten.

[ Voor 32% gewijzigd door Damic op 12-08-2023 01:53 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
Bij deze wat voorbeeld code, kan wrs nog wel wat geoptimaliseerd worden en zal ook in de toekomst worden gedaan.

Deze code is AS IS en ik geef geen garanties dat het in de toekomst nog zal werken :D

https://github.com/Damicske/NamedPipesServer
https://github.com/Damicske/NamedPipesClient

* Damic wou eerst al de code hier gewoon posten en dan dacht ik: "ow wacht ik heb een github" :+

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
offtopic:
Maak dan effe classjes ipv alles in een form te mikkeren; dan is 't op z'n minst reusable.


Also offtopic: Happy cake day :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:36

Damic

Tijd voor Jasmijn thee

Topicstarter
@RobIII ik heb het omgezet naar classes maar soms duurt het lang voordat een pipe gekilled is of een pipe blijft bestaan als client nog loopt maar server is herstart :/ ... verder onderzoek nodig :)

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Damic schreef op zondag 13 augustus 2023 @ 21:44:
@RobIII ik heb het omgezet naar classes maar soms duurt het lang voordat een pipe gekilled is of een pipe blijft bestaan als client nog loopt maar server is herstart :/
Dat staat totaal los van 't feit of 't een class is of al je logica in een form zit ;)
(Overigens zie ik er niets van terug op je GitHub repo O-) )

[ Voor 7% gewijzigd door RobIII op 13-08-2023 22:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1