[.NET 2.0] Filetransfer via remoting

Pagina: 1
Acties:
  • 618 views sinds 30-01-2008
  • Reageer

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 17:41
Ik moet een NT service bouwen in .NET (C# 2.0). Op een flink aantal machines draait deze service.

Ook moet er een client komen. De client moet naar een geselecteerd aantal machines een setje van files oversturen, die varieren van 5-15 mb. Als de set van files verzonden is dan worden er activiteiten gestart door de service, gebruik makend van de overgestuurde files. De keuze voor een service is omdat de activiteiten onder een speciaal account worden uitgevoerd met meer rechten dan de gemiddelde gebruiker.

Nu wil ik doen via .NET remoting met tcp en een poortnr aangezien IIS geen optie is op de machines.

De activiteiten die de service uitvoert zijn nogal tijdrovend, de eis is gesteld dat de service events raised mbt de voortgang.

Hebben jullie nog tips ?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:55
Tips ?
omtrent.... ?

https://fgheysels.github.io/


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Als het bij die 5-15mb blijft zou ik zeggen maak lekker gebruik van DIME attachments of MTOM.
Als het grotere bestanden gaan worden zou ik naar een al bestaande oplossing gaan kijken (dingen zoals GridFTP etc.)

En voor de notificatie dingen is er zoiets als WS-Notification maar daar heeft ondergetekende geen ervaring mee.

[ Voor 21% gewijzigd door TheNameless op 26-10-2006 19:28 ]

Ducati: making mechanics out of riders since 1946


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 13-02 12:13
Mag ik je in ieder geval dan ook even wijzen op de HttpListener...

Ik weet dat Remoting z'n nukken heeft (lees: het configureren ervan is een vak apart), en het is (volgens mij) niet gemaakt voor grote data.

(Het kan ook zijn dat er andere functies zijn in Remoting die je ook nodig hebt...)

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:55
EfBe maakt trouwens op z'n blog melding van een interessant artikel ivm serializing mbt remoting. Ik heb het nog maar eens vlug gescand, maar het ziet er wel interessant uit.

http://weblogs.asp.net/fb...erialization-in-.NET.aspx
Ik weet dat Remoting z'n nukken heeft (lees: het configureren ervan is een vak apart)
Dat valt op zich best mee; behalve als je met callbacks oid gaat werken.

[ Voor 24% gewijzigd door whoami op 26-10-2006 23:06 ]

https://fgheysels.github.io/


  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 13-02 11:46
Ik moest meteen denken aan de windows service voor achtergrond downloads. De service die ook door windows update wordt gebruikt om files te downloaden. Deze is ook gewoon via de commandprompt te benaderen en daar kun je dan gewoon je download in schedulen en dan gaat hij rustig op de achtergrond je bestandjes binnen halen in idle time. Er heeft ooit een uitgebreid artikel hierover in C't gestaan. Ik kan het wel ff voor je opzoeken als je geinteresseerd bent.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
pcmadman schreef op vrijdag 27 oktober 2006 @ 00:20:
Ik moest meteen denken aan de windows service voor achtergrond downloads. De service die ook door windows update wordt gebruikt om files te downloaden. Deze is ook gewoon via de commandprompt te benaderen en daar kun je dan gewoon je download in schedulen en dan gaat hij rustig op de achtergrond je bestandjes binnen halen in idle time. Er heeft ooit een uitgebreid artikel hierover in C't gestaan. Ik kan het wel ff voor je opzoeken als je geinteresseerd bent.
Je hebt het over BITS (Background Intelligent Transfer Service), maar ik betwijfel of dat is wat TS zoekt.

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


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

MTWZZ

One life, live it!

Kun je geen data-pull maken?
Als je in jouw client de HttpListener (bijvoorbeeld of iets customs) implementeerd zoals Flard al opmerkte kun je een "work-item" naar de services sturen die op hun beurt bij de client om data gaan vragen. Zo hoef je tenminste geen IIS te installeren en remoting niet te misbruiken om er brokken data doorheen te sturen.

^^ Beetje GridFTP eigenlijk :P

Nu met Land Rover Series 3 en Defender 90


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Is Remoting eigenlijk gewoon SOAP? Of is het iets .NET specifieks?
Als het SOAP is zou ik me gewoon aan een standaard houden en met MTOM of DIME attachements doen. Kan je ook meteen iets van meta-data meegeven over de file in je SOAP bericht.

Ducati: making mechanics out of riders since 1946


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:55
Remoting is het aanspreken van assemblies die zich in een ander AppDomain bevinden.
Om dit te kunnen verwezenlijken, heb je oa een Channel nodig (dit kan http zijn of een tcp channel), en een formatter die je gegevens kan serializeren/deserializeren zodanig dat ze over dat channel kunnen verstuurd worden.
Je kan dit doen mbhv een SoapFormatter, of een BinaryFormatter, of een eigen formatter.

Probleem is, als je een SoapFormatter gebruikt zijn je 'paketten' veel groter. Maw, een BinaryFormatter is veel efficienter dan een soap-formatter.

https://fgheysels.github.io/


  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 17:41
pcmadman schreef op vrijdag 27 oktober 2006 @ 00:20:
Ik moest meteen denken aan de windows service voor achtergrond downloads. De service die ook door windows update wordt gebruikt om files te downloaden. Deze is ook gewoon via de commandprompt te benaderen en daar kun je dan gewoon je download in schedulen en dan gaat hij rustig op de achtergrond je bestandjes binnen halen in idle time. Er heeft ooit een uitgebreid artikel hierover in C't gestaan. Ik kan het wel ff voor je opzoeken als je geinteresseerd bent.
Je moet er van uit gaan dat er op de machines geen additionele windows components zo maar bijgezet kan worden. De configuratie moet vanaf 1 machine gepusht worden naar n machines. De serivce op de n machines moet kunnen reageren op de request en de data ontvangen.

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 17:41
RobIII schreef op vrijdag 27 oktober 2006 @ 00:46:
[...]

Je hebt het over BITS (Background Intelligent Transfer Service), maar ik betwijfel of dat is wat TS zoekt.
Dit is een feature alleen voor Windows Server 2003, dit gaat hier niet op, het zijn allemaal Windows XP Prof. machines.

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 17:41
whoami schreef op vrijdag 27 oktober 2006 @ 11:44:
Remoting is het aanspreken van assemblies die zich in een ander AppDomain bevinden.
Om dit te kunnen verwezenlijken, heb je oa een Channel nodig (dit kan http zijn of een tcp channel), en een formatter die je gegevens kan serializeren/deserializeren zodanig dat ze over dat channel kunnen verstuurd worden.
Je kan dit doen mbhv een SoapFormatter, of een BinaryFormatter, of een eigen formatter.

Probleem is, als je een SoapFormatter gebruikt zijn je 'paketten' veel groter. Maw, een BinaryFormatter is veel efficienter dan een soap-formatter.
Het wordt waarschijnlijk tcp en geen http (http vereist IIS op de machines, dat kan helaas niet), gecombineerd met de binary formatter.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:55
http vereist IIS op de machines
Waar heb je dat gelezen ?

we hebben hier ook een edit-knopje

https://fgheysels.github.io/


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
IIS niet niet nodig indien je Remoteing gebruikt per HTTP. Een HttpChannel transporteert berichten van remote objecten met een SOAP bericht (SoapFormatter, een XML bestand). Een TcpChannel is binary. Je hebt ook IcpChannel, maar die is alleen van toepassing als je meerdere processen hebt draaien op dezelfde computer welke met elkaar moeten communiceren.

Transporteren van grote bestanden is uitstekend te doen met .NET Remote. Zo ook callbacks vanuit het remote object. Je moet alleen een tweede channel beschikbaar stellen.

Tip voor de TS: wanneer het proces op de server lang duurt, en je wilt de voortgang van zien aan de client kant, dan is daar wel een oplossing voor. Want het uitvoeren van het proces gebeurt aan de server kant, d.m.v. je remote object. Je kan vanuit de client regelmatig de status vragen. Om dit waar te maken, moet je asynchroon werken. Als het proces draait, kan je client aan de remote object de status aanvragen, ondertussen als het proces asyncrhono werkt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:55
robertpNL schreef op maandag 30 oktober 2006 @ 10:19:
IIS niet niet nodig indien je Remoteing gebruikt per HTTP. Een HttpChannel transporteert berichten van remote objecten met een SOAP bericht (SoapFormatter, een XML bestand).
Idd, vandaar m'n vraag.
Ivm die SoapFormatter: je kan met een Http channel ook een Binary Formatter gebruiken.
Transporteren van grote bestanden is uitstekend te doen met .NET Remote. Zo ook callbacks vanuit het remote object. Je moet alleen een tweede channel beschikbaar stellen.
Met een 2de channel alleen kom je er niet:
\[.NET] Remoting en events

https://fgheysels.github.io/


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
whoami schreef op maandag 30 oktober 2006 @ 10:26:
[...]
Met een 2de channel alleen kom je er niet:
\[.NET] Remoting en events
Tuurlijk moet je meer werk doen, maar het valt allemaal wel mee hoor.

Dit voorbeeld kan je misschien helpen. Bekijk m.n. het voorbeeld bij "Firing Events from Remoting Server". maar eens (remote object) :)

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 17:41
robertpNL schreef op maandag 30 oktober 2006 @ 11:29:
[...]


Tuurlijk moet je meer werk doen, maar het valt allemaal wel mee hoor.

Dit voorbeeld kan je misschien helpen. Bekijk m.n. het voorbeeld bij "Firing Events from Remoting Server". maar eens (remote object) :)
Thanx, daar zitten inderdaad goede voorbeelden bij!
Pagina: 1