[C# .NET] Communicatie tussen 2 applicaties mogelijk?

Pagina: 1
Acties:

  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Goedemorgen beste mensen. Ik probeer een tweetal applicaties met elkaar te laten samenwerken/communiceren. Ik start de eerste op, en deze moet als een soort host/server/basis fungeren. Vervolgens draait deze de hele dag op de PC. Nu wil ik een tweede, later zelfs een derde applicatie maken, die op de een of andere manier dingen kan "vragen" aan de eerste applicatie.

Hoe doe ik dit?
  • Ik heb een situatie gecreerd met .NET remoting, erg leuk, maar je moet hiervoor een poort open zetten (zodat ik kan connectecten naar localhost:4444 bijvoorbeeld). :X
  • Ook heb ik een voorbeeld gevonden met COM objecten, echter, hierbij maak je een DLL (als ik het goed heb), die je altijd kunt benaderen, maar die je eerst moet installeren (ipv opstarten). Dit is niet juist, omdat de eerste applicatie er moet zijn wanneer hij is opgestart en weg moet zijn wanneer afgesloten, ook een UI ontbreekt hier dan. :/
Mijn vraag is dus:

Hoe zou ik twee applicaties kunnen laten samenwerken, op een manier zoals .NET remoting werkt (dus een object van de eerste app is beschikbaar bij de tweede app), zonder dat er poorten open moeten (op 1 pc is dit niet nodig, lijkt me)?

Ik ben al best een tijd aan het zoeken en kijken naar verschillende mogelijkheden, maar ik zie niet hoe ik zoiets nou correct kan oplossen. |:(

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:15
Als je remoting gebruikt, is het nodig om een poort open te zetten, ook al draait alles op één pc. Remoting werkt nl. via 'Channels', en een channel gebruikt een poort. Waarom zou het anders werken als alles op dezelfde pc draait ? Waarom zou men dan het concept gaan veranderen; op die manier is het voor je applicatie geheel transparant of alle componenten nu op één pc draaien, of op meerdere.

Remoting is de enige manier die ik hier zie.

https://fgheysels.github.io/


  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Dus, als ik het goed begrijp, betekent dit dat ik het beste remoting kan gebruiken, ookal draait alles op één pc. Er bestaat niet een soortgelijk iets, "binnendoor" (waar ik dan nog nooit van gehoord heb ofzo)?

  • Chester
  • Registratie: September 2003
  • Niet online
Skate2000 schreef op maandag 30 oktober 2006 @ 09:29:
Dus, als ik het goed begrijp, betekent dit dat ik het beste remoting kan gebruiken, ookal draait alles op één pc. Er bestaat niet een soortgelijk iets, "binnendoor" (waar ik dan nog nooit van gehoord heb ofzo)?
Als het altijd op 1 PC moet draaien, waarom maak je dan niet 1 applicatie die meerdere vensters opent?

"The test of a work of art is, in the end, our affection for it, not our ability to explain why it is good." - Stanley Kubrick | Trakt


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Je kunt iets met IPC (inter process communication) doen of met shared memory. Zie ook hier voor wat pointers.

Nu met Land Rover Series 3 en Defender 90


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Twee aparte applicaties laten draaien is twee application domains hebben. En communicatie daartussen is alleen mogelijk met remoting (indien uitwisseling van objecten).

Als je .NET 2.0 gebruikt, kan je als channel IPC gebruikt. IPCChannel wordt gebruikt voor een hoge doorvoer van informatie voor meerdere applicaties op dezelfde computer.

  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Chester schreef op maandag 30 oktober 2006 @ 09:32:
[...]
Als het altijd op 1 PC moet draaien, waarom maak je dan niet 1 applicatie die meerdere vensters opent?
Een van de "client" applicaties is een shell extensie, dus niet zomaar een nieuw venster. Een andere is een applicatie die af en toe wordt gestart door invloed van buitenaf (dus nieuwe instantie van "iets"), gaat dus ook niet. Maar het idee is goed.
MTWZZ schreef op maandag 30 oktober 2006 @ 09:33:
Je kunt iets met IPC (inter process communication) doen of met shared memory. Zie ook hier voor wat pointers.
Hmm zeker interessant, ik ga eens kijken, dankjewel.

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Je kunt zelf een serverapplicatie bouwen om een Remoting object aan te bieden, maar het is ook mogelijk om IIS te gebruiken om een object aan te bieden.

Het is sowieso nuttig om, als je een zelfstandige serverapp gaat bouwen, deze als "windows service" te maken, zodat je gebruik kan maken van de standaard windows functionaliteit (bijvoorbeeld de serverapp op te starten voordat een gebruiker is ingelogd).

Als je het echt fancy wilt aanpakken kun je eens kijken naar de nieuwe Windows Comm. Foundation in .Net 3.0. Daarin is Remoting vervangen door een aanpak die meer op webservices lijkt (uiteraard ook lokaal te gebruiken) met WAS, een soort IIS voor objecten.

  • Tepel
  • Registratie: Juni 2006
  • Laatst online: 17-08-2024
En anders heb je altijd nog named pipes. Dus gewoon een bestand op je HD dat je kan openen en sluiten. Kan in .NET ook.

0x7F


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11 13:15

Korben

() => {};

Named pipes worden niet op schijf opgeslagen, het zijn gewoon in-memory streams die globaal beschikbaar zijn onder een bepaalde naam.

.NET biedt (voor zover ik weet) out-of-the-box geen remoting via named pipes aan, dus imo is IPC remoting of gewoon via HTTP de beste optie voor de TS.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Ik heb de verschillende mogelijkheden naast elkaar gelegd, vergeleken en gekeken wat mij het beste leek. Ik ga voor remoting met IPC. Hier had ik voorheen nog nooit van gehoord (wel remoting via TCP), maar ik moet zeggen: asi es perfecto! Dankjullie wel! :)

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Waarom ook niet gewoon op de loopback interface alleen ? Enkel je eigen PC kan dan op die poort zichzelf benaderen...

ASSUME makes an ASS out of U and ME

Pagina: 1