[.NET] Beste manier voor een service

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Ik heb een stuk software waar ik data uit kan krijgen door middel van een .NET SDK en nu wil ik deze data eigenlijk gebruiken op een lokal draaiende website voor +/- 5 mensen die dat dan via die intranetpagina kunnen opzoeken.

Het is geen probleem om de data uit de software te krijgen, maar ik zit me nu af te vragen hoe ik dit op de intranetpagina kan krijgen.

Ik zit nu te kijken naar een simpele webservice via HttpListener in .NET om stilletjes op de server te draaien en dat ik gewoon een simpele ajax-request kan doen en de webservice JSON of XML teruggeeft.

Maar zijn er misschien betere oplossingen? Het is niet heel erg kritieke software, maar dat maakt natuurlijk niet dat ik niet voor een goede oplossing kan gaan.

De intranetsite draait op PHP, dus kan helaas geen ASP.NET truukjes uithalen.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Via een database ?

Acties:
  • 0 Henk 'm!

  • SlaadjeBla
  • Registratie: September 2002
  • Laatst online: 09:42
armageddon_2k1 schreef op zondag 27 februari 2011 @ 15:52:
Ik zit nu te kijken naar een simpele webservice via HttpListener in .NET om stilletjes op de server te draaien en dat ik gewoon een simpele ajax-request kan doen en de webservice JSON of XML teruggeeft.
Ik zit te denken aan een WCF service die je kunt hosten vanuit een Windows Service (waarschijnlijk heb je geen IIS). Dan kun je er voor kiezen om hem bijv. JSON of SOAP (XML) te laten teruggeven. Simpel en doeltreffend.

Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Ja, maar dan zou ik dus elke keer de data uit de software in moeten lezen (periodiek) en dat dan in een DB stoppen? Is op zich ook een mogelijkheid, maar dan heb je weer 2 data-bronnen (de echte software en de 'mirror' DB).
SlaadjeBla schreef op zondag 27 februari 2011 @ 15:57:
[...]


Ik zit te denken aan een WCF service die je kunt hosten vanuit een Windows Service (waarschijnlijk heb je geen IIS). Dan kun je er voor kiezen om hem bijv. JSON of SOAP (XML) te laten teruggeven. Simpel en doeltreffend.
Dat is inderdaad ook een goede oplossing! We hebben wel IIS, maar wel een 'oudje' (Windows Server 2003). Ik zal er even naar kijken.

[ Voor 40% gewijzigd door armageddon_2k1 op 27-02-2011 16:00 ]

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Voor WCF heb je geen (althans; niet per-se) IIS nodig. Een mooi beginpunt is hier. Kijk dan vooral even Self-hosting WCF Services, nadat je de nodige "beginners tutorials" aldaar hebt gekeken uiteraard ;)

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!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
armageddon_2k1 schreef op zondag 27 februari 2011 @ 15:59:
[...]


Ja, maar dan zou ik dus elke keer de data uit de software in moeten lezen (periodiek) en dat dan in een DB stoppen? Is op zich ook een mogelijkheid, maar dan heb je weer 2 data-bronnen (de echte software en de 'mirror' DB).


[...]


Dat is inderdaad ook een goede oplossing! We hebben wel IIS, maar wel een 'oudje' (Windows Server 2003). Ik zal er even naar kijken.
Om dan toch maar even een inhoudsvolle reactie te geven :+.
De reden waarom ik aangeef dat een database een oplossing zou kunnen zijn is omdat het stukje "ik heb een stuk software waar ik data uit kan krijgen" een beetje vaag is. Zonder verdere specificatie zou ik zelf voor een wat defensieve oplossing gaan en er van uitgaan dat deze "bron" wel eens niet beschikbaar zou kunnen zijn. Vandaar een oplossing waarbij je synced met een lokale datastore.
Maargoed, het is natuurlijk onderhevig aan welke eisen je aan je data beschikbaarheid stelt.

Als je WCF gaat gebruiken en je hebt zo geen IIS beschikbaar dan zou ik net wat RobIII al zegt, voor een self hosted service gaan in een Windows Service applicatie.

Dit klinkt moeilijker dan dat het is. Indien je Visual Studio 2010 hebt kun je gebruik maken van de ingebouwde faciliteiten om je service automatisch te laten hosten voor test doeleinden. Je kunt een WCF service project namelijk gewoon starten (wel of niet met debugger eraan) en VS2010 zal dan automatisch je service hosten en de TestClient uit de SDK opstarten.

Als je het daarna wilt gaan hosten in een Windows Service raad ik aan om TopShelf te gebruiken. Scheelt je gewoon een hoop gezeik met het uitzoeken van hoe je een service installer moet toevoegen e.d.

Voor het consumeren van WCF in php, je kunt ervoor kiezen om de WSDL van je service te interpreteren. Maar als je dan toch al WCF gebruikt is het voor de aanroepende kant wellicht net zo makkelijk als je een REST service gebruikt. Creator1988 heeft hier recentelijk nog een aardig artikel over geschreven.

Daarnaast, als je service alleen meer een doorgeefluik is voor gegevens en verder geen zoek of manipulatie achtige functionaliteiten nodig heeft is een RSS service wellicht nog veel beter op zijn plaats.

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 08:39
Zet je exe in cgi-bin (print data naar stdout), doe request in je pagina met jQuery, KISS. Complexiteit toevoegen kan altijd nog...

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 26-09 16:26

Ventieldopje

I'm not your pal, mate!

Wat je beter kan doen is denk ik een (self-hosted) WCF service starten die "on demand" de info uit de software trekt en terug geeft als SOAP/Xml.

Je kunt dan requests doen dmv. Javascript/Ajax of PHP (zie: http://nl.php.net/manual/en/book.soap.php). Op die manier heb je dan de data provider gescheiden van de user interface en kun je de data naast de website ook nog opvragen vanuit een desktop applicatie bijv. ;)

[ Voor 24% gewijzigd door Ventieldopje op 28-02-2011 14:43 ]

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Bedankt voor alle reacties :-)

Vooralsnog ben ik bezig met een simpele Webservice in Topshelf. De webservice maakt nu gebruik van WCF en werkt perfect.

Moet zeggen dat ik de documentatie van Topshelf wel erg gebrekkig vind helaas, maar voor de standaard instellingen is er niet zoveel nodig.

Engineering is like Tetris. Succes disappears and errors accumulate.

Pagina: 1