Announcement

Collapse
No announcement yet.

Zugrif auf Datenbank über das Internet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugrif auf Datenbank über das Internet

    Hallo,

    ich habe ein Programm (C#.NET mit Forms) das über ADO.NET mit meiner Datenbank (Oracle) arbeitet.
    Ich verwende in meinem Programm ADO.NET mit einer verbindungslosen Technik
    IDs (Autowert) wird zuerst mit ADO.NET erzeugt, nach dem Speichern in der Datenbank mit dem DataSet synchronisiert (CURRVAL).
    Nun bekomme ich eine neue Anforderung: Das Programm soll auch in mehreren Niederlassungen verwendet werden!

    Fragen:
    Kann ich das bestehende DOT.NET-Forms-Programm (mit zusätzlichen Methoden für die Kommunikation über das Internet) den Niederlassungen übergeben, das mit ADO.NET, XML oder sonst was mit meiner Datenbank sinnvoll kommuniziert?

    Zudem interresiert mich wie man die IDs (Primärschlüssel) verarbeitet. Was ist wenn der Server mal schlecht erreichbar ist?

    Schönen Gruß
    Karl


    Weiter Infos und Gedanken: (Falls sie relevant werden sollten)

    Ich denke dass da ASP.NET das bessere währe.

    Ich kann jedoch noch kein ASP.NET und das C#.NET-Programm (mit Forms) habe ich schon.

    Selbstverständlich habe ich nur einen begrenzten Zeitraum für die Fertigstellung der Aufgabe.

    Außerdem habe ich eine sehr anspruchsvolle GUI (ist schon fertig!)
    • Kapazitätsplanung für den Projektleiter, Disposition und dem Geschäftsführer
    • Verbundenen Zellen für die Kalenderwoche
    • Multi-Select, mehrere Projektnummern können verteilt vergeben werden
    • In dieser Matrix kann der Projetleiter seine Mitarbeiter Projetnummern zuweisen um die Auslastung für die Zukunft zu erkennen.
    • Das Bild zeigt nur eine von mehreren Forms an



    Ablauf ... nur mal so gedacht von mir ....
    - Das Programm wird in der Niederlassung gestartet
    - Die Daten werden übers Internet per XML geholt (wie?)
    - Die Daten werden Modifiziert
    - Die Daten werden per XML zu Datenbank geschickt (wie?)
    - Das DataSet bekommt die von der Datenbank zugewiesenen IDs zum Abgleichen (CURRVAL) der Lokalen Daten

    SNAG-001.jpg
    Zuletzt editiert von SideKick; 16.07.2012, 10:01.

  • #2
    Kann ich das bestehende DOT.NET-Forms-Programm (mit zusätzlichen Methoden für die Kommunikation über das Internet) den Niederlassungen übergeben, das mit ADO.NET, XML oder sonst was mit meiner Datenbank sinnvoll kommuniziert?
    Datenbank im Internet veröffentlichen und dein Programm kann einfach so weiterarbeiten. Securitymäßig vermutlich, auch mit Oracle, eine Katastrophe. Ein Option wäre die Funktionalität per Webservice zu veröffentlichen. Wenn dein bisheriges Programm eng mit Dataset/DataTable verbunden ist und es keinen einfachen Weg gibt ein besserer clientinternes Datenmodel aufzusetzen dann kann man zur Not auch Datasets über einen Webservice veröffentlichen.

    Zudem interresiert mich wie man die IDs (Primärschlüssel) verarbeitet. Was ist wenn der Server mal schlecht erreichbar ist?
    Was machst du denn in Moment wenn deine DB nicht erreichbar ist?

    Da gibt es üblicherweise 2 Wege. a.) Temporäre IDs verwenden die erst beim speichern in die Datenbank durch konkrete in der Db ermittelte ersetzt werden. Oder die Datenbank bei der Erstellung von IDs raushalten durch Verwendung clientseitig generierter Keys. Also zum Beispiel durch GUIDs (so heißen die in .Net in der DB irgendwie UID, UUID, Uniqueidentifier oder so).

    Ich denke dass da ASP.NET das bessere währe.
    Das ist Technik von gestern. Die Optionen wären eher ein RichClient, also eine Desktopanwendung die über Webservices mit einer Serveranwendung kommuniziert oder eine ASP MVC Anwendung. Silverlight ist denke ich mal tot so das sich die Mühe sich damit zu beschäftigen hinfällig ist. Was als Alternative zumindest beleuchtet werden sollte ist ob man die Anwendung nicht einfach so belassen kann und man zwischen den Niederlassungen einfach ein VPN auspannt wenn dies nicht eh schon existiert oder einfach die Anwendung über einen virtuellen Desktop (Citrix etc.) bereitstellt.

    Comment


    • #3
      Hallo,

      Vielen Dank @Ralf Jansen für deine Antwort

      Ein Option wäre die Funktionalität per Webservice zu veröffentlichen. Wenn dein bisheriges Programm eng mit Dataset/DataTable verbunden ist und es keinen einfachen Weg gibt ein besserer clientinternes Datenmodel aufzusetzen dann kann man zur Not auch Datasets über einen Webservice veröffentlichen.
      Ich habe mir die Seite „Verwenden eines 'DataSet' von einem XML-Webdienst aus (ADO.NET)“ kurz angeschaut.
      Was bedeutet „dann kann man zur Not auch Datasets über einen Webservice veröffentlichen“
      Welche Probleme könnte ich bei dem Einsatz von Webservices bekommen?
      Ist das viel Aufwand?

      Da gibt es üblicherweise 2 Wege. a.) Temporäre IDs verwenden die erst beim speichern in die Datenbank durch konkrete in der Db ermittelte ersetzt werden. Oder die Datenbank bei der Erstellung von IDs raushalten durch Verwendung clientseitig generierter Keys. Also zum Beispiel durch GUIDs (so heißen die in .Net in der DB irgendwie UID, UUID, Uniqueidentifier oder so).
      • Temporäre IDs
      • Die verwende ich im Augenblick und es funktioniert auch sehr gut
      • Wir haben es jedoch nur im Lokalen und im VPN-Netz praktiziert.
        GUIDs
      • Die GUID-Methode habe ich mir soeben mal im Internet angeschaut.
      • Ich denke das bei einem Zeitversetztem Abgleich dieses Methode auf jedem Fall notwendig ist.
      • Mit dieser Methode könnte man sich sogar die XML-Dateien per E-Mail (nicht geplant!) hin- und herschicken ohne das es ein Problem mit dem Abgleich der Datenbank geben wird… hmm?


      Die Optionen wären eher ein RichClient, also eine Desktopanwendung die über Webservices mit einer Serveranwendung kommuniziert oder eine ASP MVC Anwendung. Silverlight ist denke ich mal tot so das sich die Mühe sich damit zu beschäftigen hinfällig ist. Was als Alternative zumindest beleuchtet werden sollte ist ob man die Anwendung nicht einfach so belassen kann und man zwischen den Niederlassungen einfach ein VPN auspannt wenn dies nicht eh schon existiert oder einfach die Anwendung über einen virtuellen Desktop (Citrix etc.) bereitstellt.
      Eine VPN-Verbindung gibt es schon zu einigen Niederlassungen, es ist jedoch nicht möglich zu allen eine Verbindung einzurichten, schade.

      Citrix hätte ich auch am liebsten gehabt. Damit bräuchte ich einfach gar nichts machen. Doch leider haben wird die Technik derzeit nicht im Hause

      Von ASP MVC habe ich schon interessante Dinge gehört, jedoch habe ich noch nichts damit gemacht.

      Ich muss zugeben da gibt es eine Menge an Technik, die ich erst mal verarbeiten muss.

      Da ich der einzige Programmierer im Hause bin, benötige ich eine möglichst kleine Lösung. In unserer Firma incl. Niederlassungen arbeiten derzeit ca. 300 Mitarbeiter. Das Programm das ich Erweitern soll ist nur für die Projektleiter und Projektassistenten. Natürlich können zukünftig weiter Anforderungen kommen.

      Ich denke, dass eine mögliche Variante ein Webservice sein könnte.

      Kann ich mit meinem vorhandenen C#.NET mit Forms - Programm mit einen Webservice verwenden?

      Ob ich nun GUID oder Temporäre IDs verwende weiß ich noch nicht.

      Schönen Gruß
      Karl

      Comment


      • #4
        Was bedeutet „dann kann man zur Not auch Datasets über einen Webservice veröffentlichen“
        Webservices sind ja als offener Standard gedacht damit theoretisch jeder mit jedem sprechen kann allein dadurch das er die Webservice Definition kennt. Ein ADO Dataset ist aber eine absolut Microsoft zentrisches propietäreres Ding. Dessen XML Darstellung kann man eigentlich nur sinnvoll verwenden wenn man es wieder in eine ADO Dataset packt. Das wiederspricht dem was man mit Webservices (Systemunabhängigkeit) eigentlich erreichen will.


        Welche Probleme könnte ich bei dem Einsatz von Webservices bekommen?
        Ist das viel Aufwand?
        Kann ich mit meinem vorhandenen C#.NET mit Forms - Programm mit einen Webservice verwenden?
        Du kannst natürlich jede Technik in (fast) jedem Context verwenden. Ob das in deinem Fall viel Änderungsaufwand bedeutet kann man alleine daran das es aktuell eine Winfoms+ADO.Net Anwendung ist nicht beurteilen. Da du sowohl Client als auch Server dann in der Hand hast und beides in der Sprache C# machst sehe ich zumindest keine besonderen Schwierigkeiten mit denen man sich sonst mit der (theoretischen) Systemunabhängigkeit rumschlägt haben wirst. Du kannst also weitestgehend denn Tutorials von Microsoft folgen ohne gezwungen zu sein dir tieferes allgemeines Webservicewissen aneignen zu müssen. Ein Problem könnte werden den Webservice zu veröffentlichen. Traust du dir zu einen Webserver (IIS) ins Internet zu stellen der halbwegs sicher ist?

        Comment


        • #5
          Hallo,

          Das wiederspricht dem was man mit Webservices (Systemunabhängigkeit) eigentlich erreichen will.
          Die Systemunabhängigkeit benötige ich in meinem Fall nicht.

          Traust du dir zu einen Webserver (IIS) ins Internet zu stellen der halbwegs sicher ist?
          Ja, das ist kein Problem.

          ---------------------------------------------------------------
          Die Webservices sind für Systemunabhängigkeit (nachgelesen) gebaut wurden, die ich in meinem Fall nicht brauche.

          Ich hatte mir die Webservices entwas anderst vorgestellt.

          Für mich würde auch ein proprietäres System ausreichen das einfach nur die Datenbank per XML (aus dem DataSet generiert) in beide Richtungen (Client - Datenbank) über das Internet synchronisiert.

          Ich habe selbstverständlich schon im Internet nachgeschaut jedoch nichts Geeignetes gefunden.

          Ich werde wohl um den IIS nicht vorbei kommen?

          Ansonsten denke ich, dass ich das mit dem Webservice schon gebacken bekomme.


          Gruß :-)
          Karl

          Comment

          Working...
          X