| 

.NET C# Java Javascript Exception

2
Hallo zusammen,

ich stelle mir gerade die Frage, wie es möglich ist, ein fertiges Kompilat (Anwendung WinForms, WPF, o.ä.) in C# in verschiedenen Umgebungen auszuführen.

Z.B. soll in der Testversion auf eine Testversion zugegriffen werden und in der Produktionsversion auf die Produktivdatenbank.

Derzeit haben wir den ConnectionString für die Anwendung in die App.Config geschrieben. Da diese aber Bestandteil des ClickOnce-Deployments wird, fällt dies schon mal weg.

Würde mich über eine angeregte Diskussion sehr freuen.

Gruß,
Maik
07.04.2011
macx83 81 1 4
3 Antworten
2
Wie wärs mit einer einfachen Textdatei, wo ein ConnectionString drin steht. Diese Datei wird nicht mit ausgeliefert. Wenn jemand in der Testumgebung arbeiten soll, kann er sich diese Datei erstellen und den dementsprechenden ConnectionString reinschreiben.

Vorteil: Leute, die nichts von der Testumgebung wissen, werden dies niemals erfahren ;)
Nachteil: Die Leute, die in der Testumgebung arbeiten möchten müssen den ConnectionString kennen, bzw wissen wo dieser zu finden ist.

Das ist ein Weg, der relativ einfach und besonders schnell implementiert ist.

Ich hoffe das konnte dir weiter helfen. Wenn du expliziten Code brauchst, meld dich einfach :)

Gruß Andy


// EDIT
Alternativ könnte man auch die Registry dafür "missbrauchen" ;)
07.04.2011
cruX 803 1 1 9
cruX 803 1 1 9
3
Die User der Testentwicklung müssen nicht umbendingt den Connection String kennen. Die App muss wissen, ob es sich um eine Testumgebung handelt und entsprechend die Testdatenbank benutzen. Ich initialisiere den Connection String mit dem Produktivserver und beim Starten der App schaue ich nach ob eine bestimmte Datei existiert (z.B. C:\projekte\tester.txt) und überschreibe dann entsprechend den Connection String. In größeren Umgebungen würde ich das über Gruppenzugehörigkeit in der AD lösen.
Jaksa 07.04.2011
Das wäre, wenn der ConnectionString immer der Gleiche ist. Ich halte mir in einem solchen Fall lieber die möglichkeit offen, für Testzwecke den ConnectionString ändern zu können, ohne die Anwendung neu kompilieren zu müssen.
Natürlich wäre das auch so möglich.
cruX 07.04.2011
Im Nachhinein würde das dann auch für andere Settings gelten. Also die App.config durch eine andere Datei (xml, properties, o.ä.) ersetzen und je nach Umgebung dann einlesen? Macht es sind sofern die Anwendung per ClickOnce bereitgestellt wird, diese Datei dann im selben Ordner der *.application-Datei abzulegen, oder?
macx83 07.04.2011
Wo du die Datei ablegst, bleibt letzten Endes dir überlassen. Wenn ich sowas mache, liefer ich die Datei nicht mit. Alle die Sie benötigen können sich die Date selbst anlegen. Wichtig ist nur, dass du die Datei aus deiner Anwendung findest ;)
Es kommt auch auf deine Anforderungen an. Wenn du per Default in der Testumgebung arbeiten, dann gibst du Datei natürlich mit.
cruX 07.04.2011
Oh man, ich sollte meine Texte durchlesen, bevor ich sie abschicke...
cruX 07.04.2011
2
Wenn sich der ConnectionString ändert, dann würde ich diesen sowieso zentral ablegen.
Beispiel: Prüfe ob Datei C:\projekte\tester.txt existiert und lade dann \server\projekte\connection.txt. Hätte den Charme dass Du alle Tester auf ein Mal updaten kannst. Man könnte sogar für verschiedene Tester verschiede Strings benutzen und hätte trotzdem alles zentral verwaltet. Würde trotzdem AD bevorzugen.

Ups, sollte Kommentar werden, sorry
07.04.2011
Jaksa 4,0k 1 8
Jaksa 4,0k 1 8
Ok, wenn die Datei zentral ebgelegt wird und daraus der ConnectionString gelesen wird, ist das eine sehr gute Möglichkeit. Ich behalte sie auf jeden Fall im Hinterkopf. Das klingt brauchbar =)
cruX 07.04.2011
1
Hallo zusammen,

da ich selbst lange Zeit als Tester gearbeitet habe, sind mir solche Probleme vertraut.

Grundsätzlich gilt (aus rechtlichen Gründen): Das zu testende Programm muss(!) das selbe sein, das später in die Produktion geht. Dazu gehören alle(!) Teile, die über die Installation (egal, auf welchem Wege und in welcher Art diese erfolgt) bereitgestellt werden. Aus diesem Grund ist es ein Tabu, eine Datei für einen Test einfach mal nicht mitzuliefern oder vorauszusetzen, das auf dem Testrechner Dateien vorhanden sind, die es in der Produktion nicht gibt.

Eine Variante, die rechtlich in Ordung ist und für das dargestellte Szenario (Click Once) auch zuverlässig funktioniert, ist, für Abnahme und Produktion zwei unterschiedliche Installationsadressen anzugeben (in einer richtigen Abnahmeumgebung muss man das sowieso tun, weil eine Abnahmeumgebung keinen Zugriff auf die Produktiv-Server haben sollte). An den verschiedenen Adressen befinden sich dann auch die für die entsprechende Umgegebung jeweils korrekten Konfigurationsdateien.

Auf diese Weise kann man auch die Installation korrekt testen (es müssen ja auch die Konfigurationen ordnungsgemäß ausgeliefert werden). Das ist nicht möglich, wenn die Installationen für Test und Produktion unterschiedlich verlaufen müssen.

Das soll dazu erstmal genügen. Wie gesagt: Es hat auch rechtliche Hintergründe (Wer ist verantwortlich, wenn...), weshalb ein Austausch von Dateien oder Konfigurationen "vor Ort" unterbleiben muss. Mit unterschiedlichen Installations-URLs lässt sich das aber ganz bequem lösen.

Ich hoffe, das hat ein wenig weitergeholfen.
07.04.2011
Andreas Ganzer 1,4k 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH