Toon posts:

[.NET] System.Web.Services of System.Runtime.Remoting

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ga een redelijk eenvoudige webservice aan het ontwikkelen in C# waar wel een grote hoeveelheid data over verstuurd gaat worden.

Nu ben ik me aan het inlezen over de verschillende mogelijkheden om de realiseren en stuit ik op twee mogelijkheden om dit voor elkaar te krijgen.

System.Web.Services
- protocol: HTTP
- data: SOAP

System.Runtime.Remoting
- protocol: TCP of HTTP
- data: SOAP of Binary

Ik begrijp dat de 'traditionele' webservice over het algemeen ontwikkeld wordt gebruik makende van de system.web.services namespace. Dit heeft als voordeel dat ook andere systemen die niet in .NET ontwikkeld zijn, maar SOAP ondersteunen, ook kunnnen communiceren met de webservice.

Nu is in dit geval deze beschikbaarheid voor andere systemen niet van belang en vraag ik me af of het een idee is om de System.Runtime.Remoting namespace te gebruiken om de webservice te realiseren. Middels de TCP/Binary methode is de overhead een stuk lager.

Heeft iemand hier ervaringen mee?

Verwijderd

Als het een vrij eenvoudige webservice word dan zou ik me gewoon bij System.Web.Services houden. Omdat dan overhead niet echt van toepassing is. Het onwikkelen kost ook een stuk minder tijd.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Als je een webservice wilt ontwikkelen, maak dan gebruik van System.Web.Services. Het zal trouwens makkelijker zijn om Web Services te gebruiken in Longhorn dan remoting objects volgens MS.

Het is wel zo dat je met remoting een sneller systeem kunt opzetten, maar het ontwikkelen van een Webservice is toch iets straightforwarder dan het maken van remoted objects.

Het hangt er eigenlijk ook een beetje van af wat je precies wilt doen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Verwijderd schreef op 27 februari 2004 @ 09:34:
Als het een vrij eenvoudige webservice word dan zou ik me gewoon bij System.Web.Services houden. Omdat dan overhead niet echt van toepassing is. Het onwikkelen kost ook een stuk minder tijd.
De webservice is eenvoudig alleen er moeten soms bijv. 500 records (+/- 5 velden per record) met tekst over de lijn verstuurd worden. Veel data zeg maar.
Met SOAP wordt deze data in XML verstuurd:

<name>Jan</name>
<name>Klaas</name>
<name>John</name>

Dat lijkt me veel overhead?

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Met webservices heb je het nadeel dat de XmlSerializer class gebruikt wordt voor de Xml generatie. Deze class genereert C# code 1 malig (hoop je, er zijn veel situaties waarin hij dat telkens opnieuw doet) en die C# code is zeg maar een hard-coded xml writer voor je betreffende method.

Dit kan erg snel zijn, maar heeft nadelen: de XmlSerializer is zo brak als het maar kan. Hij kan niet met interface typed member variabelen overweg, kan geen cyclic references aan (Customer.Orders bevat Order object dat reference heeft in order.Customer naar dezelfde Customer) en her-genereert de code soms die de xml generatie verzorgt. Ook zorgt het ervoor dat je een herdefinitie van je class krijgt op de client. Dit is erg nadelig als je eigen classes wilt teruggeven.

Met remoting heb je dat niet. TCP/binary remoting is verreweg het snelst en je loopt niet tegen de nadelen aan zoals hierboven geschetst.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Maar de ontwikkeltijd is aanzienlijk langer met TCP/binary remoting?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Aanzienlijk is misschien veel gezegd.

Het ontwikkelen van een simpele webservice is makkelijker, en vlugger te snappen.
Bij remoting moet je misschien iets meer moeite doen, je hebt nl. verschillende types van remoted objects dus zal je je alvast daar even moeten in verdiepen over welk type (client activated of server activated) het beste is voor jouw situatie.
Bij Remoting moet je ook je remoted object 'hosten'. Het vergt dus iets meer werk (registreren van een Channel, registreren van het remoted object, etc.....) terwijl je eigenlijk al een simpele WebService kunt schrijven door een class te inheriten van System.Web.Service oid (dat is zelfs niet verplicht denk ik), en de nodige methods een [WebMethod] attribuut te geven.

https://fgheysels.github.io/


Verwijderd

Topicstarter
En weet iemand hoe het zit met security? Ik weet dat die webservice gebruik kan maken van SSL, kan dat ook als ik gebruik maak van remoting? Is wel een vereiste namelijk.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Als je gebruikt maakt van een TcpChannel (binaryformatter) lijkt het me niet dat je gebruik kunt maken van SSL.
Je zult dan je eigen security moeten voorzien denk ik.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 27 februari 2004 @ 09:57:
Als je gebruikt maakt van een TcpChannel (binaryformatter) lijkt het me niet dat je gebruik kunt maken van SSL.
Je zult dan je eigen security moeten voorzien denk ik.
Dat zou wel erg jammer als dat zo is. Heb wel begrepen dat je remoting wel via IIS beschikbaar kan maken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Hmmm, blijkbaar is het wel mogelijk om je remoting spul in IIS te hosten en gebruik te maken van een BinaryFormatter en gebruik te maken van SSL

https://fgheysels.github.io/


Verwijderd

Topicstarter
Lijkt me een ideale combinatie, wat betreft overhead en beveiliging. Wat zijn zoals de wijze waarop jullie webservices beveiligen?

Verwijderd

Topicstarter
of moet ik hier even een ander topic voor openen?

<font color=blue>modbreak:
je hoeft niet zo snel te kicken hoor.
De mensen die je kunnen / willen / proberen te helpen zijn ook niet altijd online, en hebben ook nog wel wat meer te doen.</font>

sorry, realiseerde me even niet dat dit een wat ongepaste actie was..

[ Voor 81% gewijzigd door Verwijderd op 27-02-2004 11:51 ]

Pagina: 1