Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von wydy
Thema: Wie speichert man eine Gruppe von Radiobuttons in eine Variable Best Practice
Am im Forum: Rund um die Programmierung

Zitat von Coffeebean
Von der Architektur her ist _ein_ Shared-Projekt mit _allen_ Enums auch nicht das wahre. Leg es so nah wie möglich an den Ort, wo es gebraucht wird. Aber wenn ein Projekt das Enum nicht braucht, sollte es auch nicht davon wissen.

Danke genau das war auch mein Gedanke. Hier noch ein vereinfachtes Beispiel wie ich das ganze implementieren würde(Die Connection Klasse wäre in der Endlösung nicht mehr statisch und das Interface würde ich in einem weiteren Schritt noch in ein Share auslagern.). Akzeptable Lösung?


namespace ConsoleApplicationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Connection.BusinessClass.MyMethod(ConsoleApplication2.Status.Status1);
        }
    }
}

namespace ConsoleApplicationTest
{
    public class Connection
    {
        private static IMyBusinessClass businessClass;

        public static IMyBusinessClass BusinessClass
        {
            get
            {
                if(businessClass == null)
                    businessClass = new MyBusinessClass();
                return businessClass;
            }
        }
    }
}

namespace ConsoleApplication2
{
    public interface IMyBusinessClass
    {
        int MyMethod(ConsoleApplication2.Status status);
    }

    public enum Status
    {
        Status1,
        Status2,
        Status3
    }
}

namespace ConsoleApplication2
{
    public class MyBusinessClass : IMyBusinessClass
    {
        public int MyMethod(ConsoleApplication2.Status status)
        {
            return (int)status;
        }
    }
}

Ich hätte das enum gerne noch innerhalb des Interface das ist aber technisch ja nicht möglich.

Thema: Wie speichert man eine Gruppe von Radiobuttons in eine Variable Best Practice
Am im Forum: Rund um die Programmierung

Ich habe jetzt glaube ich eine halbwegs brauchbare Variante gefunden um mein Problem anzugehen.

Ich definiere mein enum innerhalb der Businessklasse. Jetzt je nach Architektur ist das ganze recht simpel.

Greift das GUI direkt über ein eigenes Object auf die Businessklasse zu kann ich einfach:
Businessklasse.Enum verwenden.
Geht das ganze über ein Interface wird es etwas komplizierter, ich würde dort aber mein enum beim Interface anlegen. Innerhalb der Inferfaceklasse funktionier es leider nicht ganz.

Selbst wenn ich die Logik in mehreren Businessklassen verwende kann ich so auf das Enum zugreifen.

So habe ich zwar ein globales enum, es ist aber nicht in einem Share definiert und das Projekt ist weiterhin übersichtlich. Wie gesagt, das enum wird ja nur auf 2 Layern verwendet und nicht global, also möchte ich es nicht unbedingt in eine globale enumklasse ablegen.

Trotzdem danke für die Hilfe :)

Thema: Wie speichert man eine Gruppe von Radiobuttons in eine Variable Best Practice
Am im Forum: Rund um die Programmierung

Zitat von vbprogger
IMHO ist enum der geeigneteste Kandidat für solche Werte/Konstanste, da man sehr schön durch den Namen beschreiben kann, was/wofür der Wert ist. In WinAPI siehst du auch eine Menge davon und jeder kommt damit zurecht.

Vor einem Jahr hätte ich dir noch ohne zu zögern zugestimmt. Dann hatte ich eine Zeit lang aber ein grösseres Projekt zum anpassen wo genau das Thema so behandelt wurde. Dort gab es ein Share Projekt mit 2-3 Enum Klassen und total bestimmt über 200 Enums definiert. Es wusste keiner mehr welches enum wo eingesetzt wird. Klar kann man die Usage finden, trotzdem ist es alles andere als übersichtlich. Auch wenn du im Fakturamodul 20 Enums hast, irgendwann gehen dir die aussagekräftigen Namen aus. Seither bin ich etwas zurückhaltend bei einem enum.

Es geht mir hier nicht um explizite Daten, welche auch in der Datenbank gespeichert werden. Also bspw. den Zivilstand einer Person oder den Status einer Rechnung/Lieferung. Sondern um eine einfache Gruppe von Radiobuttons, welche nur in einem Formular eingesetzt werden und im Businesslayer sagen, wie ein Prozess verarbeitet werden soll. Der enum wird also nie mehr irgendwo anders verwendet werden.

Thema: Wie speichert man eine Gruppe von Radiobuttons in eine Variable Best Practice
Am im Forum: Rund um die Programmierung

Moin,

die Frage wird sich recht banal anhören, führte jedoch bereits zu einer grösseren Diskussion bei ein paar Kollegen. Deswegen wollte ich hier mal kurz nach eurem Input nachfragen.

Ich habe ein einfaches Form mit einer Gruppe von drei Radiobuttons. Der User kann einen der Buttons auswählen und mittels "senden" das Formular abschicken. Also einfach eins zwei oder drei :)

Die Frage ist jetzt, wie speichere ich die Variable sauber ab, was ist hier das Best Practice. Die Idee ist, dass ich die Benutzereingabe an das Backend weiterleite und dort verarbeite. Ich möchte also meine Usereingabe in einer einfachen Variable speichern und ans Backend weiterleiten. Theoretisch rech simpel und in ein paar Minuten eigentlich ausprogrammiert.

Jetzt meine Frage, mit was für einem Variablentyp würdet ihr arbeiten?
int -> war auch meine erste Idee, aber der nächste Programmierer wird sich dann Fragen was ist 1, 2 und was 3? Ich kann höchstens mit Kommentaren das ganze leserlich machen, aber auch das ist nicht sehr elegant.
string -> zwar leserlich, jedoch müsste ich das ganze im Backend parsen. Jeder Tippfehler führt zu einem Problem und technisch gesehen ist es langsamer. In der heutigen Zeit zwar vernachlässigbar, aber da das Backend evtl. auf einem anderen Server und läuft mittels SOAP/Rest läuft doch nicht die Lösung.
enum -> Wollte ich eigentlich verwenden. Aber ich hätte dann ja für jeden Radiobutton ein globales enum und irgendwann ein Share Projekt mit mehreren Hundert enums und niemand weiss mehr genau, welches enum jetzt für was ist.
Alternativ könnte ich auf beiden Seiten private enums verwenden. Aber dann müsste ich das ganze wieder parsen und in jeder Klasse müsste ich das enum neu deklarieren.
bool -> Ich habe eine Gruppe von Radioboxen als eine Information mit drei Zuständen, oop technisch also nicht ganz sauber mehr. Auch würde ich drei Variablen über die Schnittstelle senden und Methodenaufrufe sollten eigentlich nicht zu viele Parameter haben.

Wie gesagt, eigentlich ein banales Problem und trotzdem gab es eine riesen Diskussion darüber und bisher noch nicht DIE Lösung. Wie würdet ihr das ganze angehen? Ich werde wahrscheinlich einen Int verwenden und mittels Kommentar die Stati angeben.

Thema: REST Service jeder Client arbeitet mit einer Session
Am im Forum: Netzwerktechnologien

Zitat von Grumbler85
ähm.. es reicht die Zeit nicht?
Klingt kompliziert SSL auf dem Server anzuschalten und im Client statt http https hinzuschreiben ;)

Hm die Studienkollegen meinten, man müsse ein eigenes Zertifikat generieren, dass müsse man dann auf dem Server installieren und sie hätten damit nur Probleme gehabt...
Da haben wirs einfach gelassen.
Unser Server besteht aus einer simplen "WCF Service Application". Kann man das dort einfach einstellen? Wenn ja wie? :D

Thema: REST Service jeder Client arbeitet mit einer Session
Am im Forum: Netzwerktechnologien

Jep darin stimm ich mit dir überein.
Das ganze ist auch nur eine Schularbeit und die synchrone Verschlüsselung ist nur dafür da um mehr Punkte zu kriegen :D. Wir werden in der Abschlussdokumentation auch klar erwähnen, dass es sich nur um einen Prototypen handelt und in einem späteren Schritt eine SSL Verschlüsslung angebracht wäre. Es reicht einfach schlichtweg die Zeit nicht das ganze SSL zu verschlüsseln.

Thema: REST Service jeder Client arbeitet mit einer Session
Am im Forum: Netzwerktechnologien

Ich habe das ganze jetzt wohl etwas unkonventionell gelöst.

Der Benutzer sendet ein POST an den Server auf das Verzeichnis /token. Dabei übermittelt der Benutzer seinen Benutzernamen und das Passwort, dieses ist dabei synchron verschlüsselt.

Der Server versucht dann mit den Benutzerdaten sich auf der Datenbank einzuloggen. Funktioniert der Login nicht, sendet der Server einen leeren "Token" an den Client zurück. Funktioniert der Login werden die Datenbankverbindung und die Logindaten in einem Singleton gespeichert. Danach wird dem Benutzer eine Lifetime und ein zufällig generiertes Token zugewiesen. Dieses Token wird dann an den Client zurückgesendet.

Die restlichen Anfragen vom Client gehen danach immer über dieses Token. Bei der Anfrage wird anfänglich immer kontrolliert ob die Lifetime abgelaufen ist und gegebenenfalls ein Fehler an den Client gesendet.

Das hinzufügen und löschen von Benutzer in Singleton ist in einem lock(user), damit nicht mehrere Anfragen die Benutzerdaten gegenseitig überschreiben.

Das ganze funktioniert ohne Probleme, nur ist dabei das Passwort nur synchron verschlüsselt und könnte abgehört/entschlüsselt werden.

Edit: Dabei habe ich aber noch eine Frage. Das Token, welches ich zurücksende hat folgendes Aussehen:


    [DataContract]
    public class TokenRest
    {
        [DataMember]
        public string token { get; set; }

        public TokenRest()
        {
            this.token = "";
        }
    }
Für eine einfache Variable eine eigene Klasse zu verwenden ist doch etwas übertrieben. Gibt es eine andere Variante die Variable zurückzusenden?

Thema: REST Service jeder Client arbeitet mit einer Session
Am im Forum: Netzwerktechnologien

Moin Leute,

ich bin ehrlich gesagt ein ziemlicher Anfänger bei RESTful und habe es erst gerade hinbekommen meinen Service funktionsfähig zu kriegen.
Jetzt möchte ich mehrere Clients haben, welche auf eine Datenbank vom Service zugreifen. Ebenfalls hat jeder Benutzer, welcher den Service nutzt, einen eigenen Login auf der DB und soll ebenfalls immer mit diesem auf die Datenbank zugreifen. Dafür wollte ich eine erste Anfrage generieren mit dem Benutzernamen etc. und dem Benutzer danach eine "Session" zuweisen, welche bei den restlichen Anfragen immer dieselbe ist. Nach Möglichkeit wollte ich der Session ebenfalls eine Lifetime geben, damit der Benutzer nach einer gewissen Zeit eine neue Session anfordern muss.
Wie kann ich das ganze realisieren? Ein Kollege meinte das ganze könne man irgendwie durch session tokens realisieren, welche bei einer Anfrage mitgeliefert werden.

Edit: Google hat mir etwas weitergeholfen und den Beitrag ausgespickt: http://stackoverflow.com/questions/4608225/how-do-i-implement-login-in-a-restful-web-service

Ehrlich gesagt möchte ich nicht bei jeder Anfrage die Benutzerdaten liefern, darum war auch die Idee einer "Session" für jede weitere Anfrage. Aber jetzt bleibt halt die Frage, wie merkt sich der Server das "accesstokens" für die nächsten Anfragen? Selbst ein Singleton wird bei der nächsten Anfrage verworfen.