Laden...
Avatar #avatar-2005.gif
the_lmich myCSharp.de - Member
Fachinformatiker - Anwendungsentwicklung, ewiger Student der Informatik Ruhrgebiet Dabei seit 28.09.2005 248 Beiträge
Benutzerbeschreibung

Forenbeiträge von the_lmich Ingesamt 248 Beiträge

04.09.2009 - 19:34 Uhr

Tach zusammen,

ich versuche mich gerade daran die Hands-On-Labs von der WF4 zu ergründen. Dort wird gezeigt wie man einen eigenen WF-Designer mit Hilfe von WPF erstellen kann.

Einfaches Ding, soweit kein Problem. Nun möchte ich aber nicht alle bestehenden Aktivitäten hardcodiert meiner Toolbox zuordnen sondern versuche über die System.Activities-Assembly zu reflektieren und mir die Aktivities in die Toolbox zu klatschen.

Also anstelle eines:

ToolboxItemWrapper tool = new ToolboxItemWrapper(typeof(System.Activities.Statements.If), "If-Condition");

möchte ich sowas wie


foreach (System.Type t in assembly.GetTypes())
  {
     if (???)
      {
          ToolboxItemWrapper tool = new ToolboxItemWrapper(t);
          category.Tools.Add(tool);
      }
  }

wobei die drei Fragezeichen mein Problem darstellen. Ich bekomme seit Stunden eine NotSupportedException mit der Meldung "Type 'xyz' is not a valid toolbox type".

Ich habe mehrere Versuche gestartet. Unter anderem:

  • nur Subklassen von Activity zulassen
  • nur Klassen aus dem Namespace "System.Activities" zulassen

Hat auch nix genutzt. Mittels Reflector habe ich die Basistypen der Activities mal genauer untersucht. Die sind m.E. total wirr abgeleitet. Mal von Object, mal von Activities, mal von Catch (bei Catch<T>), usw ...

Wie also kann ich die Activities zur Laufzeit auf meine Toolbox klatschen? Hat jemand Erfahrungen? Oder ist das der komplett falsche Ansatz?

Vielen Dank im voraus,
Torsten

17.09.2008 - 13:43 Uhr

Oki, danke!

17.09.2008 - 12:33 Uhr

Hi,

ich habe grade eine Assembly mit dem Reflector analysiert und sie dann exportiert. Das Projekt konnte ich Stück für Stück in ein neues Projekt in VS2008 importieren. Läuft alles soweit, nur bekomme ich eine "MissingManifestResourceException".

Reflector hat mir noch diverse .resource Files mitgeliefert. Nur wie bekomme ich die jetzt in mein Projekt gebunden, so dass alles richtig kompiliert?

Danke schonmal,
🙂 Torsten

16.09.2008 - 17:24 Uhr

Hi,

gibt es eine Möglichkeit die Code Generierung des Class-Designers in VS2008 anzupassen? Ich hab schon gesucht, aber zu dem Thema leider noch nichts finden können.

Danke und Grüße
🙂 Torsten

02.09.2008 - 18:47 Uhr

Peter,

danke Dir! 🙂

02.09.2008 - 18:24 Uhr

Hi,

ich habe in meiner Code-Behind Datei eine wenig HTML-Code zusammengebastelt, welchen ich mit Response.Output "ausgebe". Dies mache ich in Page_Load.
Jetzt rendert mir ASP.NET den Code als erstes in mein HTML-Dokument. Erst danach rendert er meine Skripte und den Rest aus meiner aspx (Head, Body, etc)

Kann ich irgendwie veranlassen, das meine Ausgaben innerhalb des Body-Tags gerendert werden?

Vielen Dank,
🙂 Torsten

28.08.2008 - 18:50 Uhr

Nicht so ganz zustimmen kann wenn du das WebBrowser-Control nutzen möchtest 😉

<g> -> Geht das auch präziser? 🙂

Grüße
🙂 Torsten

28.08.2008 - 18:42 Uhr

Hi JuyJuka,

grundsätzlich gebe ich Dir recht. Wir kennen unser Datenmodell aber nicht. Es wird teilweise zur Laufzeit generiert und das UI muss sich dem anpassen. Zudem kommt, dass unsere Vorstellungen von Binding über die von MS hinausgehen. Wir werden es also selbst implementieren.

Ich möchte den Aufwand nicht zweimal betreiben. Und wenn die Hybridlösung klappt, werde ich darauf bauen.

Danke und Grüße,
🙂 Torsten

28.08.2008 - 18:26 Uhr

Hallo zusammen,

in unserem Projekt fällt aktuell die Entscheidung, ob wir einen eigenen Client bauen oder eine Webanwendung zum Einsatz kommt. (RIA kommt nicht in Frage.)

Da der Client ein eigenes XML-Format interpretieren können soll (der Server soll das UI hochgenerisch erzeugen) und es zudem noch ein Web-UI für Endkunden geben soll, kommt die Frage auf, warum nicht alles direkt als WebApp entwickeln. (Die Entwicklung des Clients würde zudem viel Zeit in Anspruch nehmen.)

Da gibt es aber ein eindeutiges Knock-out für eine browserbasierte Lösung: In unserem Fall ist das das Ansprechen spezifischer Peripherie-Geräte, wie Drucker, Barcoderscanner, etc. Wir müssen weg vom Auswahldialog und die Drucker nach Konfiguration ansprechen.

Jetzt kommt mir grade der Gedanken, ob es nicht möglich wäre ein Webbrowser-Control in eine WinForm zu packen und die Druckaufträge der Webseite abzufangen und nach einer bestimmten Konfiguration zu handeln. Sozusagen den Webclient in einer Winform zu kapseln. Dann hätten wir auf der Serverseite nur eine UI-Engine, könnten die Kunden-Webs abfrühstücken und hätten noch eine stabile und fest definierte Laufzeitumgebung für unser HTML.

Was meint Ihr dazu? Kann das klappen?

Grüße
.-) Torsten

30.04.2008 - 14:42 Uhr

Hallo,

ich habe ein custom Grid, indem ich die Breite einer (custom) Zelle / Spalte mit

SizeF sizeF = g.MeasureString(this.caption, this.font); 

berechne.

Diesen Wert möchte ich nun gerne meinem Excel-Sheet beibiegen.
Die Komponente die ich benutze (Gembox Spreadsheet) definiert in der API Einheiten für die Breite der Spalten, wie ich sie noch nie gehört habe.
Angebliche MS Spezifikation ist "Unit is 1/256th of the width of the zero character in default font." Wie komme ich denn bitte daran?

Die API stellt es mir nicht bereit und der Support des Herstellers kann mir auch nicht wirklich weiterhelfen.
Antwort auf meine Anfrage hin: "I agree Width measurement doesn't make sense, but we didn't make it that way. It is Microsoft specification, we just write that number to a file. We are pretty sure that by default font Microsoft means default font of the workbook. However, we don't know how to convert that to pixels, our component is nonvisual and we don't have display engine."

Vielleicht jemand eine andere Idee, wie ich meine SizeF auf Excel-Format biegen kann?

Viele Grüße
🙂 Torsten

21.04.2008 - 15:03 Uhr

Hallo zusammen.

ich ersuche Eure Meinung zu o.g. Thema.

Ich recherchiere aktuell Anforderungen an ein Stück Software, welches als Dienst läuft und verschiedene Services (Workflow, Logging, sonstige Logik) verwaltet. Verwalten heißt in diesem Falle: Starten, Beenden, Koppeln, Entkoppeln ... was man sich so vorstellen kann.
Leider bin ich noch nicht richtig fündig geworden.

Kennt jemand eine Anlaufstelle (Links) mit solchen Informationen (oder eine Thrid-Party Bibliothek, die das mitbringen würde?)

Schonmal danke und Grüße
🙂 Torsten

10.04.2008 - 17:00 Uhr

Danke Jungs,

jetzt habe ich erstmal Stoff zum recherchieren.

Viele Grüße
🙂 Torsten

08.04.2008 - 15:10 Uhr

Hallo,

ich bin auf der Suche nach einem Report-Generator (der auch einen Designer mitbringt), der auf .NET Objekte (CLR-Typen) operiert. Wir arbeiten dank O/R ausschliesslich mit Objekten und brauchen darüber zur Laufzeit ein Reporting.

L&L 13 (z.B.) kann wohl datenbankunabhängig arbeiten, erwartet aber immer noch einen DataReader. Ich brauche etwas was "System.Object" entgegennimmt und Werte ausließt.

Ich habe so etwas gerade realisiert, allerdings stoßen die Entwicklungskosten an Ihre Grenzen, so dass wir Third Party prüfen wollen.

Die Suche gestaltet sich allerdings etwas schwierig. Any Ideas?

Vielen Dank und Grüße
🙂 Torsten

05.03.2008 - 10:32 Uhr

Hallo,

ich bin mir in folgendem Design unschlüssig, und bräuchte mal Eure Meinung:

Es geht um eine Client-Anwendung mit WCF Kommunikation. Dort habe ich (sagen wir mal) drei Komponenten (Assemblies). Die Form (dialog.dll), die Kommunikationsschnittstelle (comm.dll) und eine Service-Komponente (service.dll).

Jetzt benötige ich in allen Assemblies Typen, die durch die Proxy-Klasse über WCF bereitgestellt werden. Dadurch bedingt sich, dass alle Assemblies in meinem Client die comm.dll referenzieren. Hier laufe ich aber auf zirkuläre Referenzen, wenn z.B. die comm.dll das Logging aus der service.dll benutzt.

Jetzt überlege ich die (WCF-)Proxy-Klasse in eine common.dll auszulagern. Scheint mir aber auch nicht wirklich sinnvoll, da sie ja semantisch zur (WCF-)Kommunikation (comm.dll) gehört.

Wie habt Ihr sowas gelöst?

Vielen Dank,
🙂 Torsten

04.03.2008 - 11:34 Uhr

Vielen Dank!

PS: Batch war für mich nicht zwangsläufig eine Transaktion, aber wenn das so definiert ist. Umso besser.

04.03.2008 - 11:14 Uhr

Hallo,

ich benötige den letzten eingefügten Int-Werte einer Tabelle innerhalb des SQL-Server 9.0. Da ich eine Schnittstelle gebaut habe, die von n Clients benutzt werden kann, mache ich mir etwas Sorgen um die Konsistenz.

Da INSERT() und SCOPE_IDENTITY() ja zwei Anweisungen für den Server sind, kann es theoretisch sein, dass eine andere Anwendung meine zuletzt eingefügte ID abholt. (Wir gehen mal davon aus, das die Tabelle nicht gelockt ist.)

In der MSND Lib steht zwar:
Gibt den letzten Identitätswert zurück, der in eine Identitätsspalte im selben Gültigkeitsbereich eingefügt wurde. Ein **Gültigkeitsbereich **ist ein Modul: eine gespeicherte Prozedur, ein Trigger, eine Funktion oder ein Batch. Daher befinden sich zwei Anweisungen im selben Gültigkeitsbereich, wenn sie sich in derselben gespeicherten Prozedur, in derselben Funktion oder im selben Batch befinden.

Stellt sich für mich nun die Frage, ob das auch für eine System.Data.IDbTransaction **gültig **ist?

Viele Grüße
🙂 Torsten

06.12.2007 - 09:14 Uhr

Hallo,

ich stehe vor folgendem Problem:

Ich habe einen Typ mit diversen Properties. Die Objekte des Typs möchte ich jeweils in einem PropertyGrid anzeigen lassen. Eine der Properties ist vom Typ System.Drawing.Font.
Diese wird im Grid nun immer als "expandable" angezeigt. Dies gilt es zu verhindern 🙂

Der Objektbrowser im VS verrät mir, dass Font kein TypeConverter-Attribut der Form


[TypeConverter(typeof(ExpandableObjectConverter))]

besitzt.

Vielleicht hat jemand eine Idee, wie ich dem Font-Typ bebiegen kann, sich nicht mehr aufklappen zu lassen?

Danke und Grüße,
🙂 Torsten

10.10.2007 - 18:36 Uhr

Hallo herbivore,

okay - danke dennoch.

Grüße
🙂 Torsten

10.10.2007 - 15:42 Uhr

Hi xxxprod,

danke für Deine Antwort. DAS genau ist der Unterschied zwischen den beiden Applikationen. Wie bei Euch.

Das ist ja unglaublich!

Vielen Dank
🙂 Torsten

10.10.2007 - 15:21 Uhr

Hallo herbivore,

danke für die Antwort. Bei zu-String Formatierungen kenne ich das, aber bei zu-Double ist mir das neu. Wo gebe ich die Culture den an?

Gruß
🙂 Torsten

10.10.2007 - 15:08 Uhr

Tach zusammen,

ich finde dazu leider nix in der Suche, man verzeihe mir eine eventuelle Redundanz.

In zwei verschiedenen .NET-Anwendungen (gleiche Maschine, gleiches Framework) ergibt


double test = double.Parse("855,1");

bei einem Mal: test = 855.1 und bei der anderen Applikation test = 855.10000000000002

Es ist exakt der gleiche Ausdruck. Deklaration, Operation und Zuweisung in einer Zeile.

Ich begreifs nicht mehr ...

Help, anyone?
🙂 Torsten

07.09.2007 - 10:01 Uhr

Hallo Fabian,

danke für die Antwort. Damit habe ich bereits angefangen - wenn's denn nicht anders geht 🙂

Grüße
🙂 Torsten

07.09.2007 - 09:56 Uhr

Danke für Eure Antworten, aber vielleicht habe ich mich da falsch ausgedrückt.
Ich suche eine Möglichkeit ein Span anzugeben. So wie es in HTML-Tabellen möglich ist.

Also in etwa so etwas wie Cell.Rowspan = 1; oder Cell.Colspan = 1;

Scheint aber nicht zu gehen. Die eingschlägigen Hersteller habe ich von einem Kollegen studieren lassen. Die bieten das leider auch nicht.

Ich verstehe gar nicht, warum es das nicht gibt.

Grüße
🙂 Torsten

06.09.2007 - 17:27 Uhr

Hallo,

gibt es eine Möglichkeit in einem Winform DataGridView mehrere Zellen aufzuspannen? So wie es im ASP.NET Control gibt? (DataGrid)

Oder gibt es ggf. alternative Grids?

Danke schonmal.

Grüße
🙂 Torsten

21.08.2007 - 10:26 Uhr

Hallo herbivore,

da brauchst Du nicht grübeln, die Antwort ist einfach: Ich hatte keine Ahnung, dass ich dananch suchen musste.

Danke,
Torsten

21.08.2007 - 10:11 Uhr

Hallo,

schwer einen passenden Titel zu finden 😄

Ich habe ein (Winform) User-Control mit einer Property, die den Wert aus einer Enumeration bekommt. Wenn ich das Control nun auf eine Form ziehe, generiert mir VS für diese Properties eine Wertzuweisung in Form von:

this.myControl.ArrangementType = ArrangementType.KeyboardStyle;

Das kann man sicherlich über Attributes steuern? Denn wieso weiß die IDE angeblich welches mein präferierter Enum-Wert sein könnte? <g>

Wäre dankbar für einen Tipp wo ich Infos über Möglichkeiten finden könnte.

Danke,
😃 Torsten

09.08.2007 - 12:17 Uhr

Mist, entweder ist es ist noch zu früh oder schon wieder zu spät 🙂 Klappt natürlich!
Darf man nur nicht den Typ auf IEnumerable prüfen, sondern das Objekt ...

Danke ... das hätte mich wohl um meine Pizza gebracht 😁

🙂 Torsten

09.08.2007 - 12:02 Uhr

Sorry, einen hab' ich noch:

Falls mein Wert / Objekt von Type.IsClass ist komme ich an das nächste Objekt. Ist es vom Type.IsArray caste ich in ein object[] und kann iterieren, komme so an meine Werte / Objekte
Was aber wenn mein Value von Typ List<T> ist? Zunächst mal prüfe ich mit:


if (srcType.IsClass && (srcType.Namespace == "System.Collections.Generic" || srcType.Namespace == "System.Collections"))

was ich grundsätzlich unsauber finde. Aber ich finde kein Type.IsCollection o.ä. und auf realisierte Interfaces wie IEnumerable<T> kann ich nicht prüfen.

Whatever, mein Problem ist aber folgendes: Ich bekomme ein object rein, in dem eine List<T> steckt. Und finde gearde keine Möglichkeit darüber zu iterieren, da ich ja zur Compilezeit nur object habe und nicht so schön casten kann wie bei Array.

Irgendeiner 'ne Idee?

Danke vielmals im voraus
🙂 Torsten

08.08.2007 - 10:37 Uhr

Okay, ich sehe schon. Casten geht nicht - wie ich dachte. Ich komme aber an alle Werte des konkreten Objekts. Und wenn es wieder Referenztypen sind, bekomme ich den vollen Pfad zurück. Damit kann ich mich dann weiterhangeln.

Wieder was gelernt. Danke Euch!

Grüße
🙂 Torsten

08.08.2007 - 10:07 Uhr

Tach zusammen,

jetzt schlage ich mich schon länger durch die Themen Reflection und Late-Binding und komme zu einem Schluss, den ich durch Euch noch festigen möchte.

Ich kann im .NET Framework 2.0 zur Laufzeit via Reflection den Typen eines Objekts, seine Member, etc. herausbekommen - auch wenn das Objekt in einem anderen enthalten ist. (Im Extremfall in "object")
Ich habe weiterhin die Möglichkeit mit Hilfe dieser Information irgendein konkretes Objekt dieses Typen zu instanziieren.

Ich komme aber nicht an **das **konkrete Objekt, **diese **eine Instanz, die bspw. in "object" steckt. Oder habe ich da was übersehen? (Und zwar immer angenommen ich kenne den Typen nicht!)

Zur Verdeutlichung:


Class1 concreteObject = new Class1();
concreteObject.name = "123";
object o = concreteObject;

Komme ich jetzt auch nur irgendwie an das Objekt mit dem Namen "123", wenn ich nur o habe? Ich denke nicht, oder? Ich müsste in den bekannten Typ casten und das geht ja nur zur Compiletime.

Für neuere oder bessere Erkenntnisse wäre ich sehr dankbar.

Viele Grüße
🙂 Torsten

06.08.2007 - 10:22 Uhr

Hallo,

ich habe gestern ReSharper 3.0 installiert und seitdem ist die aktive Zeile beim Debuggern nicht mehr markiert. Schlimmer noch, alle Formatierungen sind aufgehoben. (Dadurch kann ich die Zeile zwar jeweils erkennen, aber ist schon sehr schwierig.)
Unter Extras -> Schriftarten und Farben -> Ablaufverfolgungspunkt (Aktiviert) ist immer noch alles richtig eingestellt, aber ReSharper scheint das zu überschreiben. Nur mit welchem Element?

Ich find's nicht raus. Vielleicht jemand eine Idee?

Danke und Grüße
🙂 Torsten

31.07.2007 - 14:24 Uhr

Danke Euch beiden für die Antworten. Ich denke nochmal drüber nach.

Grüße
🙂 Torsten

31.07.2007 - 11:38 Uhr

Tach zusammen,

ganz kurz nur:

Nehmen wir an ich habe eine Komponente die Input bekommt, diesen bearbeitet und dann Output liefert. Innerhalb meiner Anwendung steht diese Komponenten mehreren Teilen zur Verfügung.

Ist das dann ein **Service ** oder eine Engine? ?(

Und sagt nicht ein EVA-Prinzip! Wehe! 😁

Grüße
🙂 Torsten

27.07.2007 - 11:47 Uhr

Okay, danke herbivore!

27.07.2007 - 11:31 Uhr

Hallo zusammen,

ich benötige eine dynamische Tabellenstruktur, ähnlich eines ReDim-Arrays in VB.NET. Heißt also ich möchte einfach sagen können myTable[x][y] = value, und zwar unabhängig davon ob ich das Feld bereits initialisiert habe oder nicht.

Meine Idee ist jetzt eine zweidimensionale List<T> weg zu kapseln und jedesmal prüfen, ob das Feld intern bereits besteht. Wenn nicht, belege ich alle Felder bis dahin mit Null-Werten und setze den übergebenen value.

Meine Frage ist nun, gibt es sowas bereits im .NET Framework oder hat jemand noch eine bessere Idee oder sowas schon mal implementiert?

Danke schon mal und Grüße
J Torsten

19.07.2007 - 08:44 Uhr

Hallo CB.NET,

das sieht schwer danach aus. Hab' tausend Dank!

🙂 Torsten

19.07.2007 - 08:34 Uhr

Hallo herbivore,

ja danke. Das ist sicherlich auch ein sehr hilfreiches Werkzeug und es wird den Weg zu mir ebenfalls finden. Aber Du hast recht, was ich zunächst suche ist ein Überblick über Framework-Entwicklung.

Trotzdem danke.
🙂 Torsten

19.07.2007 - 08:24 Uhr

Hi,

es ist ein wenig müßig nach "Framework" zu suchen, daher gehe ich das Risiko eines Doppelposts ein 🙂

Ich bin auf der Suche nach einem guten Buch für Framework-Entwicklung. Und ich meine nicht das .NET-Framework, sondern einen Ratgeber, wie man ein eigenes Framework konzipiert und umsetzt. Muss kein 1000-Seiten Wälzer sein und ich gebe mich auch mit entsprechenden Links zufrieden - wenn der Content stimmt.

Der Suchbegriff ist wirklich blöde, daher freue ich mich auf jede Anregung.

Viele Grüße
🙂 Torsten

18.06.2007 - 17:55 Uhr

Hi dr4g0n76,

danke für Deine Antwort. Die Ergebnismenge ist für meine Logik allerdings nicht so gut brauchbar. Ich benötige alle Elemente n einer Node innerhalb einer Iteration.

Lustig ist, dass wenn ich mit meinem OuterXML meines äußeren Iterators ein neues XPathDocument erzeuge und danach wie gehabt navigiere - dann geht's ... 😕

Komisch,
🙂 Torsten

18.06.2007 - 17:21 Uhr

Hi,

ich möchte in einem XML n Knoten finden und in jedem gefundenen Knoten wiederum Elemente finden. Es soll XPath zum Einsatz kommen.

Das Iterieren über den xPathNodeIterator klappt famos. Innerhalb der Schleife erzeuge ich einen neuen Navigator (innerXPathNavigator) und lasse darüber wiederum ein Select fahren. Hier fängt mein Problem an:

Das XML innerhalb des innerXPathNavigator entspricht dem gefundenen XML-Knoten. Es sind nur die Daten vorhanden, die meiner xPathExpression entsprechen.
Wenn ich nun aber darauf meine (neue) innerXPathExpression laufen lasse, bekommen ich nicht die "Description" des innerXPathNavigator zurück (die auch existiert), sondern die meines gesamten XML, also des xPathNodeIterator.

Bei folgenden - fiktiven, verkürzt dargestellten - XML-Daten käme als Wert "a" und nicht, wie gewünscht "b1" zurück.


xPathExpression = "//node[@id='id1' and @class='class1']";
xPathNodeIterator = xPathNavigator.Select(xPathExpression);

while (xPathNodeIterator.MoveNext())
{
    XPathNavigator innerXPathNavigator = xPathNodeIterator.Current;

    string innerXPathExpression = "//description";
    XPathNodeIterator innerXPathNodeIterator = innerXPathNavigator.Select(innerXPathExpression);
    innerXPathNodeIterator.MoveNext();
    string theResult = innerXPathNodeIterator.Current.ToString();
}



<description>a</desciption>

<node>
    <description>b1</desciption>
<node>
<node>
    <description>b2</desciption>
<node>
<node>
    <description>b3</desciption>
<node>

Wo ist das wohl strubblig? Entweder ich verstehe XPath nicht, oder ich sehe den Wald vor lauter Bäumen nicht? Kann jemand helfen?

Vielen Dank im voraus,
🙂 Torsten

26.05.2007 - 10:23 Uhr

Ja, nur bei n Collections ist das ja nicht grade perfomant 😦

26.05.2007 - 09:46 Uhr

Hallo herbivore und danke für die Antwort,

ich suche alle Elemente, die gemeinsam in allen Listen vorkommen. Von diesen Elemente benötige ich dasjenige, welches ich zuerst finde, wenn ich die Liste von unten herauflaufe.

Bsp für zwei Listen:

Liste 1: a-b-c-d-e-f-g-h-i-j
Liste 2: k-l-c-n-o-p-q-r-h-t-u-v-w

Ich würde finden: h und c, benötige aber h. (In diesem Fall von rechts traversiert)

Grüße
🙂 Torsten

26.05.2007 - 08:26 Uhr

Hallo,

ich benötige einen Algorithmus, der mir die gemeinsames Elemente von n Collections zurückliefert. Genauer benötige ich das erste gemeinsame Element von beliebig vielen Listen.

Kennt jemand von Euch vllt. eine fertige Implementierung im Framework? Nicht dass ich die Arbeit umsonst mache 😉

Danke,
🙂 Torsten

05.02.2007 - 15:33 Uhr

Hi King-Malkav,

also wenn die DB performanz-seitig nichts hergibt, würde ich die Buttons beim Anmelden in eine Datenstruktur laden. Falls die Buttons für alle User identisch sind, kannst Du sie ja vielleicht auch im Application-Scope ablegen und die Sessions entlasten. Ggf. kannst Du so auch Caching-Mechanismen ausnutzen.

Hth,
🙂 Torsten

05.02.2007 - 15:27 Uhr

Hallo,

vorweg: Die Frage mag vielleicht blödsinnig klingen, dennoch finde ich keine Antwort auf sie und ersuche Eure geschätzten Meinungen.

Ich komme sowohl aus der PHP- und J2EE-Welt als auch aus dem .NET Winforms-Bereich und muss als nächstes ein ASP.NET Projekt entwickeln. Wenn ich all mein Wissen zusammenwerfe, verstehe ich ASP.NET schon ganz gut. Eine Frage bleibt allerdings unbeantwortet:

Für meine User-Authetifizierung, nehme ich da den MembershipProvider-Mechanismus oder baue ich selber eine Authentifizierung indem ich den PageController generalisiere?
Wo sind Eure Meinung nach die Vor- und Nachteile. Ich denke die ganze Zeit hier steht doch mal wieder Flexibilität gegen Stabilität und Sicherheit? Habt Ihr vielleicht auch schon ein eigenes System gebaut oder ist das völliger Humbug und die Provider bieten mir alle Möglichkeiten die ich brauche?

Ich lasse meine Meinung zunächst mal aussen vor und würde mich über Beiträge freuen.

Viele Grüße
🙂 Torsten

31.01.2007 - 20:45 Uhr

Hallo Markus80,

ich habe meine Software auch noch nicht bekommen. Du kannst aber davon ausgehen, dass die für uns keine extra Pressung vorgenommen haben 🙂 Schätze das die diese Woche rausgegangen ist / raus geht und spätestens in der nächste Woche ankommt.

Viele Grüße
🙂 Torsten

Ooops .. hatte die Vorgänger Antworten gar nicht gesehen 😉 Sorry.

26.01.2007 - 12:08 Uhr

Wow,

danke für die rege Teilnahme 🙂

@VizOne:

P.S.: Ich glaube, das vorliegende Missverständis ist, dass x nicht den Wert von count zugewiesen bekommt, sondern den Rückgabewert der Methode, welcher sich "sicher" auf dem Thread-eigenen Stack befindet.

Ist Interlocked nicht statisch? Daher dachte ich, der (Rückgabe-)Wert würde immer aus der Referenz von count gezogen?

@herbivore:
Danke, guter Hinweis!

@All:
Nehmen wir an x sei global und 32-bittig ... ist es nun thread-safe oder nicht? Ein einheitliches Bild konnte ich der Diskussion immer noch nicht entnehmen. Ich denke weiterhin das, was herbivore sagt. Es werden soviele Operationen ausgeführt, dass da schnell mal ein Thread zwischenbügelt. Für mich hat das weiterhin einen faden Beigeschmack. Zudem würde dann auch die Übergabe by ref Sinn machen. Das wäre ja auf jeden Fall sicher.

Danke und Grüße
🙂 Torsten

25.01.2007 - 21:55 Uhr

Hallo,

ich sitze hier gerade in einer hitzigen Diskussion und wollte die Frage mal an die Community weitergeben:

Also es geht um Multithreading, folgender Code: count sei bei Beginn 0.


x = Interlocked.Increment(ref count);

Alsoooo .. g .. ich behaupte, dass Einzige was hier Thread-safe ist, ist der Wert von count, da dieser by ref übergeben wird und im sicheren Context von Interlocked zugewiesen wird. Die Zuweisung zu x hingegen ist nicht sicher, da zwischendurch ein anderer Thread Increment ausgewertet haben könnte. Increment ist statisch und hat keinen Status, daher wird x also nie 1, sondern immer zwei zugewiesen.

Also so:

Thread1: Interlocked.Increment(ref count);
Thread2: Interlocked.Increment(ref count);
Thread1: Zuweisung x (ist 2)
Thread2: Zuweisung x (ist 2)

Was meint Ihr? Thread-safe oder nicht? 🙂 Bin gespannt!

🙂 Torsten

13.01.2007 - 20:02 Uhr

Hallo Peter,

danke für Deine Antwort. Ich nehme mal eben Stellung.

Bislang dachte ich die aspx würde auch zu IL kompiliert und wäre dann eben eine Klasse. Ganz wie bei Javas Servlets. Diese würde von der CS-Klasse erben. Bei Galileo im OpenBook heisst es:

Bei der Datei codebehind_02.aspx stellt sich zunächst die Aufgabe, festzulegen, dass die Seite nicht von der Klasse Page direkt abgeleitet werden soll, sondern von der Klasse, die Sie selbst definiert haben. Das erreichen Sie, indem Sie die Page-Direktive entsprechend anpassen. <%@ Page Inherits="Codebehind_02_baseclass" ... %>

Das ist zwar VB-Code aber immerhin steht da inherits. Also wäre m.E. nach die Hierarchie ASPX : CS : Page. (Denke ich jedenfalls) Mir ist daher unklar woher die CS-Datei die Controls aus der ASPX kennt. Mich würde das architektonisch interessieren. Logischer wäre doch der designer würde die Controls in die CS implementieren, diese würden dann von der ASPX geerebt.

Partielle Klassen sind mir bekannt, mir stellt sich nur die Frage WO der andere Teil der partiellen CS-Datei ist. Oder gibt es den nicht? Warum benutzt VS dann per default die partielle Klase beim Anlegen der CS-Datei einer ASPX? Sind dort nicht vielleicht die Controls versteckt, von denen ich meine die ASPX müsste sie erben?

Soweit klar, was ich meine?

Grüße
🙂 Torsten

13.01.2007 - 19:08 Uhr

Hallo zusammen,

ich arbeite mich grade in die Architektur von ASP.NET 2.0 ein und habe ein grundlegendes Verständnisproblem:

Es gilt doch, dass meine aspx-Seite von meiner CodeBehind-Datei eine Subklasse ist und weiter diese CodeBehind von Page erbt?

Wenn dem so ist, wieso sehe ich meine Controls, die ich über den Designer hinzugefügt habe im Code der aspx, aber nicht in der cs-Datei? Und wieso kann ich trotzdem auf diese mit "this" zugreifen?
Und nochwas: Meine cs-Datei ist eine partielle Klasse. Wo ist der andere Teil versteckt?

Was verstehe ich hier nicht?

Grüße
🙂 Torsten