none
Datenaustausch und regelmäßiger Import/Export RRS feed

  • Frage

  • Hallo,

    ich baue gerade eine Webapp, die mehrmals Täglich aktualisiert werden muss. Da die Datenmenge recht groß ist, die verschoben wird, fände ich es hilfreich, wenn ich einfach Dateien per (S)FTP hoch laden könnte. Leider habe ich keine Infos gefunden, ob man bei einer WebApp überhaupt Daten hoch laden kann, in Verzeichnisse, auf die die WebApp zu greifen kann.

    Eine weitere Frage die ich mir stelle, ist, wie kann ich gewährleisten das der Import und Export der Daten automatisch regelmäßig erfolgt. 

    Kann da wer weiter helfen?

    Falls relevant, es soll eine ASP Core - Restful API werden. 

    Donnerstag, 1. Dezember 2016 08:29

Alle Antworten

  • Hallo UrielMhezzek,

    ich habe ein bisschen nachgeforscht und dieses ähnliche Thema gefunden:

    https://social.msdn.microsoft.com/Forums/windows/en-US/71b86ff4-4c86-4d88-ada0-08d3a6ddbb0b/c-application-publish-through-ftp-doesnt-update?forum=winformssetup

    In den Links von dem Artikel ist es beschrieben wie man das genau machen soll.

    Gruß

    Aleksander


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht,  kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.


    Donnerstag, 29. Dezember 2016 09:31
  • Hallo Uriel,

    welche Art von Daten sollen von wo nach wo verschoben werden? Was soll mit den Daten am Ziel passieren?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 29. Dezember 2016 09:42
  • Hallo,

    die Dateien werden durch die WebApp gelesen und daraus Datenbankupdates gemacht. Danach sollen sie verschobene werden. 

    Ich hatte gehofft, das die ich sie mittels FTP hoch laden kann und dann einlesen. Nur kann man bei WebApps scheinbar keinen Filewatcher oder so etwas installieren. Auch ein Script, welches alle X Minuten los rennt und prüft, scheint nicht im Sinne von WebApps zu sein, oder?

    Ebenso soll regelmäßig ein Statusupdate an die Lokale Maschine mittels Datei gemeldet werden. Auch hier hoffe ich auf FTP.

    Gruß

    Donnerstag, 29. Dezember 2016 09:55
  • Hallo Uriel,

    zuerst sollten wir evtl. mal klären, was für dich eine WebApp ist.

    An den Client kannst Du aber schon mal gar nichts übermitteln, wenn dieser das nicht will. Für Pushbenachrichtungen vom Server zum Client/Browser kannst Du bspw. SignalR verwenden.

      https://chsakell.com/2016/10/10/real-time-applications-using-asp-net-core-signalr-angular/

    Aber eine Übertragung an den Client per FTP oder Dateidownload ohne Benutzerinteraktion ist aus Sicherheitsgründen in keinem Fall möglich.

    Periodisch wiederkehrende Aufgaben bzw. ein Monitoring solltest Du über eine Dienstanwendung lösen.

    Es geht zwar auch so, ich persönlich halte das aber nicht unbedingt für sinnvoll.

      http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    • Bearbeitet Stefan Falz Donnerstag, 29. Dezember 2016 10:12
    Donnerstag, 29. Dezember 2016 10:07
  • Ich verstehe darunter eine Applikation die im Web ausgeführt wird. Also klassische Websites bis hin zu komplexen Tools, wo die App sich nur um die Darstellung kümmert und der erst irgendwo anders bearbeitet wird. 

    In meinen Fall eine Asp.Core Entwicklung.

    Donnerstag, 29. Dezember 2016 10:14
  • Hallo Uriel,

    ok. Wie schon geschrieben, ist die Übertragung von Dateien an den Client ohne Benutzerinteraktion nicht möglich. Du könntest Pushmechanismen wie SignalR verwenden (wenn der Client das unterstützt) um Daten periodisch an den Client zu senden, diese muss die Clientanwendung dann verarbeiten.

    Wichtig ist, die Trennung von Client (in den meisten Fällen der Browser) und Server (das ist der Part, der eben auf dem Server läuft) zu kennen und sich zu verinnerlichen, dass der Client in der Regel hohe Sicherheitsbeschränkungen hat. Wenn man von der Serverseite aus unbemerkt vom Benutzer Dateien auf den Client übertragen und im schlimmsten Fall auch öffnen könnte, wäre das verständlicherweise fatal. Daher ist sowas nicht möglich. Wenn deine Anwendung das könnte, könnte es jede andere Anwendung auch.

    D.h. jede Interaktion zwischen beiden Systemen geht zuerst einmal immer vom Browser aus. Wenn bspw. über WebSockets vereinbart wird, dass der Client dann auf neue Informationen automatisch reagieren kann, kann man das als Kanal für Pushbenachrichtigen verwenden.

    FTP solltest Du aber auf jeden Fall vergessen, das macht bei Webanwendungen wenig Sinn. Besser wäre es, die Daten über einen Webservice, bspw. als JSON (zur Not auch in gepackter Form) an die Serveranwendung zu senden, dort können die Daten dann auch direkt weiterverarbeitet werden.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort vorgeschlagen Stefan Falz Donnerstag, 2. März 2017 00:56
    Donnerstag, 29. Dezember 2016 11:13
  • Hallo,

    vermutlich habe ich mich falsch ausgedrück. der Client (also der Browser) soll überhaupt nichts mit der Datenübertragung machen können. Außer evtl ein paar Statusabfragen.

    Der Service über API hatte ich auch schon dran gedacht, dann muss ich wieder einen speziellen Client bauen, der die Daten liefert und abholt. Was ich für normale .csv Dateien ein wenig zu viel Overhead sehe. 

    Aktuell habe ich ein Verzeichnis in meinen Projekt namens Filetransfer. Hier habe ich die Daten liegen, die ich verarbeiten will. Das funktioniert wunderbar, zumindest auf meinen Entwicklungsrechner. Ein solches Verzeichnis steht mir später auf dem Server nicht zur Verfügung? 

    Donnerstag, 29. Dezember 2016 11:22
  • Hallo Uriel,

    natürlich kannst Du serverseitig irgendeine Datei aus irgendeinem Verzeichnis (auf das der ausführende Account deiner Webanwendung Zugriff hat) auslesen und verarbeiten.

    Wenn man das auch periodisch machen möchte, bietet sich evtl. Hangfire an.

      http://hangfire.io/

    Falls Du lokal mit IIS Express und nicht mit einem richtigen IIS arbeitest, solltest Du das noch ändern. IIS Express hat erhebliche Unterschiede zum richtigen IIS, vor allem, da IIS Express eine normale Anwendung ist, die mit deinem Benutzeraccount ausgeführt wird und daher über weitreichende Berechtigungen verfügt und zudem eine Desktopinteraktion ermöglicht, die es in einem Dienst wie IIS nicht gibt.

    Für die Übertragung zum Client ist CSV aber ungeeignet, hier solltest Du die Daten über einen Webservice per JSON übertragen. Das lässt sich dann auch ohne größere Umwege im Client verarbeiten und anzeigen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort vorgeschlagen Stefan Falz Donnerstag, 2. März 2017 00:56
    Donnerstag, 29. Dezember 2016 11:30