Laden...

Forenbeiträge von Coder007 Ingesamt 1.214 Beiträge

11.12.2011 - 23:41 Uhr

Was erwartest du denn für eine Antwort? Was würde dir weiterhelfen? Eine Antwort wie


System.Magic.CaptureToStream("Skyrim", "C:\video.avi");

kann ich dir leider nicht bieten. Ich kann dir höchstens bestätigen, dass eine Grafikkarte auch ohne einen angeschlossenen Monitor rendert 😉
Alles andere ist wie gesagt etwas komplexer. Wenn du die Ausgaben von einem DirectX Spiel abfangen willst, wirst du wahrscheinlich entsprechende Hooks schreiben müssen. Überhaupt nicht einfach, du musst dich im Detail mit DirectX und der Systemprogrammierung auskennen und jedes zweite Spiel wird irgendwelche anderen Probleme machen. Und was stellst du dir unter einem Stream vor? Normale Codecs sind für sowas nicht geeignet. Wenn du ein Spiel in Echtzeit übertragen willst, musst du spätestens alle paar Frames die Daten über die Leitung schicken. Damit stehen normalen Encodern zu wenige Daten für eine Kompression zur Verfügung. Wenn ich mich recht erinnere, hat OnLive dafür einen eigenen Codec entwickelt, sogar mit spezieller Hardware.

11.12.2011 - 17:53 Uhr

Das geht nicht und das ist auch nicht sinnvoll. Du willst im Endeffekt, dass du eine auf jeden Fall gültige Logdatei hast, egal wann das Programm abgestürzt ist. Das reicht es nicht mal, das Endtag immer hinzuscreiben, da kann noch mehr schiefgehen. Und was du vorschlägst ist kompliziert und fehleranfällig. Verwende entweder einfache Textdateien für Logs, oder einen eigenen Loggin Prozess, wie Syslog. Mit irgendwelchen abenteuerlichen Konstrukten wirst du hier nicht glücklich.

11.12.2011 - 17:32 Uhr

Es gibt schon mehrere kommerzielle Game Streaming Anbieter, z.B. OnLive, die genau das wollen. Das ist bei weitem nicht so einfach, wie du dir das vielleicht vorstellst.

11.12.2011 - 16:31 Uhr

Ich hab die Amazon Advertising API auch schon benutzt. Es muss keine Seite sein, du kannst z.B. auch ein Programm angeben, dass muss ja noch nicht existieren. Und wenn du mit den Tests fertig bist, kannst dich ja nochmal registrieren und ein anderes Programm oder deine Webseite angeben.

10.12.2011 - 18:36 Uhr

Du kannst es auf jeden Fall von Hand in die Projektdatei schreiben, z.B. hier beschrieben:

Through the Interface: Debugging using Express Editions

10.12.2011 - 17:41 Uhr

Du kannst aber in den Projekteinstellungen der Klassenbibliothek ein Programm angeben, das zum Debuggen gestartet wird.

10.12.2011 - 16:12 Uhr

Es macht den Code zwar etwas länger, aber dafür wird halt gleich der Speicher wieder freigegeben...

Entweder verstehe ich deine Frage nicht, oder du verstehst nicht, wozu Dispose gut ist. Es geht nicht darum, "Speicher" sofort freizugeben. Es geht darum, nicht verwaltete Ressourcen freizugeben, die vielleicht nie freigegeben werden, wenn du kein Dispose aufrufst.
Wenn sich deine Frage nur darauf bezieht, ob man das using Paradigma, oder try.. finally Dispose benutzen sollte, ist es halt Geschmackssage, und wenn die Programmiersprache dafür eine Abkürzung in Form des using Konstrukts bietet, spricht nichts dagegen, das zu nutzen.

09.12.2011 - 20:54 Uhr

Ja dann ist es ja überhaupt kein Problem. Gib dem Server halt eine feste IP. Oder benutz DNS, wie alle anderen auch.

08.12.2011 - 21:40 Uhr

Es scheint ja eben NICHT so zu sein, sonst bräuchtest du die Server IP nicht 😉

Ich weiß nicht, was daran nicht klar ist. Stell dir vor, der Datenbankserver hat die interne IP 169.1.1.1 und der DB Server lauscht auf Port 123. Der Router hat die interne Adresse 169.1.1.2 und die externe 85.1.1.1 und hat eine Port Weiterleitung von Port 1433 auf 169.1.1.1 Port 123. Was du jetzt brauchst, um auf die Datenbank zuzugreifen, ist nicht die externe IP vom Router (das wär deine Server IP), sondern die interne Adresse vom DB Server und den internen Port. Und wenn du über die 85er Adresse rankommst, ist da was falsch konfiguriert, du solltest über die nicht rankommen dürfen.

08.12.2011 - 21:25 Uhr

Es war mir schon klar, wie du das gemeint hast.
Aber da ist eindeutig was falsch konfiguriert. 169.* sind lokale Adressen, dafür brauchst du VPN. 85.* ist eine öffentliche Adresse, dafür brauchst du kein VPN. Der Port 1433 wird in dem Netz halt an einen anderen Port des Datenbankrechners weitergeleitet. An den müsstest du über die lokale Adresse dann rankommen. Und dass die Datenbank anscheinend direkt übers WAN erreichbar ist, halte ich für keine gute Idee.

08.12.2011 - 21:22 Uhr

Hmm, wo kommen die Interop Objekte her? Das müsste schon so passen, in dem VB.NET Beispiel wird auch ein String übergeben, und die Methode erwartet laut Doku ein BSTR, das müsste gehen.

08.12.2011 - 21:03 Uhr

Ich versteh nicht ganz, wozu du das brauchst. Was interessiert dich die Server IP? Überhaupt ist die "Server IP" für mich ein etwas schwammiger Begriff in dem Zusammenhang. Ich bin mit Microsoft VPN nicht vertraut, aber ich nehme ab, gemeint ist die remote Adresse des Endpoints. Das sind aber Implementierungsdetails und sollten dich nicht interessieren. Bei anderen VPN Technologien kann es wieder ganz anders ausschauen.
Wenn du im VPN eingewählt bist, dann solltest du die Datenbank über die lokale Netzwerkadresse des Datenbankservers erreichen können. Und die sollte fest sein. Wenn das nicht der Fall ist oder nicht funktioniert, dann läuft was anderes schief.

08.12.2011 - 20:44 Uhr

Die wollen wohl keinen String haben? Was steht denn in der Doku? Du könntest zumindest einen Link auf die Doku posten. Mir sagt Labelstar z.B. gar nichts.

06.12.2011 - 23:12 Uhr

Der Vollständigkeit halber sei erwähnt, dass IPC nur zur Kommunikation zweier Prozesse auf dem selben Computer geeignet ist.

Nein. Es spielt keine Rolle, ob die Prozesse auf demselben Rechner laufen oder nicht, man spricht trotzdem von IPC. Und named pipes gehen auch übers Netzwerk, aber das hat damit auch wieder nichts zu tun.

06.12.2011 - 22:05 Uhr

Zum einen kannst du einfach bei Codeproject schauen, da gibts glaub tausende ID3 Bibliotheken und die darfst du meist auch kommerziell verwenden, musst dir halt die Lizenz anschauen.

Zum anderen brauchst kein Tutorial, du brauchst einfach eine Beschreibung vom Format, und das zu finden ist ja auch nicht schwer:

Developer Information - ID3.org

05.12.2011 - 23:45 Uhr

Sowas musst du natürlich dazu sagen, sonst macht es keinen Sinn. Auf der Mobile Plattform gibt es (laut MSDN, ich selber programmier nichts dafür) TextRenderer.MeasureText

05.12.2011 - 23:15 Uhr

Ja, du nimmst eine Überladung, wo du einen rechteckigen Bereicht angeben kannst, denselben wie bei DrawText.

05.12.2011 - 22:51 Uhr

e.Graphics.MeasureString, das hättest du auch selbst leicht finden können.

05.12.2011 - 21:24 Uhr

Ich kann mir nicht wirklich vorstellen, was du jetzt meinst, oder was du machen willst...

04.12.2011 - 16:39 Uhr

So in der Art, wobei das jetzt nicht unbedingt sinnvoll ist. Du musst Authentifizierung und Autorisierung unterscheiden. Die Authentifizierung braucht nur einmal zu erfolgen. Danach muss der Benutzer eine gültige Session haben, um irgendwas ausführen zu können. Das macht man am besten nicht selber, sonder verlässt sich auf etablierte Frameworks, wie WCF, weil da kann man einiges falsch machen, wenn man das selber implementiert.
Die Autorisierung erfolgt dann anhand der Session und der Regeln, die du definiert hast. Ein grober Fehler wäre, Benutzerrechte clientseitig zu prüfen und sich auf dem Server darauf zu verlassen, dass der Client schon weiß, was er tut. Aber ich hoffe, das machst du nicht. Deine Schnittstelle darf halt keine Möglichkeit bieten, irgendwelchen Unfug zu treiben, den man mit dem offiziellen Client nicht treiben könnte. z.B. die Datensätze anderer Benutzer einsehen oder im Namen anderer Benutzer irgendwelche Aktionen ausführen. Die Schnittstelle sollte möglichst schmal sein und sich intern alle Daten selbst besorgen, und nicht vom Benutzer übergeben lassen, wenn nicht unbedingt notwendig. Und alle Benutzereingaben genauestens validieren. Das sollte dann eigentlich reichen und du brauchst dir auch keine Sorgen darum machen, dass jemand deinen Client umgeht.

04.12.2011 - 15:54 Uhr

Hebivores Idee mit der auslieferung zukünftiger Programme sehe ich nicht von so weit hergeholt, denn M$ macht in letzter Zeit sehr vieles mit den sogenannten VHDs.

Das gibts schon lang und das geht auch etwas leichtgewichtiger, als das ganze mit einem kompletten Betriebssystem auszuliefern. Hier z.B. paar Links:

Portable application creators

Das gibts in allen möglichen Geschmacksrichtungen, z.B. Application Streaming usw. Nur hat sich das bisher leider nicht so ganz durchgesetzt. Es wäre natürlich praktisch, von einem Hersteller die Software einfach als so ein Paket zu bekommen, das man direkt starten kann (transparent und ohne dass im Hintergrund ein zweites Betriebssystem hochfährt) und dann einfach wegschmeißen, wenn es einem nicht zusagt, ohne das eigene System dabei zerschossen zu haben.

Jedoch habe ich dann doch den einfacheren und performanteren Weg eingeschlagen und mir ein Dual-Boot eingerichtet.

Das ist auch ein Weg, mit dem ich nichts anfangen kann 😃 Sogar noch weniger, als mit VMs. Ich starte meinen Rechner nie neu, wenn ich arbeite. Es würde mich extrem stören. Und die andere Umgebung wäre sicher nicht so eingerichtet, dass ich damit sinnvoll arbeiten könnte. Ich könnte nebenbei nichts anderes machen und insgesamt wär das sehr unproduktiv für mich. Natürlich habe ich auch zig Systeme auf demselben Rechner, aber gestartet wird immer nur eins und es wird auch nicht neugestartet 😉 Für mich war die Lösung dann irgendwann, komplett auf Linux umzusteigen, aber das ist sicher nicht jedermanns Sache.

Nach meiner Ansicht gehört die Unterstützung für VMs nicht nur noch weiter vereinfacht sondern direkt ins Betriebssystem

Was genau meinst du damit? Und ich nehme an, dass du mit Betriebssystem leider Windows meinst... Virtualisierung wird ja in Betriebssystemen in gewisser Weise unterstützt und hat auch in die Hardware Einzug gehalten. Und in Betriebssystemen gibt es alle möglichen Ansätze, Software zu virtualisieren. Die Frage ist nur, was man damit erreichen will. Im Unix/Server-bereich gibt es sehr viel, von chroot Umgebungen bis zu BSD Jails oder logischen Partitionen unter AIX. Es muss auch nicht unbedingt einfach zu bedienen sein, weil es müssen Leute bedienen, die sich damit auskennen und wissen was sie tun, und wenn das jeder bedienen kann, der nicht weiß, was er tut, führt das nur zu Problemen.
Wenn du hingegen erwartest, dass du unter Windows schnell die neue Office oder VS Version "virtuell" installieren kannst, und dann wieder wegschmeißen, wenn es dir nicht gefällt, dann geht das leider nicht so einfach, die Möglichkeit hätt ich natürlich auch gern... Vielleicht macht da Microsoft aber wirklich mal was, sonst wird sich die von mir schon angesprochene Application Virtualisation nie durchsetzen.

04.12.2011 - 15:32 Uhr

Aber ich hoffe wohl, dass niemand die Funktionen selbst irgendwie anderwertig aufrufen kann ODER?

Natürlich. Man könnte die Kommunikation/den Client reverse engineeren und eine eigene Software schreiben, die mit dem Server kommuniziert. Dagegen kann sich auch die Sparkasse nicht schützen. Wogegen man sich aber schon schützen kann, ist dass der Service missbraucht wird. Hier sollte der Server aber eine klare und wohl definierte API bieten und alles serverseitig validieren. Dann kann dir im Endeffekt auch egal sein, mit welchen Client jemand drauf zugreift, du weißt dann, dass er trotzdem nur das machen kann, was er auch machen darf.

03.12.2011 - 23:27 Uhr

ich weiß nicht obs noch nen schlaueren weg gibt

Natürlich 😉 Du liest bis zum Ende der Email. Die dürfte mit einem "." enden, schau dir das Protokoll genauer an und probiers aus. So in der Art:


string line = reader.ReadLine();
while (line != ".")
{
    email.append(line);
    line = reader.ReadLine();
}

03.12.2011 - 23:23 Uhr

In der Arbeit ja, privat nein.

In der Arbeit haben wir einen Pool mit rund 1000 virtuellen Maschinen, wo wir dann Remote drauf zugreifen (und auch eigene einrichten können), damit wir verschiedene Sachen testen können, oder wo Umgebungen von Kunden nachgestellt werden etc. Auch lokal setz ich in der Arbeit ab und zu virtuelle Maschinen ein, um bestimmte Sachen zu testen, oder wenn ich VMs von Kunden oder von der QA bekomme. Soweit sind sie in der Arbeit unverzichtbar.

Private habe ich mich nie an virtuelle Maschinen gewöhnen können. Angefangen habe ich quasi schon vor einer Ewigkeit, wo mein Host nur 64 MB Ram hatte, kaum vorstellbar, dass man darauf noch eine VM betreiben konnte. Aber es ging, ich hatte einen Windows Host und hab darauf eine Linux VM laufen lassen. Aber anfreunden konnte ich mich mit dem Konzept bis heute nicht. Daheim finde ich das einfach viel zu umständlich, für irgendwas eine VM zu starten. Ich suche immer Möglichkeiten, dass wenn nur irgendwie möglich zu vermeiden, und wenn sich das nicht vermeiden lässt und ich unbedingt eine VM brauche, dann läuft es meist darauf hinaus, dass ich die Sachen dann irgendwie gar nicht mehr mache, für die ich die VM gebraucht hätte. Aber das ist meine rein subjektive Einstellung, in der Arbeit hab ich wie gesagt überhaupt kein Problem damit und finde sie unverzichtbar.

03.12.2011 - 23:10 Uhr

Wovon redest du?

03.12.2011 - 22:56 Uhr

Die Technologie spielt keine Rolle. Sobald du eine verteilte Anwendung baust und keinen Einfluß über die Verbreitung des Clients mehr hast, kannst du nicht mehr 100% verhindern, dass jemand deinen Client umgeht und anderweitig auf die Daten zugreift. Das ist ein konzeptionelles Problem. Du kannst es höchstens erschweren, aber gänlich verhindern kannst du das nicht. Das alles wurde schon oft besprochen.

03.12.2011 - 22:34 Uhr

Du schreibst, ReadLine zeigt dir +OK an. Das wär auch soweit richtig. Liest du auch die übrigen Zeilen?

03.12.2011 - 22:18 Uhr

Mit Application.GetRessourceStream

"Das scheitert irgendwie" ist keine präzise Aussage. Was hast du probiert und was geht nicht?

03.12.2011 - 20:25 Uhr

Lad die Daten selber aus der Ressource und ruf dann NavigateToString auf dem Webbrowser auf.

28.11.2011 - 21:53 Uhr

Das kannst du relativ einfach optimieren, indem du nur die paar Tiles um den Mittelpunkt herum betrachtest, die überhaupt in Frage kommen. Das kannst du aus dem Durchmesser und der Größe eines Tiles schnell berechnen.

28.11.2011 - 17:26 Uhr

Ich hab den selber nicht ausprobiert, aber den Ansatz find ich auf jeden Fall gut:

Write your own RTF Converter

27.11.2011 - 19:55 Uhr

Nee, die Größe der Partitionstabelle beträgt 64 Byte. Dazu kommen 2 Byte Signatur und der Rest ist Code vom Bootloader.

Ich seh überhaupt keinen Grund, warum du hier irgendwelche IntPtr oder Marshalling brauchst. Du liest doch die Daten aus dem FileStream. Du kannst die Daten ganz einfach z.B. über einen BinaryReader einlesen.

27.11.2011 - 17:53 Uhr

Das spielt keine so große Rolle, ob du neue machen willst, oder mehrere zusammenfassen. Den Header musst du so oder so anpassen, dass es passt.

27.11.2011 - 16:53 Uhr

Mir ist keine Bibliothek bekannt, die RAR Dateien erstellen kann. Das Format ist proprietär und ich könnte mir vorstellen, dass der Autor es nicht erlaubt, solche Dateien mit anderen Programmen zu erzeugen. Sonst würde es wahrscheinlich Software/Bibliotheken geben, die das können.

27.11.2011 - 01:37 Uhr

In Paint hat der Radiergummi doch 100% Deckungskraft. Malst deine weißen Linien nicht transparent und hast den Effekt wie in Paint.

27.11.2011 - 00:50 Uhr

Ich verstehe immer noch nicht genau, wie du dir das vorstellst. Wenn du den Alpha Wert höher setzt, siehst du den weißen Strich (halb-transparent). Willst du aber anscheinend nicht. Willst du einfach die Pixel drunter heller machen? Das könntest du z.B. machen.

27.11.2011 - 00:28 Uhr

Bei einem alpha-Wert von 0 siehst du keine Veränderung, das ist normal.

26.11.2011 - 23:55 Uhr

Naja, ein Alpha-Wert von 0 ist schon arg transparent. Also, komplett transparent. Ich würd eher was über 100 probieren, eher so 150-180, aber da musst halt selber rumspielen.

26.11.2011 - 23:11 Uhr

Code ist nicht erforderlich.

Doch, und zwar von dir. Du musst schon genau beschreiben, was du machst, was du erwartest, und was nicht funktioniert.
Was heißt jetzt nicht übermalt und transparent? Was genau erwartest? Das ist nicht eindeutig formuliert, ich könnte mir unterschiedliches drunter vorstellen.

26.11.2011 - 14:39 Uhr

Da würde ich doch dem Vorschlag von gfoidl ganz klar den Vorzug geben. Für sowas gibt es fertige Report Bibliotheken, die genau für sowas gemacht wurde. So etwas mit Word nachzubauen führt nur zu Problemen und verbaut gleich etliche Möglichkeiten für die Zukunft.

25.11.2011 - 18:04 Uhr

Hab mir dieses Framework grad angeschaut und finds nicht gut. Das ist nicht C++ like und ich finds auch nicht elegant. Ich bin selber hauptberuflich C++ Entwickler und habe solche Sachen nie vermisst. Und Bibliotheken wie boost oder Qt (setzen wir beide ein) finde ich wesentlich schöner und mächtiger. Man sollte nicht versuchen, seine Erfahrungen mit einer Programmiersprache/-umgebung mit Gewalt auf andere Programmiersprachen/-umgebungen umzusetzen.

24.11.2011 - 22:03 Uhr

Es sind meist eher die schlechten C++ Entwickler, die behaupten, C# sei zu langsam. Du kannst es getrost ignorieren. Als ich vor etlichen Jahren mit Delphi angefangen habe, haben auch alle gesagt, das ist keine richtige Sprache, weil der C++ Compiler besser optimiert und schnelleren Code erzeugt. Das interessiert keinen. Es kann viele Gründe geben, sich für die eine oder die andere Programmiersprache zu entscheiden und Performance ist nur einer davon, meist ein unwichtiger.

Zusätzlich zu "premature optimization is the root of all evil" möchte ich noch anfügen "The best optimizer is between your ears" 😉 Es geht nicht wirklich oft um Performance, und wenn, kann man durch clevere Algorithmen meist viel mehr rausholen, als du Micro-Optimierungen in Assembler. C# bietet dir andere Optimierungsmöglichkeiten als C++, so kannst du in C# recht einfach dynamisch Code generieren, um nur ein Beispiel zu nennen.

20.11.2011 - 15:33 Uhr

Beschreib genauer, was du im Endeffekt erreichen willst. Ich habe das Gefühl, du wirst da paar Konzepte zusammenmischen, die nicht zusammenpassen.

18.11.2011 - 20:10 Uhr

Wo ich mich für das Thema interessiert habe, hab ich noch direkt mit DirectX und C++ gearbeitet und es war alles noch recht umständlich und man hat auch einiges an Mathekenntnissen gebraucht, die ich damals nicht hatte. Heute wär der Einstieg mit XNA und .NET um einiges einfacher. Aber nur der Einstieg 😉 Wenn du das profesionell machen willst, kommst du an DirectX, C++ und Mathe trotzdem nicht vorbei. Es ist also eine Frage, was du machen und wie tief du einsteigen willst. Und es ist auch irgendwo Geschmackssache. Vor allem was Game Engines angeht, musst du dich erst ein bisschen auskennen, bevor du entscheiden kannst, welche dir zusagt und mit welcher du arbeiten kannst. Für den Einstieg find ich Axiom3D aber auf jeden Fall nicht schlecht. Das basiert auf der Ogre Engine, und mit der wurden auch kommerzielle Spiele umgesetzt, z.B. Anhk.
Ich würde vorschlagen, du gehst einfach in eine Uni- oder FH Bibliothek und schaust dir an, was es da für Bücher gibt. Ich mach das immer noch gern, einfach in Büchern rumstöbern. Man findet immer was interessantes und entdeckt neues. So kannst auch schnell mal probieren, ob dir ein Buch zusagt oder nicht. In der FH-Bibliothek in meiner Stadt gibts bestimmt weit über 100 Bücher, die mit Spieleentwicklung, Game Engines, 3D Modellierung, KI usw. zu tun haben.

18.11.2011 - 19:40 Uhr

Also gut, da du die Frage hier nochmal gepostet hast, nochmal die Antwort:

Ich würd sagen, du bist noch Lichtjahre davon entfernt, ein Spiel zu programmieren, wenn du in Kategorien wie Control oder Events denkst. Was deine Frage konkret betrifft, sind es 3D Modelle und Collision Detection. Aber da gibts noch tausende andere Begriffe und Konzepte, die du vermutlich nicht kennst. Normal verwendet man für sowas Game Engines. XNA nimmt schon etwas Arbeit ab, ist aber trotzdem keine Game Engine im eigentlichen Sinne. Es gibt paar Game Engines, die an XNA angepasst wurden, z.B. Axiom3D. Aber ich würd sagen, bevor du anfängst, ein Konzept zu erstellen, musst du erstmal paar gute Bücher über Spieleentwicklung (ich finde allein schon den Begriff Spieleprogrammierung irreführend, da gehts bei weitem nicht nur um Programmierung), damit du lernst, was es überhaupt gibt und worum es dabei geht.

17.11.2011 - 15:55 Uhr

@bredator: Es geht nicht nur um Bibliotheken. JavaScript ist tatsächlich eine recht mächtige und elegante Sprache, die gern unterschätzt wird. Daran muss man sich aber erstmal gewöhnen. Hier noch ein Artikel, der das ein bisschen verdeutlicht:

JavaScript: The World's Most Misunderstood Programming Language

Ich möchte hier noch ergänzen, dass auch Frontend Logik sehr komplex sein kann, auch wenn das Backend in einer ganz anderen Sprache geschrieben ist. Es muss nicht auf bloss ein paar Grafiken und CSS Spielerein hinauslaufen. Wir haben ein großes Portal mit vielen Millionen Zugriffen pro Monat. Das Portal ist in J2EE geschrieben, die Kernlogik sogar in C++ (weil die eigentliche Software in C++ geschrieben ist, und das Portal die Funktionalität wiederverwendet). Trotzdem ist das Frontend entsprechend komplex. z.B. muss man 3D Bauteile rendern, die in einem eigenen Format vorliegen und mit unterschiedlichen Metadaten angereichert sind, die man auch darstellen oder mit anderen Inhalten verlinken muss, wir haben Augnemented Reality Funktionalität mit der Webcam usw. Das ist alles gar nicht trivial umzusetzen und da spielen die Vorlieben der Entwickler eine große Rolle. Das sieht man auch an der Vielfalt der Lösungen. ActiveX stammt aus der Zeit, als wir nur C++ Entwickler hatten. Ist aber natürlich in jeder Hinsicht suboptimal. Der Java Client ist hinzugekommen, als wir eine Java Entwicklungsabteilung gegründet haben. Ist aber auch nicht so optimal. Später ist Flex/Flash hinzugekommen.){gray} Sicherlich hätten wir das eher in Silverlight geschrieben, wenn wir in der Firma einen .NET Background gehabt hätten, haben wir aber nicht. Im Endeffekt wollen wir das aber alles nach Möglichkeit loswerden und auf reines HTML + JS umsteigen. Wird aber sicher noch eine Weile dauern, allein weil WebGL noch nicht so ausgereift ist und einen schlechten Ruf hat und wegen Augnemented Reality. Das Ziel ist aber ganz klar - weg von irgendwelchen Plugins.

15.11.2011 - 19:18 Uhr

Du brauchst in dem Fall Stopwatch wohl nicht als Feld, deswegen lokale Variable. Du hast aber auf jeden Fall ein Timespan Feld.
Ich würde Variante 2 oder 3 nur einsetzen, wenn du kein Timespan Feld hättest und den Wert "dynamisch" aus dem Stopwatch holen würdest:


class Http
    {
        private Stopwatch _watch = new Stopwatch();

        public TimeSpan ResponseTime 
        {
           get  { returrn _watch.Ellapsed; }
        }

        public void DownloadFile(string address, string fileName)
        {
            _watch.Restart();
            new WebClient().DownloadFile(address, fileName);
            _watch.Stop();
        }
    }

Und dann brauchst du natürlich auch keinen Setter.

15.11.2011 - 18:39 Uhr

Es ist ganz einfach, wenn du ein Feld brauchst, nimmst du ein Feld, wenn du eine lokale Variable brauchst, nimmst du eine lokale Variable.
So wie ich deinen Code verstehe, meinst du eher Feld oder Property. Wobei du beides verwendest, was eh keinen Sinn macht. Eine lokale Varibale ist etwas, was lokal in einer Methode deklariert ist. Wenn es in der Klasse deklariert ist, ist es ein Feld. Eine Property ist im einfachsten Fall ein Zugrifsswrapper für ein Feld. Und du hast eben eine Auto Property verwendet, die den Code für das Deklarieren, Setzen und Abfragen des Felds automatisch generiert. Das ist jetzt wirklich nur Geschmackssache. Du könntest also selber die Property ausschreiben, die den Zugriff auf _watch kapselt, oder du kannst es dir sparen und wir in einem ersten Beispiel eine auto property verwenden.

15.11.2011 - 17:25 Uhr

Ich kenne professionelle Businessanwendungen in Flash/Flex, haben wir sogar auch in unserem Unternehmen geschrieben, als Teil einer sehr viel größeren Software. Und ich kenne sowas auch in Silverlight und mir gefällt Silverlight besser.
Trotzdem bin ich skeptisch, was die Zukunft von Silverlight angeht. Ja, es hat einen gewissen Marktanteil erreicht, weil die ganzen .NET Entwickler plötzlich eine Plattform bekommen haben, mit der sie viel mehr anfangen können, als mit Flash. Dennoch ist das ganze noch nicht lang am Markt und könnte auch genauso schnell wieder verschwinden. Auch wenn HTML5 nicht ganz so viel kann, werden viele Entwickler abspringen. Einfach weil HTML5 im Browser integriert ist und sich natürlich anfühlt, als Plugins wie Flash oder Silverlight. Diese Flash Komponente, die ich am Anfang erwähnt habe, die gibt es bei uns in den "Geschmacksrichtungen" Flash, Java Applet, ActiveX und jetzt wird grad eine HTML5 Version gebaut. Die hat ganz klar den Vorrang. Alles andere fühlt sich wie ein Fremdkörper an. Und jetzt ist die Frage, ob es sich für Microsoft noch lohnt, wegen der paar verbleibenden Silverlight Entwickler, das ganze Framework und die Tools weiterzuenwickeln. Ich glaube, nein.