C# .Net webservice Client Server moet Server Client worden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

ik wil graag een client applicatie maken die een verbinding maakt met de webservice (SOAP). Het geval is dat als de client de verbinding heeft opgebouwd met de server, dient de client in luister modus over te schakkelen. De connectie dient hergebruikt te worden, zodat er geen problemen zijn met firewalls en routers. De client wordt eigelijk een server en de server wordt vervolgens een client die soap calls verstuurd naar de "server" (voorheen client). Er moet natuurlijk rekening gehouden worden met firewall, want de clients draaien gewoon achter firewall en routers.

Hoe zou je dit probleem aanpakken?

gr,

Sander .

[ Voor 48% gewijzigd door Verwijderd op 29-11-2009 22:52 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:07
Ik zou beginnen met het probleem duidelijker te omschrijven, met goede duidelijke & leesbare zinnen ...

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik ga er voor het gemak even van uit dat je het over een SOAP over HTTP webservice hebt. Dit betekent dat de server geen verkeer kan initialiseren, dit zal altijd via een request van de client moeten gebeuren. Connectie hergebruik krijg je in principe gratis bij HTTP/1.1.

Wat je kunt doen is iedere eens in de zoveel tijd vanaf de client pollen naar de server om te zien of de server iets te zeggen heeft.

Als je toch instantane communicatie vanaf de server naar de client wilt hebben, zul je een alternatief communicatiemedium moeten gebruiken. Het WCF framework bevat alternatieven die beter geschikt zijn, hoewel firewalls in het algemeen in de weg zitten voor TCP/UDP communicatie over poorten anders dan numero 80 (en andere well-known poortnummers).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kwam op MSDN het volgende tegen http://msdn.microsoft.com/en-us/library/ms731064.aspx Duplex Services, van het WCF. Als de client connectie met de server maakt via poort bijv 5346 (geen poort 80) naar poort 80 naar de webservice van de server. Kan de server dan gewoon terug communiceren naar de client die op de port 5346 de client draait?

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 12-09 12:40
Dat ligt er aan hoe je de service configureerd. WCF ondersteunt een soort van callback principe. De service roept niet de client aan maar de service genereert een event waar de clients naar luisteren. Ik heb er al eens mee gewerkt en het werkt prima. Wat meestal voldoende is dat je de service notificatie geeft dat een bepaald type data is verouderd en dat de client zelf kan bepalen of hij wel/niet de data opnieuw gaat binnenhengelen.

Voorbeeld.
http://msdn.microsoft.com/en-us/library/ms731064.aspx

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil vanaf de server soap calls afvuren naar de client, kan dat met de WCF?

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 12-09 12:40
Verwijderd schreef op maandag 30 november 2009 @ 10:02:
Ik wil vanaf de server soap calls afvuren naar de client, kan dat met de WCF?
Geef me eerst één goede reden om niet het event principe van duplex services in wcf te gebruiken. :)

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou ik heb geen reden daarvoor als ik maar eenvoudig kan communiceren met de client vanaf de server. Het moet namelijk wel allemaal in een bepaalde sequence worden uitgevoerd de calls naar de client. Dus methode 1 -> methode 2 -> methode 3 etc.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Eigenlijk wil je dus gewoon dat de "Client" een Soap Server is, en je "Sever" een Soap Client? Het enige wat je anders wil is dat de connectie opgezet word vanuit de Soap Server.

Ik heb nog nooit echt veel met WCF gedaan, maar je zou eens kunnen kijken wat er allemaal mogelijk is met verschillende Channels/Bindings, of kijken of je zelf een Channel/Binding kunt maken die doet wat je wilt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 12-09 12:40
Wat Woy zegt kan wel, maar volgens mij wil je het te complex. Een aantal punten waar je rekening mee moet houden is de lifetime van de service, hoe ga je dat controleren? Wat je zou willen is dat de client zich bekend maakt bij de server. De client geeft aan de server een url naar de service instantie van de client. De client start de service. De server moet voor elke client een endpoint aan gaan maken vanuit de source. Dus waar moet je rekening mee houden? De client moet de service hosten, de server moet een service hosten en een Windows Service of programma die om de zoveel tijd een call maakt naar de clients. De server kan geen gebruik maken van de WCF configuratie.

Om een lang verhaal te kort te maken, ja het kan wel met WCF maar het is wel complex.
Verwijderd schreef op maandag 30 november 2009 @ 12:07:
Nou ik heb geen reden daarvoor als ik maar eenvoudig kan communiceren met de client vanaf de server. Het moet namelijk wel allemaal in een bepaalde sequence worden uitgevoerd de calls naar de client. Dus methode 1 -> methode 2 -> methode 3 etc.
Daar zijn technieken voor. Bij een duplex verbinding kun je er vanuit gaan dat de terug-berichten worden verzonden in de volgorde waarop ze worden aangemaakt. Er zijn technieken waarmee je kunt afdwingen dat de berichten ook worden verwerkt in de volgorde waarop ze zijn aangemaakt. Zie bijvoorbeeld deze link

http://www.request-respon...e3-92b2-ea40bc5929f6.aspx

http://hawvie.deviantart.com/

Pagina: 1