Hallo zusammen,
ich habe eine kleine Winform-Anwendung mit mehreren .DLLs (.NET-Assemblies). Die Sache läuft auch super, nur wenn wir versuchen das Ding über einen Citrix Metaframe Client aufzurufen startet die Anwendung nicht. Könnte eventuell ein Rechteproblem sein, meint mein Admin. Wenn ich die Dateien auf den Metaframe-Server kopiere, rennen die Dinger, die CLR ist also installiert und läuft.
An den Security-Einstellungen der Assemblies habe ich nicht rumgeschraubt. Es handelt sich um .NET 2.0.
Hat jemand damit Erfahrung? Wir wissen grad nicht mehr weiter.
Danke im voraus und Grüße
Torsten
Hallo Norman-Timo,
das Problem ist, dass ich nie **null **zurückbekomme. 🤔
Ich häng mich mal hier ein. Ich bastel auch grade als blutiger Remoting-Anfänger herum. Ich habe einen Server, der einfach nur Daten entgegennimmt und wegschreibt.
Ich habe folgenden Code (Server):
IChannel channel = new HttpChannel(8000);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(LogServer),
"RemoteObject.Soap", WellKnownObjectMode.Singleton);
Mein Client sieht wie folgt aus:
settings = TransportSettings.Create();
channel = new HttpChannel();
ChannelServices.RegisterChannel(channel, false);
obj = (LogServer)Activator.GetObject(typeof(LogServer),
"http://" + settings["remoteLoggingServerIP"] +":8000/RemoteObject.Soap");
Klappt auch alles top, nur bekomme ich in jedem Fall ein LogServer-Objekt zurück. Egal ob der Server läüft oder nicht. Wenn ich dann auf diesem Objekt eine Methode aufrufe knallt es natürlich.
Wie kann ich prüfen, ob der Server läuft oder nicht?
Vielen Dank,
Torsten
Hallo nochmal,
ich hab die .sln jetzt editiert. Hat alles wunderbar funktioniert. Man sollte in den Projekten dann nur die Referenzen auf die Assemblies neu anlegen. Das wars.
Danke für die viele Hilfe.
Grüße
🙂 Torsten
Hallo zusammen,
wie kann ich den Folder in dem sich meine Projektdateien befinden ändern? Ich habe in den gesamten Einstellungen keine Möglichkeit gefunden den Pfad zu ändern. Und die, die ich fand, war auf Dateiebene (pro Klasse in der IDE) und ist ausgegraut.
Bitte helft mir 🙂
Danke und viele Grüße
Torsten
Hallo ikaros,
vielen Dank für den Hinweis. Ich bin gestern schon selber drüber gestolpert.
Mir geht's aber noch ganz gut .. anscheinend tut Blödheit doch nicht so weh 😁
Viele Grüße
Torsten
Hallo epidemic,
ich denke Du suchst die IndexOf-Methode der Array-Klasse. Die liefert aber bei redundanten Einträgen nur den ersten gefundenen zurück.
Such mal in der API nach "Array.IndexOf (Array, Object) ", wobei Object Dein String ist und der Index zugeliefert wird.
Ich hoffe das meintest Du.
Grüße
Torsten
Komisch, dass VS kein solches Tool mitbringt. Svenson, was wäre Deiner Meinung nach ein solches Tool? Kannst Du ein gutes empfehlen?
Vielen Dank,
Torsten
Danke, ich werd das über den StackTrace versuchen. (Hab damit aber noch nie gearbeitet.) BeginInvoke versuche ich auch - interessant ist allerdings auch, dass der Code aus der MS-Doku stammt 😉
Beim setzen eines Wertes in ein Label bsp. gibt zur Runtime sofort eine Exception, das Zeichnen geht aber tatsächlich. Allerdings gebe ich Dir recht, Invoke ist sauber und sicher.
Grüße,
Torsten
@herbivore: Nein, das klappt erstaunlicherweise ohne Invoke - ich hab den Code laufen lassen 8o
btw: Hast Du denn Erfahrung mit dem Thema? Ich arbeite nämlich damit und schreibe alle 500ms per Invoke Text in ein Label. Wenn ich die Kiste über Nacht laufen lasse, habe ich morgens an genau der Stelle
this.Invoke(d, new object[] { text });
einen Stapelüberlauf.
Hoffe das ist nicht zu Off-Topic, sonst mache ich einen neuen Post auf.
Danke,
Torsten
Sah doch schon ganz gut aus, da fehlten nur ein paar elementare Dinge. Zunächst solltest Du den Thread anlegen, starten und dann die Methode an ihn übergeben.
Ich hab die mal doIt() in meinem Code genannt. Dann der Sleep, das war okay - und dann muss die Methode sich selbst immer wieder aufrufen.
Beim Schließen des Fenster (WindowClosing-Event) den Thread wieder killen - nicht vergessen.
Sieht mal ganz grob so aus:
private int zahl;
private Thread t;
public Form2()
{
InitializeComponent();
zahl = 0;
}
private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(this.doIt));
t.Start();
}
private void doIt()
{
Graphics g = this.CreateGraphics();
if (zahl < 4)
zahl++;
else
zahl = 1;
switch (zahl)
{
case 1:
g.FillEllipse(new SolidBrush(Color.FromArgb(0, 255, 0)), 100, 100, 60, 60);
break;
case 2:
g.FillEllipse(new SolidBrush(Color.FromArgb(255, 0, 0)), 100, 100, 60, 60);
break;
default:
g.FillEllipse(new SolidBrush(Color.FromArgb(255, 255, 0)), 100, 100, 60, 60);
break;
}
Thread.Sleep(500);
this.doIt();
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
t.Abort();
}
Hth and other Ideen gerne willkommen 😉
Torsten
@Götz:
Also ich hab's mal kompiliert und kann keinen Laufzeitfehler entdecken. Hast Du die richtige Laufzeitumgebung installiert? Welcher Fehler kommt denn?
Ach nochwas : "prozedurale Programmierer sind auch Menschen" -> Ja, aber denk dran, dass wir hier in Klassen denken 😉 scnr
Grüße
Torsten
Auch wieder wahr ... 😉
Danke
Torsten
@Chaos:
Was hast Du denn bereits fertig? Hast Du schon was programmiert? Poste doch mal Quellcode, dann schauen wir mal wo's hapert.
Grüße
Torsten
Oder so vielleicht:
AList.Insert(1, AList[2]);
AList.RemoveAt(3);
Müsste gehen, da der Ausdruck in der Klammer zuerst ausgewertet wird.
Grüße
Torsten
Hallo zusammen,
mein Projekt schreitet fort und im Verlauf merke ich, dass ich einige Klassen zwischen Assemblies / Namespaces verschieben muss.
Ich weiß, dass so etwas unter Eclipse bspw. sauer funktioniert, d.h. die Imports werden entsprechend angepasst. In VS konnte ich bislang nur Klassen kopieren und sie so anderen Assemblies zufügen, musste aber alle usings per Hand durchgehen.
Gibt es da auch eine bequemere Möglichkeit? Vielleicht bin ich ja auch nur zu blind dafür.
Vielen Dank für Eure Antworten.
Gruß
Torsten
Hallo svenson,
bei log4net bin ich bei meiner Recherche auch hängengeblieben ... werde ich mir anschauen. Danke Dir!
Grüße
Torsten
Hallo zusammen,
ich habe eine Winformanwendung die über einen Terminalserver remote gestartet wird. Jede Instanz der Anwendung soll nun in eine Konsole loggen, die lediglich ich als Administrator zur Laufzeit einsehen kann.
Die DB kommt zur Datenhaltung nicht in betracht, eine Datei durch die mehrfachen Instanzen auch nicht. Bleibt also IMHO nur on-the-fly-Logging in die Konsole.
Wie aber können n Anwendungen auf 1 Konsole zugreifen, bzw. hineinschreiben. Ich bin grade technisch total hilflos.
Jemand eine Ahnung?
Danke im voraus
Torsten
Yo iss wohl klar. Aber wieso gibt es denn dann Bücher, wenn auf der Microsoft.com Site alles steht? 🙂
Ich dachte mehr an eine Übersicht, ggf. ein Literaturvorschlag oder ein Online-Tutorial oder Ebook oder sowas gegen die Richtung.
Grüße
Torsten
Hallo zusammen,
kennt jemand im Netz (oder auch analog) eine Übersicht über die Serverfamilie von Microsoft? Bislang habe ich nur denn IIS und 2003 kennengelernt, aber was gibt es da noch? Das würde mich interessieren. SharePoint, BizTalk und was da noch so am Markt rumfleucht.
Wo laufen eigentlich die "dicken" Anwendung im .NET Bereich? Gibt es einen Applikationsserver wie Websphere oder ist das der 2003?
Fragen über Fragen - scheint irgendwie an mir vorbeigegangen sein ...
Vielen Dank im voraus,
Torsten
Alles klar - erst Grundlagen lesen. Vielen Dank für die Antwort.
Gruß
Torsten
Hallo zusammen,
ich werd gleich wahnsinnig mit dem 2.0 Framework.
Ich versuche hier DataTables aus zwei Tabellen (SQL 200 Server) zu erzeugen. Das klappt soweit ganz gut. Leider generiert er mit keine passenden Update-Statements dazu. (SELECT ist ein normaler INNER JOIN)
Ich hab dann klein beigegeben und will das verknüpfen der beiden Tabellen (DataTables) nun per Programmlogik steuern. Soweit so gut.
Nun habe ich ein Statement "SELECT CustomerNr, ShortName FROM base_table". Also zwei Attribute aus einer Tabelle - auch hier lässt VS 2005 kein GenerateDBDirectMethod zu. Er graut es einfach aus.
Bei manchen einzelnen Tabellen klappt das generieren des Updates - bei manchen nicht.
Wer hat schonmal Erfahrungen damit gemacht und kann mich vor'm Fenstersturz bewahren?
Vielen Dank im voraus
Torsten
Versuch's mal damit. Ich hab in das Ding mal kurz reingeschaut, scheint ganz gut zu sein und ist wohl das was Du suchst.
Hth,
Torsten
Hallo Svenson,
danke, ich konnte mir auch nicht vorstellen, dass Du hier rumpolemisierst. 👍
In Bezug auf Stabilität und Kosten macht der Einsatz von Hibernate natürlich Sinn, ich glaube auch, ich bin falsch verstanden worden. Ich wollte Hibernate nicht neu bauen, sondern frage mich auf rein technischer Ebene, ob mir das Ding wirklich soviel Arbeit abnimmt, dass sich ein Einarbeiten lohnt.
Aber da mich das interessiert versuche ich es nochmal: 😁
Wir haben drei Dinge beim Mapping. Die Objekte, den Mapper und die DB.
Objekte und DB haben wir, also brauchen wir noch den Mapper, der aus unseren Objekten Tupel baut. Das macht er, indem er die Attribute der Objekte "kennt" und die Werte dieser typisiert in ein Relationenattribut umsetzt. (Und umgekehrt)
So, damit der Mapper das sauber macht, braucht er eine Beschreibung der Objekte, die als XML-Struktur vorliegt. (Attributtyp und Zusicherungen) Diese XML-Struktur muss ich aber für jedes neue Objekt anlegen, richtig? (Und hier kann der Denkfehler sein!)
Wenn ich jetzt selber hingehe und mein Objekte (dessen Struktur ich ja kenne) auslese und in eine entsprechende Tabelle mappe (also Feld1 -> Attr1, Feld2 -> Attr2), dann mache ich ja nichts anderes als Hibernate, oder? Und ob ich jetzt die Struktur des Objekts in XML beschreibe, oder eben das Query baue hält sich doch vom Aufwand gleich?
Das gilt natürlich nur für ein kleines, übersichtliches Projekt mit bspw. < 20 Objekten.
So, ist das jetzt total falsch gedacht? 🤔
Danke,
🙂 Torsten
Danke. Polemik bringt mich aber auch nicht weiter.
Hallo Pulpapex,
danke für Deine Antwort. Mit "Struktur" meinte ich die Methoden des Objekts. Es werden nur die Zustände, also Attribute, Werte, Zusicherungen gespeichert, richtig?
Was ich so gelesen habe, muss man für jedes Objekt eine XML-Struktur anlegen, die besagt, dass mein Objekt diese und welche Attribute mit diesen und welchen Wertetypen und Zusicherungen hat. Dann werden die gegen eine rel. Tabelle gemapped.
Und auch in HQL muss man die Beziehungen / Collections kennen mit denen Objekte verknüpft sind.
Naja, und da dachte ich, dass kann ich auch selber bauen ... wahrscheinlich ist es aber dumm das Rad neu zu erfinden.
Kennst Du vielleicht ein gutes Tutorial für mich?
Danke vielmals,
🙂 Torsten
Hallo zusammen,
ich überlege gerade ob ich NHibernate als O/R-Mapper einsetze.
Grundsätzlich habe ich keine Ahnung wie das Framework wirklich funktioniert. Was ich rausbekommen habe ist, dass der Mapper die Objekte in XML-Struktur beschreibt und dann die Attribute (also den Zustand) in Tabellen mapped. Also die Schnittstelle emuliert, die MSSQL im Gegensatz zu Oracle (als objekt-relationale DB) eben nicht hat.
Ich frage mich grade wo der Vorteil des Mappers ist. Ich könnte doch auch genausoschnell selber so einen Mapper erstellen, oder? Wenn ich die Struktur der Objekte eh nicht ablege, kann ich doch jedem meiner Objekte eine UID verpassen und so sogar Aggregationen als 1:n Relationen in mehreren Tabellen abbilden.
Hat jemand Erfahrungen damit? Meinungen?
Dumme Jung braucht Entscheidungshilfe 😁
Danke und schönen Abend noch.
🙂 Torsten
Hallo,
soweit ich weiß geht das Binding nur mit einer TableColumn vom Typ bool.
Ansonsten poste dochmal Code.
Grüße
🙂 Torsten
Selbe Spiel hier: Überprüfen der Felder mit Properties und initialisieren mit Methoden 😉
@Fabian: Nette Signatur 😁
Hallo Ron,
ich habe keine Ahnung was das für ein IT-Trainer war, aber fest steht: Properties setzen Werte in private Felder und lesen Felder aus. Grundlage dieser Methodik ist das "Information Hiding"-Prinzip der Kapselung. Nur Felder öffentlich deklarieren wenn unbedingt notwendig! Das jedenfalls bringe ich meinen Schülern immer bei 😁
hth,
🙂 Torsten
Hallo Ron,
in der Tat liegt ein philosophisch-konzeptionelles Problem vor wie Du schriebst.
Ich würde an Deiner Stelle die Properties NUR zur Wertzuweisung benutzen und Funktionalitäten in Methoden "auslagern". (Ergo: Version zwei Deines Posts)
Vorstellbar wäre die Situation, dass Du bevor Du Refresh aufrufst noch eine Methode eines imaginären objekt2 ansprechen musst. Die könntest Du dann als Anweisung nicht mehr dazwischen schieben.
Ausserdem sind Setter eben Setter und keine Methoden 8)
Meine Meinung.
Viele Grüße
🙂 Torsten
Ja sicher .. Casting von object zu string ... =) Hab ich total übersehen.
Grüße
Torsten
Nee musst Du nicht. Schau mal nach dem Begriff "Indexer" 8)
Torsten
Hi,
meinst Du vielleicht den value aus der Hastable, die dem Schlüssel SettingKey entspricht? Einach Array-Notation verwenden.
string val = myHash[Setting_Key];
Ich hoffe das hilft Dir weiter.
Torsten
PS: OOoopps .. zu langsam .. 😁
So hier mal eine Lösung: (siehe Anhang)
"Shop" ist mein Controller. Von da aus rufe ich auf "Check" tryAddToBasket() auf und übergebe das zu addende Item ("Artikel" oder "Download") und die aktuelle Userinstanz.
Check holt sich dann vom Artikel und User das Alter (getAge()) und überprüft die Plausabilitäten. Wenn diese okay sind ruft Check auf "BasketCase" AddArticle auf und übergibt das zu addende Item. (müsste eigentlich "AddItem" heissen)
Donaload und Artikel erben getAge über die abstrakte Item-Klasse und erhalten Ihre Altersfreigabe über den Konstruktor. (Bei mehreren Alterstufen eben als Array)
Ich seh grade, die Assoziation zwischen "Check" und "BasketCase" fehlt noch.
Was meint Ihr? 🤔
Danke an alle,
ich werde mal die Idee von nekromanter aufgreifen und versuchen umzusetzen.
Viele Grüße
Torsten
Hallo Norman-Timo,
danke für Deine schnelle Antwort.
So ganz stellt mich das noch nicht zufrieden. Das mit dem Shop war vielleicht kein gutes Beispiel. Mir geht es mehr um die Sichtbarkeit und Befugnisse innerhalb eines Systems. Vielleicht eher so wie die Unterschiede bei Redakteuren und Chefredakteuren eines CMS.
Ich möchte die Abstraktion der Rollen auch gerne im OO-Modell haben, weniger in der DB.
Also nochmal: 😁
gegeben sind "Redakteur" und "Newsartikel" eines CMS. Jetzt darf der eine ("NormalRedakteur") weniger mit der News anstellen als der "ChefRedakteur". Die Rollenunterschiede lassen sich prima auf die Redakteur-Derivate abbilden. Dann muss doch "Newsartikel" so mit "Redaktuer" in Beziehung stehen, dass die Klasse erkennt welche Ihrer Methoden für welche Redakteuersderivate zugänglich sind, richtig?
Danke 🙂
Torsten
Hallo zusammen,
ich habe mal wieder eine Designfrage:
Nehmen wir als Beispiel einen einfachen Shop, der u.a. die Klassen "Artikel" und "Warenkorb", sowie "Benutzer" enthält.
Die Beziehungen zwischen den Objekten sind mir klar. Ich überlege grade wie ich es am besten gestalte ein Rechtesystem einzubauen. Angenommen ich habe zwei unterschiedliche Arten von Kunden (private und Unternehmenskunden).
Benutze ich in dem Fall Derivate von "Kunde", die in Beziehung zum Artikel stehen?
Wie löst ihr sowas grundsätzlich? Links wären natürlich auch nett 😉
Viele Grüße
Torsten
Ich konvergiere grade gegen 0 ... 🤔
Ist "Domain-Model" dann kein .NET geeigneter Ansatz? Meinst Du "dank" zurückgestelltem ObjectSpaces vielleicht ironisch?
Wie auch immer .. NHibernate scheint sehr geeignet für meinen Architektur und das DataSet fliegt raus.
Danke nochmal ..
Viele Grüße
Torsten
Saugeil .. klingt interessant! Danke. Habe mich nie um Hibernate gekümmert, aber jetzt weiß ich was das ist.
Aber nochmal zu meiner Frage nerv .. wenn ich das DataSet weglasse bekomme ich als .Net'ter keine Designfehler vorgeworfen, oder? 🙂
Grüße
Torsten
Das ist ja schonmal eine sehr gute Idee! Daran hatte ich aber gar nicht gedacht.
Mir ging es mehr um die Frage ob ich an einer sinnvollen Architektur "vorbei designe" - wenn ich das DataSet aussen vor lasse.
Grüße
Torsten
Guten Tag allerseits,
folgendes Architekturproblem lässt mich nicht los:
Ich habe eine 3-tier Applikation, die an eine relationale DB gebunden wird. In der Controllerkomponente gibt es im Klassendiagramm etliche Entitätsklassen in denen ich meine Daten halte.
Bei benötigten Zugriff lesse ich die Werte aus den Tabellen aus und lege meine Entityobjekte an. Zur Persitenz derer läuft der Vorgang dementsprechend rückwärts.
Jetzt gibt es ja noch das DataSet zur offline Datenhaltung und praktischen Datenbindung. Sehr schön. Leider weiß ich nicht wie ich das nun in meine Applikationsarchitektur einbauen soll. Wenn ich das DS benutze geht ja die OOP irgendwie flöten, da ich ja alles in einem DS-Objekt habe.
Wie löst ihr solche Probleme?
Bin für wirklich jede Antwort dankbar.
Viele Grüße
Torsten
Hallo zusammen,
ich habe eine DataTable mit mehreren Spalten. Jetzt möchte ich mir eine DataView basteln, die folgenden Bedingungen erfüllen soll:
In SQL wäre das "SELECT DISTINCT spalte FROM table"
Also alle Werte EINER Spalte ohne Redundanzen.
DataTable, DataView und Binding hab ich ... wie aber kann ich der View das obige Statement zu fressen geben?
Danke im voraus,
Torsten