Ein ganzer Embedded PC ist vielleicht etwas überpowert um nur ein Aquarium zu überwachen, da lässt sich problemlos auch mit jedem handelsüblichen Mikrocontroller lösen. Im Hobby Bereich sind die Atmel/Pics sehr beliebt, die Programmierung ist dann natürlich in C.
Nur der richtigkeit halber. Es kann auch in Assembler programmiert werden.
Der Browser meldet das schließen einer Webseite nicht ohne weiteres an den Server.
Vielleicht kannst du die Verbindung schließen, nachdem du sie benutzt hast?
Nicht Vieleicht, sondern genau so muss das gemacht werden.
ASP.NET (HTTP-Protokoll), ist ein Statusloses Protokoll. Das bedeutet, das ein Browser sich nie am Server abmeldet. Der Browser schickt nur eine Anfrage an den Server "Möchte Seite X sehen" und der Server schickt dann die Seite zurück.
Baue die Verbindung zur Datenbank so spät wie benötigt auf, und beende die Verbindung so schnell als möglich. Packe am besten den Code zur Abfrage in ein Using. Dann kümmert sich die CLR um den nötigen Close Befehl.
Ja das weiß ich. Das steht so in der Art auch im Buch mit drinne.
Nur versuche mal einen Anwender zu sagen, der gerade mal so versteht wie ein PC funktioniert, das er dir einen Fehler aus dem Ereignisprotokoll heraus suchen soll.
Da ist es einfacher dem den Weg zu einer Datei zu sagen, die er mit rechtsklick auf die Maus in das Mailprogramm und in eine Mail bekommt :)
warum gibts du dem TraceListener einen Stream und nicht den Dateinamen?
Hmm... ich meine, weil im Buch vom Kühnel das so drinne steht :) Aber gut, ich werde das mal so testen ;)
Zitat
Ab Vista kann das Trace in Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "MeineFirma/MeinService/Logs" geschrieben werden (natürlich mit Path.Combine zusammengebaut).
Das dachte ich mir schon fast, das unter CommonApplicationData der beste Ort zu sein scheint. Wollte da nur mal noch die Meinung im Forum hören, wie das andere handhaben.
Zitat
Aus Windows-Sicht ist das Verzeichnis schon korrekt, nur es ist halt nicht jenes was du dir erwartest ;-)
Da ich noch wenig mit den Services gemacht habe, war ich dann anfangs schon verwundert, warum der mir die Log nicht so schreibt wie ich das erwartet habe :)
Aber Du hast schon recht. Aus Sicht von Windows ist das alles korrekt, nur ist man im ersten moment dann erstmal geschockt, warum der Service auf einmal anders reagiert wie man den in der Console noch getestet hat :)
Also dann packe ich meine Log mal in CommonApplicationData.
ich habe mir einen Windows Dienst geschrieben, der mir im Hintergrund viel Arbeit erledigen muss. Da dabei aber auch gerne mal Fehler entstehen können, muss das ja irgendwie in eine Log Datei geschrieben sein.
Dazu habe ich mir einen TraceListener geschrieben, der mir dann eine Log Datei schreiben soll. Die Log Datei soll im selben Verzeichnis sein, wie die Exe des Dienstes. So kann man die Datei am schnellsten lokalieren und drinne nachsehen, was denn da schief geht.
Nun zu meiner Frage. Wenn ich dem Tracelistener einen FileStream zu der Datei mitgebe, die im selben Verzeichnis wie die Exe geschrieben werden soll, funktioniert das solange gut, wie ich die Exe des Dienstes von Hand starte ( klar die Exe terminiert, da der Service nicht installiert ist, aber die Log wird erstellt ).
Wenn ich den Dienst aber dann registriere, wird mir die Log in einem total falschen Verzeichnis geschrieben: C:\Windows\sysWOW64\Log.log
Da ist die Datei natürlich kaum noch auffindbar.
Nun zu meiner Frage. Wo ist es am besten die Log für einen Windows Dienst zu schreiben. Okay, man könnte das Ereignisprotokoll dazu verwenden. Aber ich möchte auch die möglichkeit haben, das ich einem Anwender dann sagen kann, gehe mit dem Explorer in Verzeichnis X und schicke mir die Logdatei per Mail zu.
Dann wünsche ich "Abt" viel Erfolg mit seinem neuen Posten hier in der Community.
Er wird Peter Bucher würdevoll vertreten können. Schade, das Peter nicht mehr die Zeit aufbringen kann, sich hier aktiver zu beteiligen. Seine Ausführungen waren immer recht aufschlussreich.
Besser wäre
/Hersteller - Zeigt eine Liste aller Hersteller (Index Action im HerstellerController)
/Hersteller/{Name}.html - Zeigt die Details eines Herstellers (Details Action mit name Parameter im HerstellerController)
/Hersteller/{Name}/Produkte.html = Alle Produkte
/Hersteller/{Name}/{ProduktName}
/Kategorien - Zeigt eine Liste aller Kategorien
/Kategorie/{Name}.html - Zeigt die passenden Inhalte
/Kategorie/{Name}/Seite{Nummer}.html - Mit der Nummer kannst Du nun ein Paging aufbauen
Diese "Brötkrümel"-Variante ist absolut einfach in den Routes nachzubilden und fehlerfrei zu behandeln und entspricht dem SEO Gedanken, den Du wohl suchst.
Wie stehst Du mit der Aussage zu den "Brotkrümel" und den davor geschalteten festen begriffen Hersteller/Kategorie zu der aussage, dass je tiefer die Ordnerstrucktur einer Seite ist, sich der PageRank dadurch verringert?
Okay, der PageRank ist nicht das Maß an dem man sich messen soll, aber ich habe schon bemerkt, das Artikel welche nicht so tief verschachtelt werden, auch besser gefunden werden.
Ansonsten scheint mir das genau die Default-Route das schon so macht.
Ich sehe schon. ASP.NET MVC 3 hat sicher nicht den anspruch, das es einfacher ist als WebForms :) Es ist wohl genauso anspruchsvoll, nur auf eine anderen Art und an manchen stellen eben einfacher. Da muss dann wohl oder übel mal noch ein Buch ins Regal kommen :)
Den "Breadcrumbs-Gedanken von Google" habe ich mir mal durchgelesen.
Ich muss mir da einfach nochmal gedanken drüber machen, wie ich das realisieren möchte. Eventuell auch mal einen Test fahren, was besser kommt.
das Routing aus der Vorlage in Visual Studio ist ja nicht besonders SEO Optimal. Es ist zwar bedeutend besser, als wenn man Url hat, die mit ?id=123 enden, aber eben noch nicht perfekt.
Nun suche ich gerade den Weg, wie ich Url in den nach folgenden beispielen hinbekommen kann:
http://www.domain.de/HerstellerName1/HerstellerProdukt1.html http://www.domain.de/Anita/Anita-Entlastungs-BH-Jana-bis-I-Cup.html
Hier soll auf den "HerstellerController" gemappt werden. Der HerstellerName wird aber erst zur Laufzeit bekannt sein (ca 15 - 20 Hersteller), was dann einen festen Controller pro Hersteller ja nicht möglich macht, und auch nicht besonders geschickt ist.
http://www.domain.de/CategorieName1/Seite1.html http://www.domain.de/Bademode/Seite1.html
Das soll dann auf den "CategorieController" gemappt werden. Das ganze analog zu den Herstellern, nur das hier mit über 100 Kategorienamen gerechnet werden kann.
http://www.domain.de/impressum.html
Soll dann auf "ContentController" gemappt werden. Wieder analog wie bei den obigen beiden, das erst zur Laufzeit bekannt ist, was da stehen muss.
Hintergrund ist, das obige Url durch die Sumas am besten gelistet werden. Auch sind Url in der form http://www.domain.de/Products/Detail/1 nicht sehr aussagekräftig für den Benutzer.
Leider finde ich da nicht die richtigen Infos, oder ich verstehe zu schlecht, was mir die Seiten da auf Englisch vermitteln wollen. Deshalb würde es mich freuen, wenn mir hier jemand einen Link geben kann, der mich da ein stück weiter bringt, ohne das ich da lange suchen muss, ob das was da steht auch dem entsprechen würde, was ich erreichen möchte.
Ihr wisst ja, mein Englisch ist bescheiden, wodurch es mir manchmal schwer fällt, auf einer Seite schnell genug zu sehen / entscheiden, ob mir das hilft oder nicht.
eigentlich muss es nichts OpenSource sein.
Wir können da schon etwas bezahlen.
OpenSource ist manchmal auch nur begrenzt Supportfähig, da aber uns Support auch wichtig ist, darf es auch was kosten ;)
Also wenn jemand noch Vorschläge hat, immer her damit.
Hallo,
bin jetzt nicht der WPF Fachmann und hab schon ein bisschen länger nichts mehr mit WPF gemacht.
Wenn ich das noch recht im Kopf habe, musst du dazu 2 VisualState machen ( MouseEnter / MouseLeave ) in denen du dann die beiden Farben angeben kannst.
ich bräuchte von Windows ein Signal, wenn der Rechner aus dem Standby oder Ruhezustand reaktiviert wird, das ich in einem Service dann abfangen und benutzen kann.
Im moment suche ich da die bekannte Stecknadel im Heuhaufen und finde nichts.
Das ist dann das totesurteil für mich, für das Win8, denn ich habe letztes Jahr einen fast komplett neuen Rechner zusammen gestellt, der mir die nächsten 5 Jahre reichen wird. Aber UEFI kennt das Board nicht.
Noch eine Frage eben nachgeschoben. Ich habe gerade ein Onlintext gelesen. Brauch das Workflowsystem tatsächlich eine Datenbank? Mein Plan war eigendlich, das ganze als reine Application laufen zu lassen und alle benötigte Daten vom Netzwerklaufwerk zu holen. Wenn doch, welche DB wird benötigt?
Nein ein Workflow braucht keine Datenbank. Eine Datenbank wird erst benötigt, wenn man eine StateMaschine bauen möchte, die dann zwischenstände in eine Datenbank persistieren können muss.
Ansonsten ist die WF4 eine reine XAML deklaration, was dann einen direkten schnellen austausch der logik einfach macht.
Zumindest habe ich das bis dato so verstanden. Und WF würde sich durchaus zu deinem problem sehr gut anbieten.
ich hab mir beide Beispiele angesehen, und denke mal den ansatz gefunden.
Ich stürze mich dann mal ins vergnügen und beginne mein Projekt
Learning by doing. Da findet man dann am schnellsten wissenslücken und probleme, die man noch hat. Ich sag meinen Lehrlingen auch immer, aus Fehler muss man lernen, das man die das nächste mal nicht mehr macht
Bei allfälligen Fragen, weiß ich ja, wo ich gute kompetente Hilfe bekomme
Für den Zugriff unbedingt Repositories nutzen - unbedingt!
Erstelle für jedes Entity ein eigenes Repository, die wiederum von einem Repository erben, das Standardfunktionen (Add, Delete, Save, Get, GetMany..) bereitstellt. Spezifische Abfragen für ein bestimmtes Entity gehören dann in das EntityRepository.
Hättest Du da eventuell ein gutes Beispiel im Internet auf lager, das Du empfehlen kannst? Da ich noch nicht so richtig Fit im EF bin, suche ich gerade noch den richtigen ansatz, wie ich das Repository generisch umsetzen kann.
Ich hab mir nun mal im EDMX Designer eine Entität erstellt ( Person ).
Wenn ich nun als Codegenerierungselement den "ADO.NET POCO Entity Generator" nutze, erstellt der mir ja saubere Klassen von meinen Entitäten.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
namespace EFEval.Library
{
public partial class Person
{
#region Primitive Properties
public virtual int ID
{
get;
set;
}
public virtual string Name
{
get;
set;
}
public virtual string Anrede
{
get;
set;
}
public virtual string Alter
{
get;
set;
}
public virtual string Beruf
{
get;
set;
}
#endregion
}
}
Da die Klasse aber "Auto-Generated" ist, überschreibt der mir ja jede Änderung, die ich darin machen würde.
Also komme ich im moment nicht ganz dahinter, was du oben mit deinem Code Beispiel meinst.
Muss ich dazu das Codegenerierungs-Template anpassen? Und darin alles raus werfen, was den Code in der Primitive Properties Region schreibt.
Den Code wie in deinem Beispiel könnte ich ja in eine eigene Datei packen ( partial ).
Hast Du das so gemeint? Oder bin ich da auf dem falschen Dampfer unterwegs.
Danke nochmal für die Infos.
Ich muss das nun alles mal evaluieren :) Ist im moment ein bisschen viel auf einmal ;) Aber das backe ich schon zu meinem Kuchen zusammen :)
danke erstmal für den Ratschlag. Ein paar Fragen hätte ich trotzdem noch dazu.
Zitat
also ich rate von der Code First Variante ab!
Habe ziemlich schlechte Erfahrung bei der Wartung von Code und Datenbank mit dieser Variante gemacht und empfehle jedem nicht Code First zu nutzen, ausser er hat wirklich viel Zeit und Nerven, die er opfern möchte!
Was genau sind da deine Erfahrungen? Muss man da umständlich dann die Datenbanken nachziehen? Denn so wie ich das verstanden habe aus dem WebCast, muss man da ja die Datenbank nicht explizit selbst designen, sondern erstellt nur das Mapping und die Objecte und kann das dann nutzen. ( Soll nun aber erstmal nebensächlich sein, ob da mein Wissen korrekt ist, denn dein ansatz möchte ich auch erstmal erforschen )
Zitat
Ich empfehle den Weg über den Designer seine Entities zu erstellen, und anschließend über den POCO Entity Generator seine Entities zu erstellen.
Anschließend erstellst Du Dir Metadata-Klassen, in denen die Data Annoatiations gelegt werden. Diese werden der Entity-Klasse mit MetadataType injeziert. Über das Implementieren von IValidateable kannst Du zusätzlich logische Validierungen durchführen ( wirft die Fehler direkt in den ModelState ).
Gehe ich da recht in der annahme, das ich dann für das MVC trotzdem noch ein Model erstellen muss, das sich rein um die Anzeige kümmert? Wenn ich das mit dem Repository richtig verstanden habe, müsste ich darin dann ja die umsetzung machen, von dem Model, was man vom Controller bekommt, in die Entität für die Datenbank und umgekehrt.
Im moment ist das noch ein bisschen wirr in meinem Kopf. Versuche da nun ein bisschen Ordnung rein zu bekommen ;)
Die meisten Beispiele die man im Internet findet, behandeln ja nur kleine teilausschnitte des ganzen, aber nie im gesamten als Projekt.
Ich werde mich nun mal ein bisschen mit deinem Vorschlag befassen.
im moment bin ich die einzelnen Frameworks am durchprobieren, das ich entscheiden kann, welchen Weg ich gehen soll.
Im ASP.NET MVC3 Modeliert man ja die Models, das man damit die Daten an die jeweiligen Views binden kann. In den Models wird die Validierungslogik mit untergebracht, was dann zu sehr kompakten Code führt.
Beim Entity Framework4 kann man mit POCO ( Model-First ) das Mapping zur Datenbank durchführen.
Nun meine Frage:
Kann ich für das Mapping der Datenbank dann die selben Models aus dem ASP.NET MVC3 verwenden, oder stört sich EF4 dann an den Annotations in den Models, welche man ja zum Validieren nutzt? Das würde dann ja einiges an Logik sparen, das man nur 1x die Models pflegen muss, und diese dann 1:1 in die Datenbank bekommt.
Sollte man da eventuell ein Repository noch dazwischen schalten?
Im prinzip hab ich die einzelnen Frameworks verstanden. Von Details bin ich im moment aber noch weit entfernt. Mir geht es darum, heraus zu finden, welchen weg ich weiter gehen muss. Also wo ich noch lesen muss.
Wenn also jemand noch ein entscheidende Tips hat, bitte immer her damit.
OpenFileDialog.SafeFileName-Eigenschaft, das ist was Du suchst.
Der Blick in die MSDN Doku sollte immer die erste Aktion sein. Meistens findet man dort schon jede Information, die man benötigt.
Ja, es gibt ein Nerddinner Reloaded, das auf MVC3 basiert und cshtml-Files mit Razor nutzt. Kann sein, dass das mittlerweile integriert ist und nicht mehr "Reloaded" heißt.
Ich bezweifel das bei dem Source den ich geladen habe das MVC3 schon drinne ist. Der Source ist von 2010 noch.
Hab nach dem Reloaded gesucht, aber es nicht gefunden. Das einzigste was ich gefunden habe, war ein Blog Beitrag von Scott Hanselmann, aber dann noch im Context mit EF4.
Naja, auch egal. Ich habe das Konzept erkannt. Und eine reine umleitung in eine Subdomain ist wäre einfacher zu realisieren, da man dann ja nur auf Request.Browser.IsMobileDevice prüfen und muss, und ein Redirect macht.
Aber gerade, das es sich versteckt, und dann eben im Smartphone nur optimiert angezeigt wird, gefällt mir. Auch entgeht man da der Gefahr besser, das man DC baut, was Sumas nicht gerne haben :)