Laden...
W
Benutzerbeschreibung

Forenbeiträge von webbi Ingesamt 201 Beiträge

11.09.2008 - 21:29 Uhr

Danke tscherno!

Sieht gut aus!

Wenn ich jetzt noch eine Möglichkeit finde aus Source eine CodeCompilerUnit zu erstellen wär ich (vorerst) wunschlos glücklich 🙂

thx

11.09.2008 - 20:40 Uhr

Ich denke der beste Weg ist dennoch die Lösung Source mit ausliefern und Assembly dann beim Kunden kompilieren.
Ich spar mir einige Probleme, mache das Ganze nicht unnötig kompliziert und muss auch nicht an Performanceprobleme etc. denken

Danke für die Hilfe!

11.09.2008 - 20:12 Uhr

Es kann ja sein, dass ich dich falsch verstehe, aber ich kann die Typen nicht erst zu Laufzeit erstellen.

Ich brauch eine fixes Assembly mit dem Baum und das darf ich nach DB-Update nicht mehr verändern...

11.09.2008 - 20:10 Uhr

$299?
k, dann sorry...

11.09.2008 - 20:07 Uhr

Aber doch wohl aus stinknormalen Basisklassen?

Ja, das schon, verstehe deine Frage

Wenn interfaces nicht wie erwartet funktionieren was ist dann mit vererbung?

trotzdem nicht... Bzw. Was du damit fragen willst...

11.09.2008 - 20:05 Uhr

@FZelle

Hallo und doch doch! Haben wir schon verstanden 🙂

Es gab diverse Gründe (hauptsächlich rechtliche) die gegen Andere DB's sprechen.
Es war ein langer Weg und die Entscheidung FastObjects steht fest.
Möchte hier aber unsere internen Überlegungen nicht unbedingt breittreten...

lg

11.09.2008 - 19:43 Uhr

Hi!

... obwohl sich Crossposten sich im Allgemeinen nicht gerade positiv auf meine Motivation zu helfen auswirkt ...

Wenn du den anderen Thread meinst sorry - war ein Versehen...

Freu mich aber schon auf die Funktion 🙂

thx

//Edit: Erst jetzt gesehen, dass du die beiden zusammenkopiert hast... Obwohl meinen zweiten zu löschen wohl das sonnvollere gewesen wäre... 🙂

11.09.2008 - 19:11 Uhr

Nur so eine Idee, aber veruchs mal hier

11.09.2008 - 19:09 Uhr

Eigentlich machst du das schon richtig - habe grade mal das gleiche versucht und bekomme true zurück...
wenn du keine Rechte hast bekommst du natürlich false...
Kommst du über den Explorer drauf?
Sonnst musst dich eben vorher am Server anmelden...

lg

11.09.2008 - 18:22 Uhr

versuchs mal hier

11.09.2008 - 18:19 Uhr

Sorry, aber ich verstehe die Frage nicht.

Ich kann den Klassenbaun nicht rein aus Interfaces bauen.

11.09.2008 - 18:15 Uhr

Hi!

Würde mal bei Blackberry nach nem SDK fragen...

lg

11.09.2008 - 18:02 Uhr

An der DB selber ist sonst nichts auszusetzen.
Das Problem ist, dass FastObjects so konzipiert ist, dass Version von Applikation und DB immer zusammenhängen.
Das nächste Problem ist, dass es weltweit nur eine Softwarefirma gibt die ebenfalls mit einer Kundenspezifischen DB arbeitet und die schreiben C++…
Darum ist der Support von FastObjects in diesem Punkt leider recht eingeschränkt…

11.09.2008 - 17:56 Uhr

Hört sich für mich so an als ob man so ziemlich alles was man in memory abbilden kann auch persistieren kann.

Nicht immer alles glauben, was das Marketing verspricht...

OQL?

Das Resulat eines OQL-Querys ist eine IList<T>
Wenn es T in meinem Programm nicht genau so gibt wie in der DB ist das Resultat eine Exception...

11.09.2008 - 17:49 Uhr

Das hab ich schon verstanden aber wie gesagt - Das Problem daran ist die FO-Runtime
Ich brauche ein Assembly mit dem Baum (Klassen und keine Interfaces).
Dieses Assembly wird von FastObjects fix mit der DB verbunden.
Also muss ich mein Assembly erstellen, daraus die DB und dann kann ich die DB laden.
Ändere ich nach dem Erstellen der DB das Assembly muss die DB wieder aus dem Assembly upgedatet und neu verlinkt werden.
Das geht nur mit einem FO-Tool und das kann ich nicht beeinflussen...

Denke dass Soucre (verschlüsselt) ausliefern, Erweiterungssource des Kunden hinzufügen, Assembly kompilieren und dann DB updaten der beste Weg ist.
Bzw. der ein einzig mögliche...

Nur wie gesagt dazu wäre CodeCompileUnit aus Source oder Assembly eine Hilfreiche Funktion - Diskutiere das gerade mit PostSharp...
Wenn das funktioniert wie ich mir das wünsche könnte ich sogar darauf verzichten den Original-Source auszuliefern...

thx

11.09.2008 - 17:17 Uhr

Hallo spike24 und danke für deinen Beitrag!

Ich diskutiere genau diese Funktion grade im PostSharp Forum....
Wenn da was rauskommt poste ich natürlich...

thx

11.09.2008 - 17:08 Uhr

Wenn ich dich richtig verstehe scheitert das ganze aber an der FastObjects Runtime:

Die FO-Datenbank kann ich nicht wie z.B. MS-SQL mit Managemen-Studio erstellen und bearbeiten. Ich erstelle ein Assembly und darin ist mein Klassenbaum. Die Klassen in die DB gehören werden als [Persistent] gekennzeichnet und ein FastObjects-Tool baut aus dem Assembly die DB und erweitert danach mein Assembly um interne DB-Funktionen...

Also muss im Assembly der Klassen-Baum fix aufgebaut sein. Ich kann nicht direkt auf die DB zugreifen und sagen hallo Klasse gib mir Felder, eine Objekt-Definition bauen und dann Daten aus der DB laden und daraus ein Objekt erstellen mit dem ich arbeiten kann - Das macht die FO-Runtime.
FastObject ist eben leider in der C# Runtime nicht so aufgebaut, dass die Dynamik die ich haben will so möglich ist.
Also Brauch ich für jede Kunden-DB ein Assembly mit dem Baum...

lg

11.09.2008 - 16:32 Uhr

@jaensen - Wenn ich dich richtig verstehe:

In Delphi gab es keine DB-Objekte, und keinen O/R-Mapper:


  AdressTable.Append();
  AdressTable["Name1"].AsString = "Vorname";
  AdressTable["Name2"].AsString = "Nachname";
  AdressTable.Post();

In CSharp;


  Adresse adr = new Adresse();
  adr.Name1 = "Vorname";
  adr.Name2 = "Nachname";
  adr.Store();

Schema der DB und Schema im Programm MÜSSEN beim laden der DB 100% übereinstimmen - Sonnst spinnt FastObjects.
Und das Schema muss in einem Assembly liegen - Sonnst spinnt FastObject.

lg

11.09.2008 - 16:11 Uhr

Ok, anscheinen schaff ich es nicht mein Problem deutlich genug zu beschreiben oder übersehe etwas. Auf jeden Fall reden wir etwas an einander vorbei…

Ich werde das ganze mal so bauen, dass der Source des DB-Baums komplett mit ausgeliefert wird und dann beim Kunden nach jedem Update oder Erweiterung neu kompiliert und überschreibe einfach meine Original-DLL…

@kleines_eichhoernchen
Wir haben uns aus diversen Gründen für FastObjects entschieden. Ein Runtime dafür gibt es für C++, Java und C#.
Da C++ und Java wiederum aus diversen anderen Gründen ausscheiden muss ich es in C# hinbekommen...

thx

11.09.2008 - 15:42 Uhr

Hi!

Frage 6 wurde im anderen Thread beantwortet:

In Delphi war es keine OODB... Da gab es keine DB-Klassen im Programm sondern nur dynamische Felder.

Nochmal: Die Anwendung wird nicht vom Kunden, sondern von uns erweitert. Das muss aber beim Kunden vor Ort möglich sein.
Es gibt ein Grundsystem das laufend erweitert wird und darauf aufsetzende Erweiterungen.
Es soll auf nicht 100 Versionen geben (bzw. eine Pro Kunde) die ich bei jeder Änderung am Grundsystem wieder aktualisieren muss...

Warum dann was ändern?

Umstellung von Delphi und DBase auf C# und FastObjects

Übrigens, "enhancen" ist kein schönes Wort...

Steht im Wörterbuch... Stell dir einfach vor da steht erweitern... 🙂

Das Problem der Erweiterung ist, dass ich mein Original-Assembly ändern muss - Es geht nur um den Klassenbaum der DB.

Der Rest der Applikation ist bereits erweiterungsfähig - in Funktion und GUI. Nur dass hier temporär Assemblies erstellt und geladen werden und das eben mit dem DB-Schema nicht möglich ist...

lg

11.09.2008 - 15:13 Uhr

Hi!

@MrSparkle

  1. Was genau ist daran nicht zu verstehen?

  2. Wie schon gesagt - unsere Kunden lieben genau das und wir leben seit Jahren davon

  3. Wäre eine Idee - Da ich nur den Code des DB-Schemas liefern müsste wäre das nicht mal das große Problem...

  4. Bin ich grad draufgekommen - obwohl es laut herbivore die Funktionen Assemly lesen, ändern und wieder speichern geben soll...
    Bin aber grade noch auf ILMerge gestoßen.

Source mit ausliefern wäre eine Möglichkeit, an die ich auch schon gedacht hatte - wird wohl drauf hinauslaufen... 😦
Um das sauber zu Lösen steht aber dieses Problem noch im Raum

Welche Frage hatte ich nicht beantwortet?

Jetzt klingt es schon viel mehr nach einer regulären Plugin-Architektur.

🙂 Eben meiner Meinung nach nicht - dar ganze Klassenbaum muss in einem Assembly liegen - Da komm ich allem Anschein nach nicht herum - Sonst wär's das ganze ja kein Problem...

thx

11.09.2008 - 14:16 Uhr

Hallo Ihr!

Neue Idee, neuer Ansatz: hier

Denke es macht hier Sinn einen neuen Thead zu starten.

Sollte aber noch jemand eine Idee zu diesem Ansatz haben freu ich mich aber natürlich auch in diesem Thread noch über eine Antwort.

thx

11.09.2008 - 14:14 Uhr

Hallo Leute!

Ich möchte ein Assembly von mir Kundenspezifisch erweitern. Wie genau das funktionieren soll ist noch nicht klar, was passieren soll schon:
Es soll möglich sein ohne Einschränkungen Klassen, Felder, Properties und Methoden hinzuzufügen - spiele diesbezüglich grade mit PostSharp - Soll das ja so oder ähnlich können.
Unumgehbar ist allerdings, dass sich der gesamte Klassenbaum in einem Assembly befindet… 😦

Das entgeltliche Problem ist aber dann das Assembly wieder zu laden. In meiner Projektmappe gibt es also diese dll und einige Projekte mit Verweisen darauf. Nun ist es möglich, dass ein Kunde mehrere Erweiterungen braucht die nichts miteinander zu tun haben.
Also wird das Programm mehrfach gestartet und je nach dem wird mal die eine erweiterte DLL und mal die andere geladen. Sie liegen beide im Programmverzeichnis - aber eben mit unterschiedlichem File-Namen und die Original-DLL gibt es nicht mehr.
Dann kann ich also das Assembly laden, aber wie sage ich nun meiner Appl, dass es den Verweis ändern soll bzw. geht das überhaupt?

Hatte das ganze hier schon mal diskutiert, allerdings mit anderer Grundidee und falschem Ansatz. Daher habe ich mir erlaubt einen neuen Thread zu starten...

thx

11.09.2008 - 11:47 Uhr

Die Seite hatte ich schon gefunden - Leider noch nicht so komfortabel wie ich mir das vorstelle...

Aber Danke Peter!

lg

11.09.2008 - 11:11 Uhr

ok, danke! habe mir gare ein paar angeschaut und gibt es einen Reflector der sich vs implementieren lässt?
Ich habe den code der Drittanbieter-Componenten, es ist nur umständlich diese Projekte separat offen zu haben und dann darin zu suchen was ich grad brauche...
Ich möchte einfach nur schnell in das etsprechende cs-File auf meiner Platte zur richtigen Position springen können...
Also so als wäre das cs-File Teil meines Projektes ohne dass es das sein muss.
Wenn ich die cs-Files einbinde geht ja alles. Will ich nur nicht ...🙂

thx

11.09.2008 - 00:22 Uhr

wie Xynratron schon sagte - der Networkservice hat keine Netzlaufwerke.

um dir die sache mit der Berechtigung zu erleichtern kannst du mit net use das Laufwerk aber noch mit einem Benutzernamen verbinden der die nötigen Rechte hat...

je nach dem wie viel du da lesen/schreiben willst - Windows ist beim Zugriff auf ein Netzlaufwerk schneller als über UNC-Pfade...

lg

10.09.2008 - 23:51 Uhr

Es geht ja nicht nur um MS-Source sonden auch um Code von Drittanbietern...
Reflector kann ja nur MS.NET decompilen, oder?

thx

10.09.2008 - 22:07 Uhr

Hallo Leute!

Sorry, aber die letzten Wochen waren der Horror und ich bin nicht mal zum schreiben ge-kommen...

@JAck30lena

zu 1) Bin noch nicht dazu gekommen - Versant hat mir bis ende September die Version 11 versprochen und dann mach ich der Performance-Test mit SQL 2008 auf Win 2008 - Poste das dann...
Kannst dir ja aber ne Eval saugen und selber mal ein bisschen spiele wenn'd nicht warten willst...

zu 2) Wenn ich das richtig verstehe ja - Die Felder und verknüpften Objekte werden beim ersten Zugriff darauf aus der DB geladen...?

zu 3) ich finde es auf jeden Fall besser bzw. einfacher als Tabellen. Nähere Infos wird auch hier der Performance-Test bringen

beim komplexen Querys gehe ich mal stark davon aus, dass SQL schneller ist aber ich verwende in unseren Applikationen fast nie einen Query und wenn dann mal 2-3 Felder.
Je komplexer der Klassenbaum desto einfacher auf jeden Fall das Handling mit OODB.

Aber wie ja schon mehrfach gesagt - jedem das seine und für jede Applikation gibt es eine "beste" DB...

lg

10.09.2008 - 21:37 Uhr

Noch wer eine Idee dazu?

thx

10.09.2008 - 19:44 Uhr

Kommt eben auf die Arbeitsweise an....
Darum schlage ich ja vor die Möglichkeit zu schaffen und nicht das Forum umzustellen...

10.09.2008 - 18:19 Uhr

Was ich schon faszinieren Finde ist, dass FastObjects folgendes zu Laufzeit schafft:

Ich definiere z.B. die Klasse Adresse s.o. mit dem [Persistent] Attribut. Die Klasse DBObject hat keine Basisklasse.
Wenn ich jetzt eine Adress-Objekt erstelle (Adresse adr = new Adresse()) besitzt dieses Adress-Objekt zwei FastObjects-Properties ohne, dass ich sonst was mit dem Objekt machen muss.
Also gehe ich davon aus, dass ich zur Laufzeit Felder und Properties zu einer Bestehenden Klasse hinzufügen kann...?

thx

//edit: Die FO-Runtime ist in J# geschrieben, aber ich hoffe mal was in J# geht bekommt mal auch in C# hin...?

10.09.2008 - 17:04 Uhr

vielmehr wollte ich damit sagen, das dort die begründung steht, warum der titel nicht geändert wird und dein anliegen somit auch im sande verlaufen wird. sry.

k,
thx

10.09.2008 - 16:59 Uhr

Hi!

Auch ich schließe mich McSteel an würde vorschlagen, dass der User im Kontrollzentrum einstellen kann, wie der Titel aussehen soll...
Ich kenne die Funktionen so aus anderen Foren und "Wir wollen ja immer besser werden"!

thx

lg

10.09.2008 - 16:53 Uhr

??? Sorry, ich steh grad...

Der Titel soll geändert werden, ja!
Genau so wie es McSteel beschreibt...
Von allen myc#.de Seiten, ja!
Aber das kann ich ja nicht beeinflussen...???

thx

10.09.2008 - 16:49 Uhr

Danke, aber den hab ich schon gesehen...
Ich will ja aber nicht jede Seite als Lesezeichen speichern müssen sondern in den Tabs des Browsers (Opera) nur das Interessante stehen haben.
Ober übersehe ich da was?

thx

10.09.2008 - 16:26 Uhr

Hallo Leute!

Die Seitentitel fangen ja immer mit "myCSharp.de - DIE C#- und .NET Community" an hat man einige Seiten offen steht man vor dem Problem, dass der eigentlich interessante Teil des Titels vom Browser abgeschnitten wird...

Das wäre umgekehrt doch sinnvoller...
Dass es eine Seite vom Forum ist sehe ich ja am Logo...

lg

10.09.2008 - 15:55 Uhr

schon klar, wie mein Problem mit den Feldern lösen könnte steht jetzt aber immer noch im Raum...

Ich umgehe die Mehrfachvererbung eh mit Schnittstellen - Anders gehts ja nicht, aber ich hätte einige Punkte wo die Mehrfachvererbung der einfachste Weg wäre...

lg

10.09.2008 - 15:21 Uhr

ok, das sieht ja schon mal gut aus...

Aber geht nur mit Methoden 😦
Aber was mach ich mit meinen Feldern und Properties?

lg

10.09.2008 - 13:55 Uhr

Was meinst du mit Erweiterungmethoden?

Obwohl ich jetzt weniger die Klassenmehrfachvererbung als mein problem mit dem DB-Schema diskutieren mochte...

lg

10.09.2008 - 09:23 Uhr

Doch funktioniert,
...
auslagern.

Ich will aus mehreren Klassen eine machen. Dass das mit Interfaces geht ist mir schon klar! Aber eben nicht so wie ich es will...



public class ClassA
{
  public ClassA()
  {}
}

public class ClassB
{
  public ClassB()
  {}
}

public class SubClass : ClassA, ClassB
{
  public SubClass()
  {}
}



Ob jetzt Mehrfachvererbung in deinem Fall sinnvoll ist, kann ich nicht beurteilen, meißt ist es aber der falsche Weg.

Beim DB-Schema nicht - Aber es gibt einige stellen im Programm wo das schon toll wäre...

Aber egal...

10.09.2008 - 08:17 Uhr

Aso - War ja schon spät 🙂

Die Toolbox vom VS ist ja nicht die stabielste, gerade wenn viel installiert sit, aber das Problem hatte ich bei MS-Addons noch nie...
Schon mal versucht das SDK neu zu installieren?

lg

10.09.2008 - 01:10 Uhr

Bei der Gelegenheit möchte ich noch ein altes Thema wieder aufwärmen - vielleicht gibt's ja eine Idee dazu: CodeCompileUnit aus Source oder Assembly

lg

10.09.2008 - 00:42 Uhr

Hi

Jo, ich hab auch irgendwie das Gefühl dass man im Moment an einander vorbeiredet.

Scheint so 😦

Mir ist auch nicht bekannt dass man in Delphi 'dynamisch und zur Laufzeit' (!) eine dll neu linkt. Das ist eher "neu kompilieren und App neu star-ten"

Es ist ein eigenes Tool und nicht die Haupt-Appl aber eben ohne Delphi....
Nicht unbedingt auf einem Standard-Weg aber es geht... => Läuft ja...
Möchte ich hier aber nicht weiter breittreten...

Jedenfals ist in meinen Augen die Problemstellung lösbar, aber vielleicht muss man die Problemstellung nochmal genauer ausformulieren um Miss-verständnisse zu vermeiden.

Gut, dann versuch ich's noch mal mit ein paar Code-Schnipsel...

Eine Basisklasse:


    [Persistent]
    public partial class Adresse : DBObject {
   
        public Adresse() {
        }
                
        private String Name1;
        
        private String Name2;
        
        private String Name3;
        
        private String Name4;
        
        private String Ort;
        
        private Int32 PLZ;
        
        private String Staat;
                
        private String Strasse;
        
        private String Suchbegriff;
                        
        public String _Name1 {
            get {
                return this.Name1;
            }
            set {
                this.Name1 = value;
            }
        }
        
        public String _Name2 {
            get {
                return this.Name2;
            }
            set {
                this.Name2 = value;
            }
        }
        
        public String _Name3 {
            get {
                return this.Name3;
            }
            set {
                this.Name3 = value;
            }
        }
        
        public String _Name4 {
            get {
                return this.Name4;
            }
            set {
                this.Name4 = value;
            }
        }
        
        public String _Ort {
            get {
                return this.Ort;
            }
            set {
                this.Ort = value;
            }
        }
        
        public Int32 _PLZ {
            get {
                return this.PLZ;
            }
            set {
                this.PLZ = value;
            }
        }
        
        public String _Staat {
            get {
                return this.Staat;
            }
            set {
                this.Staat = value;
            }
        }
                
        public String _Strasse {
            get {
                return this.Strasse;
            }
            set {
                this.Strasse = value;
            }
        }
        
        public String _Suchbegriff {
            get {
                return this.Suchbegriff;
            }
            set {
                this.Suchbegriff = value;
            }
        }
    }

(Die Formatierung kommt vom CSharpCodeProvider, da ich mit einem Tool von mir das .cs-File erstelle. Eine GUI ist ja doch bequemer als das ganze zu tippen… Dass die Properties mit ’_’ anfangen hat übrigens einen tieferen Sinn – Bitte nicht bemängeln 🙂 )

Das ist z.B. ein Teil der AdressKlasse in meiner db.dll. Nun möchte ein Kunde ein Geburtsdatum haben.

Dann gibt es ein Script beim Kuden:


    partial class Adresse {
        private DateTime Geburtsdatum;

        public DateTime _Geburtsdatum {
            get {
                return this.Geburtsdatum;
            }
            set {
                this.Geburtsdatum = value;
            }
        }
    }
 

So. Dann wir die DB aktualisiert: Um die DB-Struktur zu ändern benötigt man ein Assembly und daraus wird die DB aufgebaut. Ist bei FastObject so.
Dazu erstelle ich ein temporäres Assembly das nur die Klassen und die privaten Felder enthält => Das übergebe ich ein einem Tool von
FastObjects und das bastelt daraus eine DB.
Soweit auch kein Problem und funzt alles.

Nun habe ich meine db.dll mit den Basis-Schema und den Funktionen dazu und eine kunde.db.dll mit dem Geburtsdatum.

Und dann steh ich vor einer Wand und stell blöde Fragen… 🙂

Wie schaffe ich es jetzt, dass im zur Laufzeit die Klasse Adresse mit Basisfelder und Geburtsdatum zur Verfügung habe…?

Ich hoffe ich hab’s jetzt verständlich hin bekommen – Ist ja leider nicht so einfach…

lg

09.09.2008 - 23:09 Uhr

Hi!

Microkernel-Pattern?
Ok, kommt auf die "Anschauen-Liste"... Danke!

Eine andere Frage: Warum liegt alles als "Scripte" vor, wenn es eh nicht durch den Kunden geändert wird? Wenn eh nur die Entwickler/Sachbearbeiter eurer Firma das ändern, könnte man es doch normal Compilieren, was um einiges Sicherer und Performanter ist!
Und man könnte alles Bequem über die App.config steuern, wenn es zur Compile-Zeit bekannt ist.

Ist administrativ nicht möglich:

  1. Die Applikation muss beim Kunden vor Ort erweiterbar sein.
  2. Bei jeder neuen Version des Kernprogramms für jeden Kunden eine eigene Version erstellen ist nicht wirklich der Weg den ich anstrebe...

Und ob das Assembly in VS oder der Appl erstellt wurde ist doch der Performace egal...?
Wie gesagt funktioniert die Erweiterung des System bis auf die DB super und hier wären mir keine Performace-Probleme aufgefallen.

lg

09.09.2008 - 21:43 Uhr

Hi!

Du hast ein CE Projekt und möchtest es auch einem WM5 laufen lassen?
Lang her, aber rechte Maustaste auf das Projekt und da gibt es Plattform ändern oder so.
Wenn ich dein Problem richtig verstanden habe..

lg

09.09.2008 - 21:32 Uhr

@ujr & herbivore

ASPxHtmlEditor mit Spell Checking

Ist keinem von euch mal richtig langweilig? mycsharp.de in aspx wäre doch ein cooles Projekt...?
Außerden solle ein C# Forum ja auch in C# geschrieben sein, oder... 🙂

lg

09.09.2008 - 21:27 Uhr

Hi und danke für die Antworten!

Um Properties und Funktionen zu einer bestehenden Klasse hinzuzufügen kannst du gerne die Vererbung verwenden, ist prima dazu geeignet und bestens in C# integriert

Ansichtssache => Mehrfachklassenvererbung gibt es nicht und das ist ein wichtiger Kern unseres Ur-Systems.

Ich würde als erstes nicht zur immer zur Laufzeit kompilieren
...
am Ende etwas langsam.
Wenn Du grundsätzlich deinen DL als Plugins lädst, kann man die ja direkt verändern

Vielleicht hab ich mich unglücklich ausgedrückt: Beim Start des Programms wird kompiliert. Nur Im "Admin-Modus" werden dann Scripts nach Änderung neu kompiliert...
Und nochmal: Verändern soll man alles können!

Allerdings würde ich eher dazu tendieren, das DB-Schema zu Versionieren und in den "Plugins" mit Factory und Vererbung arbeiten. (Sprich: Feld dazu => Version++ => zusätzliches Plugin aus Datenklasse der vorherigen Version mit neuem Property.)

Kann ja sein, dass ich das einfach nicht verstehe, aber was??? Gibt's da zufällig ein gutes Bespiel dazu?
Nochmal die Ecken an der Sache: Schema der DB und mein DB-Schema im Programm müssen übereinstimmen - Das will die DB so.
Es gibt einen Basisbaum => Auf den wird aus dem "Programmkern" zugegriffen.
Diesen Baum will ich erweitern und aus meiner PlugIn-Dll auf alle Felder und Funktionen der "Kernklasse" und der Erweiterungen zugreifen können.
Das soll so gehen?
Cool

Für Funktionsänderung stimme ich kleines_eichhoernchen mit dem Decorator-Pattern zu. Eventuell ist auch das ChainOfResponsibility-Pattern was für dich, wenn es um Funktionserweiterungen geht.

Ein Tag ist zu kurz.. Bin heute noch zu nix gekommen, aber mal schauen, was noch wird...
Auch hier die Frage ob wer ein Beispiel kennt.

Ein komplett "ich schreib mich selbst"-Programm ist mir suspekt.

So ist es ja nicht. Der Kunde selber kann ja nix verändern, aber er bekommt alles was er will.
Und mit dem Konzept sind wir (in der Delphi-Version) aus seit Jahren seht erfolgreich.
Das gleiche Programm - bei einem Kunden nur ein Mail-Klient mit mini-DMS beim anderen ein volles DMS mit Verwaltung der ganzen Firma... Ausbaufähig nach Kundenwunsch.
Sorry, ich finde an jedem Programm mit dem ich Arbeite zig Sachen die mir nicht Passen... Wie ich das ändern könnte wäre ich glücklich...?

@MrSparkle

Das Kompilieren an sich ist ja nicht das Problem - Das funktioniert schon alles perfekt => Ausgenommen der DB-Klassen...

Vielleicht übersehe ich ja wirklich etwas, aber nützt mir nichts von einer Basisklasse ableiten und erweitern - Das ist ja null Problem und funktioniert auch.
Ich muss die Klasse selber erweitern. Das ist das Problem!

Und was möchtest du mit dem String(Builder) machen???

Im Delphi war es keine OODB... Da gab es keine DB-Klassen im Programm sondern nur dynamische Felder.

Wo es dennoch notwendig war eine Kasse zu erweiter (!!!NICHT ABLEITEN!!!) wurde eine neue DLL kompiliert und dann Original-DLL und Kunden-DLL in eine neue DLL gelinkt und die original damit überschrieben...

lg

09.09.2008 - 02:52 Uhr

Und immerhin ein wenig kleiner als ein "großes" Assembly wäre das Module...

Auch wenn die Größe ja keine Rolle spielt 🙂 Hab das jetzt nur überflogen, aber sieht auch nicht schlecht aus.

Werde mich morden mal damit quälen und dann Erfahrungen posten...

Danke!

//edit: Biite mall eine Rechtsreibbrüfung in den etidor einpauem... Tange -_/

09.09.2008 - 02:44 Uhr

ok, gefunden, dank!

aber hier im Forum auch nicht grade wahnsinnig vertreten...
Sieht aber interessant aus wenn die MS-Beschreibung richtig verstanden habe... Wühl mich morgen mal durch msdn...
Hast du schon mal was damit gemacht?

lg