Announcement

Collapse
No announcement yet.

Unternehmensanwendung

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

  • Unternehmensanwendung

    Hallo, ich möchte eine große, verteile Anwendung erstellen und befasse mich momentan ausschließlich mit der dazugehörigen Stammdatenverwaltung. Unter Stammdaten verstehe ich Entitäten wie Benutzer, Gruppen, Adressen usw.

    Bei der Verwaltung dieser Daten benötige ich natürlich die Standard CRUD Operation (Create, Read, Update, Delete), weiterhin muss ich einplanen, dass diese Daten in einer verteilten Microsoft SQL Datenbank persistiert werden. Dazu kommt noch, dass die Serveranwendung, welche ich erstellen möchte, ausfallsicher sein muss, also mindestens zweimal parallel läuft. Somit müssen zwei Serveranwendungen parallel in einer verändernden Weise auf die Stammdaten zugreifen, zum Beispiel Update eines Benutzers. Das muss der zweite Server (Ausfallsicherheit, Lastverteilung) natürlich mitbekommen.

    Dann kommt noch dazu, dass die Stammdaten in einem Cache gehalten werden müssen, damit die Performance optimal ist und nicht jede noch so kleine Clientanfrage in einer Datenbankanfrage endet.

    Da ich die .NET Welt noch nicht so genau kenne, frage ich mich, ob es für dieses Problem, was ja wohl schon mehr als tausendmal gelößt worden ist, nicht eine Standardvorgehensweise, ein Standard Bauteil im .NET Framework, oder auch Zukaufprodukte gibt.

    Möglicherweise wird die Lösung für dieses Problem auch in einem Buch beschrieben, doch die meisten Bücher befassen sich nur mit einzelnen Teilen meines Problems. Als da wären Microsoft SQL Server, Entity Framework usw.

    Es würde mich freuen, wenn mir jemand einen Tip geben könnte.

    Gruß, Dieter

  • #2
    Ich sehe nicht wie das eingesetzte Programmierframework(.NET) dir bei diesen Problemen helfen könnte. Soweit ich deine Anforderungen verstehe sind das Probleme die vom Persistenzsystem gelöst werden müssen. Je nachdem ob du wirklich Lastverteilung brauchst oder dir ein reines Fail-Over (hot spare oder cold) System reicht wären die Stichworte SQL Server Clustering bzw. Database Mirroring und SQL Server Replication.

    Du beginnst deine Frage mit 'ich möchte ...' deshalb sehe ich bei deinem langen Wunschzettel dir Gefahr das du dich völlig verhebst die obigen Probleme sind nichts was man als Programmierer(insbesondere als einzelner) mal so eben nebenbei erledigt da braucht man schon Spezialisten fürs OS und SQL Server mit dem entsprechenden Subsystem an HArdware um das wirklich zum fliegen zu bringen das sind keine simplen Themen. Gerade das von dir angesprochene Theme Ausfallsicherheit muß man schon richtig lösen eine manchmal funktionierende Ausfallsicherheit ist sinnfrei(offensichtlich )

    Comment


    • #3
      Hallo Ralf, danke für die schnelle Antwort.

      Mir ist natürlich bewusst, dass diese Anforderungen nicht mal eben so vor dem Frühstück umgesetzt werden können. Ich habe auch nicht vor dieses als Einzelperson umzusetzen, vielmehr befindet ich mich momentan erst in der Technologie Auswahlphase.

      Das .NET Framework bietet eine ganze Menge an Technologien. Das Entity Framework mit dem OR Mapping zähle ich dazu. Im Netzt findet man immer wieder mal Diskussionen über "Velocity", welches, falls serverseitig verfügbar würde, eine mögliche Caching Technologie wäre. Wenn das kommen sollte, könnte ich mir auch vorstellen, dass dieses im .NET Framework aufgehen wird, so wie das MEF beispielsweise in die 4.0'er Version aufgehen wird. Leider kenne ich nicht alle .NET Technolgien, daher meine Frage.

      Da ich bestimmt nicht der Erste auf diesem Planeten bin, welcher diese Anforderungen hat, habe ich gehofft, und hoffe auch immer noch, dass ich von Microsoft durch irgendwelche Technologien unterstützt werde. Sollte Microsoft keine unterstützenden Technologien bieten, würde ich auch ein Produkt eines Drittherstellers verwenden, welches beispielsweise Microsoft Technologien aufbaut.

      Da nach meiner Auffassung dieses Problem so "Allgemeingültig" ist, und in fast jeder Unternehmensanwendung benötigt wird, sollte das doch irgendwie "einfach" umzusetzen sein. Immerhin schicken wir ja schon Sonden zum Mars und waren mal auf dem Mond .

      Ich bin im übrigen ein Fan von MDD/DSL. Wenn ich das selbst umsetzen müsste, dann würde ich mir ein Model entwerfen, und den Rest genieren lassen. Das habe ich in der Vergangenheit bei anderen Themenstellungen bereits öfters gemacht. Ich würde auf keinen Fall anfangen, und für alle Entitäten Tonne von Code "schreiben", wenn das Grundprinzip doch immer gleich ist. In ein paar Tagen haben wir 2010.

      Wie bereits erwähnt, ich hoffe noch auf "Standardlösungsansätze".

      Comment


      • #4
        Dein Ruf nach "Standardlösungsansätze" (n) ist mir nicht klar. Keiner weiss hier, was du entwickeln willst. Somit kann dir auch keiner irgendwelche "Standardlösungsansätze" empfehlen.

        welcher diese Anforderungen hat,
        Welche Anforderungen hast du denn?

        Doch nicht etwa CRUD??

        Dafür wird es wohl keine Standards geben. Wie sollte es? Das was in jeder Anwendung wie persitiert werden soll, ist doch immer unterschiedlich. Dafür kann es keine Standards geben.

        Du wirst dir immer ein Datenmodell erstellen müssen, dieses analysieren und dann danach CRUD entwerfen.

        Wenn man es etwas einfacher haben will nutzt man OR-Mapper wie Hibernate u.a.

        Für eine solche Anwendung wie du sie planst, wäre zu überlegen, diese plattformunabhängig zu entwerfen....
        Christian

        Comment


        • #5
          Da ich bestimmt nicht der Erste auf diesem Planeten bin, welcher diese Anforderungen hat, habe ich gehofft, und hoffe auch immer noch, dass ich von Microsoft durch irgendwelche Technologien unterstützt werde. Sollte Microsoft keine unterstützenden Technologien bieten, würde ich auch ein Produkt eines Drittherstellers verwenden, welches beispielsweise Microsoft Technologien aufbaut.
          ORM's und Anwendungsungsframeworks gibts es reichlich. Keins davon würde ich als ~Standard~ bezeichnen. Am ehesten als Standard ginge
          wohl noch die Spring.NET+NHybernate Kombi und die CAB bzw. CAG Lösungen(+drumrum aus dem P&P fundus) der Microsoft Patterns&Practices Leute durch. Kommerziell kenne ich nur die XAF+XPO Kombi von DevExpress. Dazu gibts dann noch die von dir genannten Lösungen aus dem Framework selbst wie z.B. das Entity Framework.

          Das Persistenz Thema ist aber ein anderes Problem. So wie ich dein 2.tes Posting verstehe suchs du eine Lösung für eine Skalierung auf dem Middletier in einer n-Tier Anwendung. Da ist man bei Microsoft allgemein schlecht aufgestellt. Die vorhandenen Systeme wie z.B. die Enterprise Services(aka COM+) setzen auf Statuslosigkeit oder sind noch nicht soweit(wie z.B Velocity). Wenn du ein Notwendigkeit dafür in deiner Applikation siehst würde ich für die Serverseite woanders ausschau halten aber nicht bei .NET(und nicht bei Windows und nicht bei Microsoft). Z.B. bei den Java Applikation Servern sind verteilte Caches schon länger üblich.

          Comment

          Working...
          X