[C#/Java] Request en Response

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 05:54
Hallo,

Ik heb twee programma's waarbij er vanuit het ene programma (Java) een request wordt gevraagd aan het andere programma (C#). De bedoeling is dat het C# programma hierop reageert. Nu ben ik al een tijdje aan het klote om dit voor elkaar te krijgen maar kom eigenlijk niet tot een fatsoenlijke oplossing. Ook als ik Google krijg ik geen fatsoenlijke en duidelijke oplossingen en staat er allemaal een beetje vaag omschreven.

Nu heb ik zelf wel een paar oplossingen bedacht en wat tips van andere gehoord, namelijk:

1. Programma erom heen bouwen met Java en daarna JMS tussen beide Java programma's
- Voordeel communicatie gaat tussen twee Java programma's
- Nadeel er moet een extra communicatie gebeuren, wat dan wel lokaal is maar wat zet je hier dan tussen. Een file en je laat het C# programma elke seconden controleren of er iets nieuws binnen is gekomen. Of een database?

2. JMS tussen C# en Java
Hier over heb ik enkele tutorials gevonden, bijvoorbeeld met OpenJMS maar ik krijg het maar niet aan de gang. Ook met andere personen overgehad en ook hun zagen dit niet als de beste oplossing.

3. Oplossing van iemand anders, maar daar ben ik iets minder ervaren mee: Webservices REST: Json
Nu lukt het mij wel om een object te versturen via Json en deze uit te pakken aan de andere kant. Maar hoe verstuur je dit over een ip-adres? En hoe weet je de andere kant (C#) te triggeren en dan ook weer iets terug te sturen naar het Java programma waar het vandaan kwam?

Ik hoop dat iemand mij kan helpen met dit probleem wat de beste oplossing zou zijn? Natuurlijk vraag ik niet om de oplossing maar om advies wat ik het beste kan gebruiken/implementeren.

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • Carharttguy
  • Registratie: Juli 2010
  • Laatst online: 04-07 23:09
Is het geen idee om gewone TCP sockets te gebruiken?
Of bekijk ik het te simpel?

Acties:
  • 0 Henk 'm!

  • Phazor
  • Registratie: Februari 2010
  • Laatst online: 10-09 11:12
Een simpele TCP-socketverbinding lijkt me ook het beste.
Aangezien jouw C# applicatie moet reageren op bepaalde requests, zou ik hiervan ook de socketserver maken en van de javatoepassing de socketclient.
Door middel van JSON kun je ook altijd objecten tussen de 2 programma's versturen.

Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Een simpele TCP socket verbinding kan inderdaad. Maar of dat ook echt is wat je wilt.... Ik zou zelf voor webservices gaan, wordt goed ondersteund in beide platformen. Plus je gaat niet opnieuw het wiel uitvinden.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Gynnad schreef op donderdag 12 januari 2012 @ 16:11:
...

Ik hoop dat iemand mij kan helpen met dit probleem wat de beste oplossing zou zijn? Natuurlijk vraag ik niet om de oplossing maar om advies wat ik het beste kan gebruiken/implementeren.
Valt opzich weinig over te zeggen aangezien er geen/te weinig eisen op tafel liggen. Hoevaak wordt er een bericht verstuurd? Hoelang moet het programma meegaan? Moet het nog in andere omgevingen gedraaid worden? Hoe groot zijn je berichten? Wat staat er in de berichten? Waarvan heb je reeds kennis of houd je van nieuwe uitdagingen? Enz. Pas als je dit soort vragen gesteld hebt, kun je er meer over zeggen.

Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 05:54
Feanathiel schreef op donderdag 12 januari 2012 @ 18:18:
[...]


Valt opzich weinig over te zeggen aangezien er geen/te weinig eisen op tafel liggen. Hoevaak wordt er een bericht verstuurd? Hoelang moet het programma meegaan? Moet het nog in andere omgevingen gedraaid worden? Hoe groot zijn je berichten? Wat staat er in de berichten? Waarvan heb je reeds kennis of houd je van nieuwe uitdagingen? Enz. Pas als je dit soort vragen gesteld hebt, kun je er meer over zeggen.
Het zijn kleine berichten, het is een aanvraag voor een reparatie waarin staat wat er gemaakt moet worden en de klantgegevens. Het moeten worden gebruik om iets te testen, dus het is niet voor dagelijks gebruik.

Ik hou van nieuwe uitdagingen en mijn kennis ligt voor bij Java. Het moet een niet al te grote oplossing zijn. Simpel is ook prima omdat het maar voor een test applicatie is.

Dus om het even kort samen te vatten:

Er wordt een request (Klantgegevens + opdracht) verstuurt vanuit de Java applicatie naar de C# applicatie.

De C# applicatie (staat op een andere server) berekend wat er moet gebeuren en heeft communicatie met de database (dit is al geregeld). Als de berekening klaar is dan verstuurd hij het antwoord terug naar de Java applicatie. Dit is dus een ID + uitkomst van de berekening.

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik snap niet helemaal waarom je JSON gebruikt en waarom je moeite hebt met het terugsturen van data naar Java. Ik vermoed dat je zelf iets hebt gedaan in plaats van een standaard c# webservice-project hebt aangemaakt vanuit het menutje (met XML/SOAP/WSDL wat je vanuit een willekeurige taal zoals Java (met zeg JAX-WS) kan benaderen) ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 05:54
pedorus schreef op donderdag 12 januari 2012 @ 19:28:
Ik snap niet helemaal waarom je JSON gebruikt en waarom je moeite hebt met het terugsturen van data naar Java. Ik vermoed dat je zelf iets hebt gedaan in plaats van een standaard c# webservice-project hebt aangemaakt vanuit het menutje (met XML/SOAP/WSDL wat je vanuit een willekeurige taal zoals Java (met zeg JAX-WS) kan benaderen) ;)
Klopt zeker, vanuit Java kun je dit niet met een Wizzard doen omdat je dan een database nodig hebt en die hebben we daar niet bij die Middleware..

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:12

Creepy

Tactical Espionage Splatterer

Java zelf heeft geen wizards daarvoor. Sommige Java IDE's wel en in al die IDE's die een wizard daarvoor hebben kan je ook via een wizard een webservice gebruiken *zonder* dat dat je java project zelf database nodig hebt. Je moet alleen dan net ff wat meer moeite doen dan blind op next, next, finish drukken ;)

Er zijn echt heel veel manieren om twee processen met elkaar te laten communiceren, ook als ze niet op dezelfde machine staan. Daar moet je echt met google het 1 en ander over hebben kunnen vinden. Dus of je hebt toch niet zo goed/lang gezocht, of je hebt geen idee waar je op moet zoeken. Termen als IPC zou je al aardig wat hits moeten opleveren, evenals webservices

[ Voor 37% gewijzigd door Creepy op 12-01-2012 20:57 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Bijvoorbeeld iets als http://stackoverflow.com/a/3569950 aan de java-kant als je een .net web service hebt. Aan de C# kant hangt het van je versie af welk soort project/techniek je het beste kan kiezen (een template met het woord "Service" erin).

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • RomeoJ
  • Registratie: Mei 2003
  • Niet online

RomeoJ

Matched: (.*)

Ik weet niet hoe je Java software draait, maar als je het op een applicatieserver als een EJB draait dan zou je kunnen overwegen om IIOP.NET te gebruiken om vanuit C# een remoting channel naar Java op te zetten.

Hoe je dat doet, staat hier uitgelegd.

Trouwens: EJB's kunnen ook als webservices worden exposed.

You only need two tools in life: WD-40 and Duct-Tape, if it doesn't move and it should, use the WD-40. If it does move and it shouldn't, use the Tape.


Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 06:51

beany

Meeheheheheh

Is JNI(Java Native Interface) iets?? Daarmee kan je vanuit C# een JAVA prog aanroepen die in hetzelfde proces draait. Andersom kan overigens ook. Hier een lib die JNI gebruikt voor de brug tussen .Net en Java: http://jni4net.sourceforge.net/

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 10-09 20:55

_Erikje_

Tweaker in Spanje

Er zijn tal van manier om tussen twee applicaties te communiceren. Zo lang jij goede afspraken maakt qua representatie (character-encoding vooral!!!) maakt het allemaal niet veel uit.

SOAP
CORBA
JSON
JNI
JMS
Sockets
...

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
beany schreef op vrijdag 13 januari 2012 @ 18:10:
Is JNI(Java Native Interface) iets??
Aangezien hij al gemeld heeft dat de applicatie niet op dezelfde machine draait; nee.
Gynnad schreef op donderdag 12 januari 2012 @ 19:52:
Klopt zeker, vanuit Java kun je dit niet met een Wizzard doen omdat je dan een database nodig hebt en die hebben we daar niet bij die Middleware..
Er zijn tal van mgoelijkheden. TCP/IP, webservices, gewoon een file in een directory dumpen. Welke de voorkeur heeft is aan jou.

[ Voor 45% gewijzigd door Hydra op 14-01-2012 17:16 ]

https://niels.nu

Pagina: 1