OK, vielen Dank für das Feedback hier 👍
... Watchdog-Karten (oder USB) war für mich bisher völlig unbekannt. Hat jemand damit Erfahrungen, bzw. funktionieren die dann auch, wenn es einmal im Jahr dann drauf ankommt? 😉
Ich hab heute Nacht jetzt schon eingebaut, dass ich ihn mittels Befehl runterfahren kann - total "billig" gemacht. Also, alle 5 Minuten schickt er eine Testmeldung an den (Haupt) Server und als Antwort kann man dann mitgeben, wenn gewünscht, dass er den Befehl "shutdown -r" ausführen soll ... soweit so gut, ich bezweifle aber, dass es eben überhaupt noch zur Testmeldung kommt und auf dem Rechner eben überhaupt keine Befehle mehr ausgeführt werden ... war gestern auch so (kein Webserver, keine Befehle mehr, kein RD ect., nix mehr ging) war alles eingefroren.
Nun war es das erste mal - die Dinger laufen auch schon beide fast über ein Jahr, aber es ist halt nervig, wenn man nicht vor Ort ist, bzw. selber nix machen kann. Ich will da einfach eine Lösung einbauen, so dass ich (und auch die anderen) ihre Ruhe haben. 😉
Ja, das die Standardeinstellung und hat (natürlich) auch nicht geholfen.
Was könnt ihr für (Relais) Schaltsteckdosen empfehlen? ... GSM ist zwar schön, aber dann jeweils noch Prepaid-SIM rein und jedes Jahr neu aufladen ist halt auch net so der Bringer (würde ich halt nur zur Not machen) ... optimal wäre, wenn es eine Art Webserver in der Steckdose gäbe und man diese via IP ansteuern könnte und dann eben einen (Stromzufuhr) Reset durchführen.
Hallo,
gibt es eine mögliche Einstellung (Registry ect.), wenn Windows für eine bestimmte Zeit hängt, einen automatischen Neustart durchführen zu lassen?
Mir ist heute zum ersten mal passiert, dass Windows auf meiner Kiste völlig "eingefroren" ist (Eventlog sagt, Resourcen haben gefehlt, Bluescreen ect., hab aber leider den Fehlercode jetzt nicht) ... naja, mir fehlen über 1 Stunde, nix im Eventlogger und auch hab ich dort Windowsservice laufen, der alle 5 Minuten ein DynDns-Update macht, nix mehr im Logfile für die Zeit gefunden, als ob er tot gewesen wäre, keine Loggingeinträge .. Eventlogger erst wieder, nachdem ein Neustart an der Kiste durchgeführt wurde.
Da mir das zur gleichen Zeit auf zwei verschiedenen Kisten passiert ist, gehe ich von aus, dass ein Update dafür verantwortlich war und dann Flash die Kisten zum erliegen gebracht hat - da ich nicht vor Ort bin, hatte ich aber beides mal Feedback bekommen, dass die jeweiligen Kisten liefen (sieht man auch im Eventlog, dass erst Shutdown kurz vor Logon nach der Stunde)
OK, das war jetzt so die Kurzgeschichte ...
Ich wollte einfach wissen ob es halt möglich ist, bei solchen Fällen, wenn alles eingefroren ist, einen Restart zu erzwingen ... mach mir da jetzt net so groß die Hoffnung, denn wenn keine Resource mehr da sind oder intern nix mehr läuft, dann wird auch so eine Einstellung nix mehr nutzen? - jemand eine Idee, bzw. Erfahrungen damit gemacht?
Was mir zur Not einfällt: im BIOS einstellen, automatischer Restart nach Stromunterbrechung und dann mit einemr GSM-Schaltsteckdose via SMS den Strom kurz unterbrechen:
Thx schon mal im Voraus für Antworten und Anregungen.
Also, das Problem ist zwar nicht behoben aber ich habe kurzfristig eine andere Lösung programmiert. Anstatt die Daten via POST zu senden, wird jetzt nur noch eine Download-ID via POST gesendet und dann holt sich der Rechner die Daten via Download.
OK, zugegeben, wir gehen hier zweimal übers Netz für eine Nachricht, aber
a) es funzzt (das ist mal sehr wichtig)
b) Download ist schneller als Upload (somit ist die Gesamtverarbeitungszeit einer Nachricht in etwa gleich geblieben)
Ich hab ehrlich gesagt keine Ahnung woran das liegen könnt - ich tippe schwer auf den Anbieter (hier Tele2 Österreich). Es war wirklich so, dass POSTs nach einer bestimmten Zeit nicht mehr durchgelassen wurden (also, beim Server kam nix mehr an, nur noch Timeouts) ... egal, gelöst .. wir wissen ja alle, Sachen gibt es, die darf es eigentlich nicht geben. 😁
Danke für die Hilfe!
OK,
Mit dem Ping habe ich mich "entschuldigt" ... ist ein ganz normaler Request via HttpWebRequest-Objekt an den Server ... somit sollte das klar sein
Wir wollen jetzt nicht darüber diskutieren, was es für eine "Art von Anwendung" und warum diese Art von Anwendung es ist. Nur soviel, IIS dient in dem ganzen Konstrukt nur dazu, Nachrichten aufzunehmen, bzw. auszutauschen und beim Request schreibt IIS-Anwendung (also ASPX-Seite) die Nachrichten "nur" auf die Platte und ein Sevice auf dem jeweiligen Rechner verarbeitet dann die Nachrichten, welche aber beim Fehler gar nicht geschickt werden können, da das HttpWebRequest-Objekt eben den Timeout-Error zurückbringt als Fehler.
Es gibt kein Load-Balancing oder ähnliches, läuft alles (aktuell sogar "nur" sequentiell) über einen IIS-Server auf den jeweiligen Rechnern und ist mein privates Projekt.
OK, sorry, da hab ich mich anfangs dann bißchen falsch ausgedrückt.
Es handelt sich hier nicht um eine "klassische" Webanwendung.
Der Client schickt "stink normale" HTTP-POST-Anfragen mittels WebRequest an den Server. Was halt wirklich komisch ist, ist die Tatsache, dass ein Befehl, welchen ich PING nenne (der ist nun mal kürzer, was die Zeichen betrifft, ansonsten gibt es imo keine Unterschiede, denn die Schnittstelle ist ja die gleiche) immer funktioniert und die anderen dann auf genau diesem Rechner nicht mehr, nachdem er halt eine Zeit lang "Idle" war.
Zu 100 Prozent kann man natürlich Prgrammierfehler nicht ausschließen aber hier wird eben "nur" ein Request an den Server geschickt, der eben, bei den aufgezählten Konstellationen, einfach net mehr durchkommt und im "laufenden Betrieb" funktioniert auch alles soweit - sehr komisch.
Ich schaue mal weiter gründlich nach ob ich was finde - dachte mir halt auch, dass ggf. jemand hier auch schon mal das Phänomen erlebt hat ... ggf. doch mal Wireshark draufspielen und überwachen ob das Ding überhaupt reinkommt - dir Danke erst mal. 👍
Hm,
erst mal Danke für die Antwort.
Ping bedeutet nur, dass die Payload eben weniger Zeichen hat - ich schicke verschiedene Nachrichten programmiertechnisch immer gleich hin mit einer unterschiedlichen Länge der Payload und bei einem Ping-Befehl ist eben die Payload am geringsten und komischerweise funzzt das immer ... wenn es der Sleep-Mode sein sollte, dann würde das ja bedeuten, dass er a) nicht mehr aufwacht und b) nur noch Befehle mit einer Payload von einer gewissen Länge verarbeitet ... ich schau mal was ich unter Server Profiling finde, weil das Problem echt nervig ist ... ich denke aber, der Befehl kommt gar nicht erst bis zum Server durch und wird vorher (Internetprovider, Firewall ect.) einfach geblockt ... ich find ja auch nix im Server-Logfile.
Programmierfehler kann definitiv ausgeschlossen werden, weil gleicher Build auf aktuell 6 Servern läuft und das vollkommen ohne Probleme (bis eben auf die eine Ausnahme und das jetzt im 6. Tag hintereinander und hatte vorher nie Probleme damit)
Hallo,
ich "erleide" seit ca. einer Woche ein sonderliches Verhalten meiner Anwendung und dachte, hier kann mir ggf. jemand helfen - die Problematik tauchte vorher nie auf, das Programm lief ohne Probleme über ein halbes Jahr bis jetzt.
Folgende Problematik: Ein Client schickt BASE64 encoded Daten (via HTTP-POST) an einen Rechner (IIS 7.5) und dort werden die Daten weiterverarbeitet. Die Länge der Zeichen im POST sind unterschiedlich je nach Befehl, jedoch max. 5000 Zeichen. Benutze ich nun das System mehrere Studen nicht mehr (z.B. über Nacht ect.) dann stelle ich aktuell jeden Tag folgendes Verhalten fest:
Bei einem Befehl (PING) funktioniert alles noch wie erwartet aber bei allen anderen Befehlen bekomme ich einen Timout-Fehler. Der PING-Befehl ist von den Zeichen her der Befehl mit dem kleinsten Payload - ggf. kann es daran liegen? ... IIS logged bei den Timeout nichts, bei PING-Befehl schon, da geht ja auch alles - es scheint, dass bei den Timouts überhaupt nichts beim Rechner ankommt. Komischerweise kann ich auch IIS nicht beenden, bzw. Neustarten - er dreht dann einfach ewig und macht nix. Das einzige, was hilft, ist ein kompletter Neustart des Rechners, dann funktioniert alles wieder und das für Stunden (4 bis 10 je nach Gebrauch) - lass ich dass dann wieder ein paar Stunden in Ruhe, geht alles wieder von vorne los.
Was kann das denn jetzt sein - hat jemand eine Idee, bzw. schon einmal ein ähnliches Verhalten festgestellt - ich bin am verzweifeln hier, weil das ja wirklich "unglaublich" ist, was da geht, bzw. nicht geht.
Programmfehler ist ausgeschlossen, weil es nicht nur vorher ein halbes Jahr ging, nein, es laufen auch noch aktuell 6 andere "Empfangsrechner", bei denen konnte ich ein derartiges Verhalten noch nie feststellen.
Kann es ggf. am Internet-Provider, Einstellungen Router ect. liegen? ... ich weiß nicht weiter - aktuell starte ich einfach den Rechner neu und gut ist - natürlich soll das keine Dauerlösung sein.
Danke schon mal für Hilfe und Anregungen im Voraus!
Hallo,
gibt es eine Möglichkeit an den geladenen externen Quellcode von JavaScript zu kommen, wenn man das Control WebBrowser einsetzt.
Embeded code lässt sich ja mit DocumentText sehr schön und leicht ändern, wie aber sieht es aus, wenn es ein externes Script ist.
mit document.scripts[index].src kommt man ja nur an den Resource-Pfad, aber nicht an den Qutelltext.
Ich möchte aktuell ein nerviges alert ausschalten, habe aber keine Idee mehr, wie ich das machen könnte.
Würde ggf. funktionieren document.scripts[index].src = "" // also auf empty setzen
und dann den ursprünglichen Quellcode ins aktuelle Dokument embeden ohne mit auskommentiertem alert?
Danke schon mal für etwaige Hilfe im voraus!
OK, ich will mich dann nochmal bei allen bedanken.
Ich war irgendwie auf einer völlig falschen Fährte - es klappt jetzt mit der Thread-Methode in der Basisklasse:
private void WebBrowserWaitBackgroundThread(Object threadParams) {
if(this.webBrowser.InvokeRequired) {
this.webBrowser.Invoke(new WebBrowserWaitBackgroundThreadDelegate(WebBrowserWaitBackgroundThread), threadParams);
}
else {
Object[] args = (Object[])threadParams;
WebBrowserWaitBackgroundCallback webBrowserWaitBackgroundCallback = (WebBrowserWaitBackgroundCallback)args[0];
int timeout = (int)args[1];
String controlName = (String)args[2];
if(webBrowserWaitBackgroundCallback != null) {
if(!String.IsNullOrEmpty(controlName)) {
// Handle configured control
int activityCounter = 0;
int increment = 5;
// Maximum 15 seconds timeout
while(activityCounter < TimeSpan.FromSeconds(15).TotalMilliseconds) {
// Check control exists and has content
HtmlElement controlElement = null;
try {
controlElement = this.webBrowser.Document.GetElementById(controlName);
}
catch {
// Ignore this one, document could be null due to loading process
}
if(controlElement != null && !String.IsNullOrEmpty(controlElement.InnerText)) {
break;
}
Application.DoEvents();
Thread.Sleep(increment);
activityCounter += increment;
}
}
else {
// Handle configured timeout
if(timeout > 0) {
int activityCounter = 0;
int increment = 5;
while(activityCounter < timeout) {
Application.DoEvents();
Thread.Sleep(increment);
activityCounter += increment;
}
}
}
// Invoke callback ==> HIER WIRD DIE Methode in der Subklasse aufgerufen !!! - InvokeRequired-Check nun nicht mehr notwendig in der Subklassen-Methode :)
webBrowserWaitBackgroundCallback.Invoke();
}
}
}
Dank euch allen für die Hinweise - Thread solved!
Ich erklär nochmal kurz die Problematik.
Ich habe eine Basisklasse, in dieser gibt es ein WebBrowser Control.
Jetzt kommt es vor, dass viele Webseiten mit AJAX arbeiten, so dass man bestimmte Controls oder Werte erst nach bestimmter Wartezeit angezeigt bekommt, weil hier funktionieren die WebBrowser-Control-Events DocumentCompleted ect. nicht, da es ja keinen kompletten Server-Roundtrip gibt und das Dokument ja nicht komplett neu geladen wird.
Jetzt habe ich eine Wait-Methode in der Basisklasse eingebaut, die solange "aussetzt", wie Timeout übergeben wird oder bis eine bestimmte ID in dem aktuellen Dokument gefunden wird.
Das Problem scheint zu sein, dass ich in dem Thread der Basisklasse widerum einen Delegaten aufrufe und immer dann ist ja InvokeRequired true.
Was ich jetzt noch mal probiere ist, den Methodennamen als String zu übergeben und in der Basisklasse / Thread der Basisklasse mittels Reflection die Methode in der Subklasse aufzurufen - ich denke, das wird funktionieren. Die Threadmethode prüft natürlich vorher gegen InvokeRequired und ja, es war ein Fehler von mir mit this.InvokeRequired, ich habe natürlich das Ausgangscontrol gemeint aber in der Schnelle noch das alte Zeugs hier reinkopiert - sorry!
Hallo gfoidl,
ich suche nach einem Weg, die Abfrage nach InvokeRequired in die Basisklasse auszulagern.
Es kommt sehr oft vor, dass ich, siehe oben, einen Callback mittels Delegate bei der Basisklasse registriere. Die Basisklasse ruft dann die Methode über den Delegaten über einen Thread auf.
Jetzt habe ich schon viel rumprobiert aber es scheint so zu sein, dass ich immer explizit in der Targetmethode die Abfrage machen muss, was natürlich nervig ist, wenn man mehrere solcher Callbackmethoden hat und immer wieder die Abfrage reinschreiben (reinkopieren) muss.
Hallo,
gibt es eine Möglichkeit die Abfrage (und das Handling) für InvokeRequired in Basisklasse zu kapseln?
Aktuell wird eine Callback-Methode über die Basisklasse registriert:
base.WaitWebBrowserBackground(new WebBrowserWaitBackgroundCallback(LoginNavigateHomepage_CallbackDone), 5000);
Und in der Basisklasse wird dann von einem Thread aus die Callbackmethode aufgerufen, welche wie folgt aussieht:
private void LoginNavigateHomepage_CallbackDone() {
if(base.webBrowser.InvokeRequired) {
this.Invoke(new WebBrowserWaitBackgroundCallback(LoginNavigateHomepage_CallbackDone));
}
else {
base.LogInfo("THIS WORKS!" + base.webBrowser.InvokeRequired);
HtmlElement loginButton = base.webBrowser.Document.GetElementById("submit-alt");
loginButton.InvokeMember("click");
}
}
Jetzt habe ich schon einiges ausprobiert, aber ich bekomme es einfach nicht hin, das "Low-Level-Gedöns" der Abfrage auf InvokeRequired in der Basisklasse zu kapseln.
Hat jemand Idee oder geht das einfach net?
Für etwaige Antworten schon einmal vielen Dank im Voraus.
Hallo,
ich zermartere mir gerade den Kopf, wie ich folgendes Problem lösen könnte.
Ich habe auf einem Rechner x-verschiedene (können auch mal > 20 sein) Programme laufen. Diese brauchen keinen Austausch mit Datenbanken. Datengrundlage (Lookup) sind XML-Dateien mit ID- und Kataloginformationen. Diese werden vom Serverprogramm beim Deployment aus der Hauptdatenbank generiert und deployed.
Aufgräge kommen via MSQM rein und raus.
Wie, wenn es überhaupt möglich ist, kann ich vorgehen, um die XML-Dateien lediglich einmal pro Rechner zu laden und nicht pro Applikation?
Klar ist schon, dass ich die jeweiligen Inhalte cache (static), aber ich würde die gerne für alle Applikationen einmal cachen. Wie geht man da vor, ohne alle Anwendungen in eine zu packen?
Oder kann es sein, dass ich hier ein Verständnisproblem habe und das vom System schon "richtig" interpretiert wird. Also, wenn 20 Applikationen auf die gleiche DLL zugreifen, dann sind doch 20 Instanzen im Speicher oder eine?
Danke für etwaige Antworten schon einmal im Voraus.
Dank euch beiden für die Infos - bin da nicht immer auf dem neusten Stand und hätte ja auf diesem Gebiet ja Änderrungen bei den neuen Versionen geben können.
Thema somit erledigt!
Hallo,
ist es aktuell immer noch so, dass man für jeden Thread (und explizit für jeden "Unterthread" die CultureInfo explizit festlegen muss, wenn man nicht die des installierten Frameworks benutzen möchte?
In Java beispielsweise setzt man beim Start user.language=en und gut ist.
Gibt es (jetzt) etwas ähnliches in C#?
Problem ist, dass ich sehr viele Anwendungen auf verschiedenen Servern mit deutschem Betriebssystem laufen habe aber englisch entwickle.
Ich möchte böse Überraschungen vermeiden (obwohl ich schon versuche bei Formatierungen explizit die CultureInfo anzugeben - aber ist ja schnell mal vergessen)
... und dann überall das englische .NET-Framework nachzuinstallieren ist auch net so der Bringer.
Thx schon mal für etwaige Antworten im Voraus.
Hallo,
ich ärgere mich nun schon seit fast 3 Wochen mit dem gleichen Problem rum und ich komme nicht zum Ziel.
Es gibt eine Seite eines Buchmachers, welche via AJAX alle 2 Sekunden einen Request an den Server schickt für ein Update von (LIVE) Quoten.
Die Antwort ist mit Kommata getrennter "Datensalat". Aus diesem habe ich jetzt fast 3 Wochen lang analysiert und immer weiter angesehen, so dass ich jetzt 85 Prozent der richtigen Quoten abdecke, das aber natürlich nicht akzeptabel.
Ich bin jetzt an einem Punkt, wo ich definitiv nicht weiter komme.
Ganz aufgeben möchte ich aber auch nicht, deshalb hier mal die Frage, ob es irgendwelche Tools gibt, um JavaScript zu analysieren, debuggen, ect.
Das Javascript ist schon mal total wild und alles in einer Zeile, da kann man mit Firebug schon mal gar nicht debuggen ect.
Ich meine, es werden ja nur Daten ausgetauscht und ich muss doch irgendwie an die Daten kommen die ich brauche, bzw. die richtigen Requests schicken.
Hat hier jemand eine Idee wie er vorgehen würde?
Ich möchte die Quoten in meinem privaten Programm nutzen, da sind eben schon paar Anbieter drinnen und ich möchte den nun auch hinzufügen, so dass ich ein zentrales Programm habe.
Ich danke schon mal für etwaige Antworten im Voraus.
OK, manchmal ist es auch viel einfacher als ursprünglich gedacht ... und da ich Monologe liebe, hier gleich die Lösung:
// Fetch Spring database connections
if (xmlDocument.FirstChild.Name.Equals("objects"))
{
String dataProviderNamespaceName = String.Empty;
String dataProviderNamespacePrefix = String.Empty;
// We iterate all attributes and search for the database provider prefix
foreach (XmlAttribute attribute in xmlDocument.FirstChild.Attributes)
{
if (attribute.Name.StartsWith("xmlns:"))
{
dataProviderNamespaceName = attribute.Value;
dataProviderNamespacePrefix = attribute.Name.Substring(attribute.Name.IndexOf(":") + 1);
break;
}
}
....
verwendetes Datenbanksystem: XML
Hallo "Kollegen",
ich suche nach einer Möglichkeit im .NET 2.0 (aus Gründen der Abwärtskompatibilität muss ich dieses Framework verwenden) aus beliebigen XML-Dateien alle Namespace-Deklarationen auszulesen.
Es geht darum, generisch nach bestimmten XML-Mustern zu suchen und Werte zu prüfen.
Ich habe bisher nichts gefunden und mit Regular Expressions da "drüberzugehen" ist auch nicht so der Bringer".
Danke schon mal im Voraus für etwaige Antworten.
Beispiel:
namespaceManager.AddNamespace("db", "http://www.springframework.net/database");
Jetzt kann ich das zwar so hardcoded programmieren und zu 95 Prozent ist das auch immer richtig (dank an Copy & Paste), darauf verlassen kann ich mich aber nicht, dass das Prefix immer db lautet oder der Namespace immer der Obige ist.
Hallo,
ich krame den Thread mal wieder aus ... ist jetzt bald schon ein Jahr vergangen - Frage bleibt die gleiche.
Bevor ich anfange, das selbst zu coden wollte ich mich mal vergewissern ob es nicht (mittlerweile) ein geeignetes Tool gibt.
Ich möchte ein Tool, welches mir ein Objekt(graphen) mit Testdaten befüllt, welche ich konfigurieren kann.
Beispielsweise gibt es in einem Objekt ein Property Ort, dann möchte ich alle relevanten Orte, z.B. "Hamburg", "München", "Stuttgart" konfigurieren können, die zur Auswahl stehen oder bei Decimal-Properties Ranges angeben können usw.
Gruß und Danke für etwaige Antworten schon einmal im Voraus.
Um diesen Thread nochmal aufzumachen ...
@herbivore,
es geht primär nicht darum Daten zu speichern oder ein fertiges Programm zu verkaufen, sondern lediglich darum, eine (für mich private) Plattform zu haben, in welcher alle (Live) Quoten "zusammenlaufen".
Ich habe jetzt bei allen Anbietern, die Flash-Lösung anwenden, die Daten erhalten (in der Regel geschieht hier der Datenaustausch via POX) auser bei einem, der bereitet mir echt seit mehreren Tagen Kopfzerbrechen.
Via JavaScript wird mit Flash kommuniziert und in Flash wird mittels XmlSocket eine Verbindung zu einem Push-Server aufgebaut.
Ich bekomme es einfach nicht auf die Reihe das so nachzubauen, trotzt vieler Hilfstool (Flash-Decomplier, Fire/Flashbug JavaScript-Debugger im Firefox, Wireshark, Fiddler usw.)
Hat hier jemand Erfahrung mittels sog. Push-Servern? Ich kann zwar einen "ganz normalen" POST senden (egal ob Fiddler oder via Socket), dann bekomme ich aber genau 45 Sekunden später eine Antwort und das Socket ist dicht, also die Verbindung ist geschlossen.
Ich steige nicht dahinter, was ich wann senden muss um die Daten sofort zu bekommen bei weiterhin bestehender Verbindung.
Wäre nett, wenn sich der ein oder andere hier meldet, der etwa schon ähnliche Probleme hatte.
Danke für etwaige Antworten schon einmal im Voraus!
Nochmal gleich eine Frage an die (Flash) Experten:
Wenn ich im Firebug Netzwerkereignisse sehe, was passiert dann genau in Flash?
Es ist nämlich so, dass ich bei drei Anbietern "alles" sehe und bei einem anderen gar nix, das bedeutet, die Werte werden angepasst ohne dass im Firebug etwas erscheint.
Ist es vielleicht so, dass letztere Anwendung mittels ActionScript die Requests abfeuert und alle anderen via Applet mit Browser kommuniziert?
@Floste,
vielen Dank für den Tip.
es funktioniert mit Firebug und die drei bei denen ich jetzt mal nachgesehen habe, versenden alle via HTTP, also plain und der Austausch erfolgt via XML 👍 😁 ... also für die Infos (Quoten) ... Abwicklungen dann schon via HTTPS.
Danke erst mal euch allen für die Hilfe und Hinweise
OK, vielen Dank für die Erleuterungen.
Wie kann ich in die Thematik einsteigen. Wie soll ich anfangen?
Wireshark und los geht's ist zu einfach.
Jemand welche Links oder sogar Lektüre?
Gruß
OK, wie oben schon angesprochen, gehe ich nicht davon aus, dass die Anbieter nur deswegen immer mehr auf Flash-Anwendungen bauen, weil die sich schützen wollen vor Arbitrage-Wettern.
Es geht einfach darum, dass die mit der Zeit gehen müssen, sehr viele schöne dynamisch "Klitzerfeatures" anbieten müssen und das geht eben mittels Flash viel schneller und ist besser zu warten als via AJAX.
Habe ich es richtig verstanden, dass via ActionScript "ganz normale" Requests via HTTPS gesendet werden?
Das bedeutet, dass man solche Anwendungen auch selbst in anderer Umgebung (Programmiersprache) "umschreiben" kann und die Requests senden kann, wenn man den jeweiligen Aufbau der Requests kennt?
Wie läuft das eigentlich intern technisch ab? Ich bin da (noch) nicht so tief drinnen - muss es aber für die Zukunft mir aneignen, sonst kann ich mir einen anderen Nebenjob suchen.
Mal ganz einfach gesprochen. Kann es so sein, dass das Flash-Applet unverschlüsselt Daten "anmeldet" beim Browser um diese zu versenden - der Browser verschlüsselt diese, sendet diese vie HTTPS mit POST an den Server, empfängt den Response, decryptet diesen und leitet unverschlüsselt die Daten wieder an das Flash-Applet?
So in etwa ist der Workflow?
Hallo,
also, wenn die Flashanwendungen von Haus aus verschlüsselte Daten senden, dann kann ich wohl überhaupt nix machen, oder?
Es ist schon so, dass die Wettanbieter keine Teilnehmer wollen, die sich auf Arbitrage spezialisiert haben, aber die sind prozentual gesehen so in der Minderzahl, dass imo die Anbieter nicht deswegen immer mehr auf Flash ausweichen, sondern einfach nur aus dem Grund, dass die optischen Gestaltungs- und Funktionsmöglichkeiten wesentlich einfacher zu implementieren sind als z.B. mittels AJAX.
Gruß
Hallo "Kollegen",
ich habe echt ein großes Problem für die Zukunft.
Immer mehr Anbieter im Web stellen nur noch Flash-Seiten zur Verfügung.
OK, es geht um Wettanbieter und bei Flash bin ich noch auf keine Lösung gekommen, einen Automatismus zu programmieren.
Ich muss immer sehr schnell handeln.
Bei normalem HTML / AJAX ist das kein Problem, z.B. eine gute Wettmöglichkeit ausfindig zu machen und dann auch gleich eine Wette zu kaufen (klassisches Screen Scraping) ...
nur was mache ich bei Flash.
Nun ist ja das angegebene Screen Scraping schon sehr aufwändig zu implementieren, da eine Umstellung der Website zeitaufwändige Anpassungen mit sich bringt, jedoch bei Flash kann das total ausarten.
Einzige Idee, die ich habe ist, zyklisch den Bildschrim zu photographieren, das Bild mittels OCR auslesen und dann eine Maus- und Tastatursteuerung durchführen - das ist aber alles sehr umständlich und eigentlich "völliger Blödsinn" ...
jetzt dachte ich, dass hier der ein oder andere unterwegs ist und eine Lösung präsentieren kann.
Normal ist es doch so, dass die Flashanwendung Daten (in welchem Format auch immer) an den Server sendet und Daten empfängt - damit müsste man doch was machen könnnen ... müsste doch wie SOAP funktionieren, nur dass jede Flashanwendung ihre eigene "SOAP-Schnittstelle" hat.
Ich würde mich wirklich über Anregungen und Antworten sehr freuen.
Danke schon mal für etwaige Antworten im Voraus
Also, ich programmiere intensiv seit über 10 Jahren - das ist in Fleisch und Blut übergegangen - ich will das nicht ändern, auch wenn ich dann an anderen Rechnern sitzen würde, dann müsste ich ja immer auf Englisch umstellen.
Leider ist das mit den Codes echt blöd, da ich ja erst immer das Nummernpad aktivieren muss.
Schön wäre, wenn es eine Möglichkeit geben könnte, mittels eines Short-Cuts die Zeichen reinzupasten.
Hallo "Kollegen",
ich hab ein großes Problem.
Ich habe mir aus den USA ein Notebook schicken lassen, natürlich mit US-amerikanischen Tastatur.
Das englische Keyboard-Layout benutze ich auch öfters, jedoch zum Programmieren bin ich Deutsch gewohnt und wollte das auch weiter machen.
Zu meinem entsetzen musste ich feststellen, dass die US-Tastatur weniger Keys hat als die Deutsche und neben dem Z (Y) gleich die Shift-Taste kommt - mir fehler auf dem deutschen Layout komplett die eckigen Klammern, z.B. für HTML-Programmierung oder PHP-Programmierung.
Wie kann ich dieses Problem am besten lösen - wie gesagt, auf dem englischen Layout möchte ich nicht programmieren - geht hier was mit Short-Cuts?
Danke schon mal für etwaige Antworten im Voraus.
@Morloc,
für Massendruckaufträge imo nicht geeignet, da erhebliche Performanceprobleme ... da können die beim Konfektionieren Däumchen drehen 😉 ... von Ansteuerung verschiedener Drucker via Threads ganz zu schweigen und usus ist es auch nicht, aus z.B. einem Service heraus ein (Browser) Controlelement zu instanzieren.
@Joetempes,
sollte aber nur dann gehen, wenn Adobe installiert ist, und genau das dauert dann eben ewig, weil im Hintergrund die Standardprozesse verwendet werden.
Ist zwar schon wieder über 1 Jahr her, aber ich denke, ohne Kohle zu investieren, ist gprint die beste Lösung auf der .NET-Schiene und so läuft das auch jetzt produktiv.
Lass' mich aber gerne eines besseren belehren.
Hallo Jack30lena,
vielen Dank noch einmal für die Infos.
Die API FinTs von Subsembly ist wirklich sehr gut und schnell einsetzbar.
Leider ist die API nur privat kostenlos. Wir müssen das auf einem Server einsetzen und so kommt dann eine "schöne Serverlizenz" zusammen, so dass ich mich letztendlich für die Java-API HBCI4Java entschieden habe - musste da zwar ein bißchen rumfrickeln, aber hat es letztendlich auch getan.
Also, wieder mal super Hilfe von Dir - vielen Dank!
Hallo JAck30lena,
vielen Dank für die nützlichen Infos.
So eine "klassische" SOAP-Schnittstelle mit WSDL-Datei gibt es da auch?
Hallo "Kollegen",
hat jemand von euch Erfahrung mit Schnittstellen zu Bank(konten)?
Mein Ziel ist es nicht, Transaktionen durchzuführen, sondern ich möchte lediglich auf einem Konto Zahlungseingänge automatisch verarbeiten.
Wie macht man das allgemein? Hat hier jemand Erfahrung.
Kann mir jetzt nicht vorstellen, dass bei jedem Webshop das täglich manuell gemacht wird.
Also, ich suche keine fremde Software, würde das gerne via SOAP-Schnittstelle machen. FinTS hat Spezifikationen aus dem Jahre 2004 (gibts da nix anderes, bzw. finde ich da z.B. nicht mal eine WSDL).
Ich danke euch schon mal für etwaige Hilfen im Voraus.
Hallo Jürgen Gutsch,
ich habe nie von Instanzen hier geschrieben (Ich wäre ja mit dem Klammerbeutel gepudert, würde ich mich darauf einlassen - auch weil .NET immer eine neue Instanz anlegt und diese eben nicht cached)
Die Frage des Threads war nicht, ob dies Sinn macht - ich glaube schon zu wissen, wann es Sinn machen (könnte, Stichwort static) und wann nicht.
Die Antwort ist wohl, dass es eben bei WSPs nicht möglich ist und bei WAPs schon.
Gruß
... Du kannst in keinen der beiden Projektarten auf Codebehind-Code anderer Setien zugreifen.
Hallo,
der letzte Satz von Dir ist meine Threadfrage.
Warum soll ich das nicht bei WAP können - klar kann ich das. Die Frage ist ob ich das auch mit WSP kann.
Je umfangreicher die Loginseite ist (JavaScript, AJAX, HTTPS, Cookie ect.), desto schwieriger ist es eine erfolgreiche Anmeldung via HttpWebRequest hinzubekommen.
Ohne die konkrete Seite können wir dir hier nicht weiterhelfen.
Möglich ist es aber definitiv immer, alles applikativ hinzubekommen, was auch mit dem Browser geht)
Notfalls mittels der IEXPLORE-Schnittstelle.
Hallo "Kollegen",
ist es möglich in einem Web Site Projekt (WSP, nicht WAP) auf ein Code-Behind-Objekt (also ASPX-Seite) zuzugreifen oder geht das (Zugriff auf Klassenobjekte) bei WSP immer nur via dem Ordner App_Code?
Danke schon einmal für etwaige Antworten im Voraus.
Hallo MarsStein,
danke für Deine Hilfe. Ich werde es dann einfach so machen, dass es angetriggert wird, wenn die erste Anforderung an die Anwendung gesendet wird. (global.asax)
Ich dachte, dass es für mein spezielles Problem genau die richtige Lösung gäbe, deshalb die Frage im Forum hier vorab.
Vielen Dank für die Infos und die Hilfe
Gruß
Diese Vorgehensweise benutze ich auch oft, geht hier aber nicht, weil ich für einen bestimmten Zeitraum, z.B. immer die letzten 60 Tag Daten vorrätig haben muss.
Bei einer Abfrage dann, so habe ich vor, hole ich mir nur die relevanten Daten, je nach der Datumauswahl, aus dem gecachten Objekt (en)
Bitte keine Fragen, warum das so umgesetzt ist, das will ich nicht kommentieren, das war nicht meine Baustelle. Für eine komplette Änderung bekomme ich kein Budget.
Hallo MarsStein,
ich möchte einfach Daten Cachen. Der initiale Aufruf kann zwei Minuten dauern.
Ich möchte beim Start der Anwendung und bei jedem Tageswechsel die Basisdaten (bei ca. über 90 Prozent aller Anfragen ausreichend) cachen.
Klar kann ich das auch initial machen, wenn der erste eine Applikations-URL anfordert - wäre aber nicht toll, wenn der dann auch genau diese Daten braucht, denn dann hätte ich ja nix gewonnen.
Hallo "Kollegen",
mittels welcher Technologie kann in einer ASP.NET-Anwendung sichergestellt werden, dass immer beim Initialisieren (z.B. Neustart des Webservers oder Ändern der Web.config) gewisser Code ausgeführt wird.
Ich dachte, dass das in der global.asax geht, Event Application_Start oder Application_Init, was aber nicht der Fall ist. Diese beiden Events werden immer nur dann gefeuert, wenn eine Anwendungs-URL erstmalig angefordert wird. HttpHandler verhalten sich identisch (denke ich jetzt einfach mal ohne es zu wissen, da es ja Erweiterungen sind).
Kann mir da jemand helfen? Ist das eine Einstellung im IIS?
Hallo "Kollegen",
ich brauche in der Firma einen Webshop und soll mich da mal einlesen.
Hat hier jemand schon Erfahrungen auf dem Gebiet. Was ist sinnvoll (ich bin ja eigentlich für Open Source), aber erst mal soll was von der Stange genommen werden.
Kann hier jemand was empfehlen. Schön wäre, wenn Seiten manuell (auch die Kaufprozesse) angepasst werden könnten (z.B. Produkt-Detailseiten, Pflichtfelder ect. hinzufügen).
Kennt jemand gute Open Source Webshops (PHP, Java und / oder .NET)?
Danke schon einmal im Voraus für etwaige Antworten.
Wenn man davon ausgeht, dass sich die Aufrufe (ggf. über einen längeren Zeitraum oder gar über die ganze Anwendungszeit hinweg) stauen, dann ist von der Methode abzuraten.
Kommt es aber nur vorübergehend zu solchen Warteschlangen, hier Anfragen minimal im Sekunden-, und nicht im Millisekundenbereich, dann kann man MethodImplOptions.Synchronized imo ohne Bedenken einsetzen.
Es gibt auch das folgende Methoden-Attribut:
[MethodImpl(MethodImplOptions.Synchronized)]
Damit ist sichergestellt, dass die Methode immer nur einmal ausgeführt wird - ohne Ausnahmen.
Diese Vorgehensweise ist aber nicht immer, Performancegründe, zu empfehlen.
Also ich benutze bei kleinen Projekten nur noch XML.
Bei einem aktuellen Projekt stellte sich die Frage auch, da ich das Programm auch weiterreichen möchte und ich benutze auch hier XML, obwohl die Größe, Maximalfall, 30 MB! erreichen kann.
Ich konnte aber keine signifikanten Performance-Probleme feststellen - bei 30 MB sind schon eine Menge Daten enthalten.
Ich hätte das erst nicht für möglich gehalten, ist aber so. Da keine Transaktions nötig sind und es sich um eine Single-User-Anwendung handelt, bekomme ich das auch ohne Datenbank mit LINQ ganz gut hinne.
... und dann braucht beim Fat-Client nicht extra eine Datenbank installiert, bzw. hochgezogen werrden.
Bei einer Webanwendung würde ich aber trotzdem immer eine Datenbank nehmen, da die ja nur einmal vorhanden ist - also nix mit öfter aufsetzen, bzw. installieren.
Transaktions + Multiuser-Zugriffe haste frei Haus ... und wenn Du mit LINQ weitermachen willst, bzw. dich einarbeiten, dann kannst Du das auch benutzen, Stichwort LINQ to SQL / LINQ to Entities
Ups .. habe gerade gesehen, das ja der Nils ... Hallo, altes Haus .. Gruß rüber nach Bamberg!
Quick-and-dirty:
String id = XElement.Parse(File.ReadAllText(FULL_QUALIFIED_XML_PATH)).
Descendants(XNamespace.Get("DWF-eModel:1.0") + "Properties").First().Attribute("id").Value;
@MarsStein,
das ja nur ein Beispiel - natürlich wäre eine solche Methode public (oder ggf. protected) und auch das Errorhandling sollte dann implementiert sein.
Ich habe das Codesnippet nur quick & dirty reingestellt - hab ja keine Ahnung, warum der Threadersteller diese Funktionalität benötigt.