gewünschten WorkflowGeeignete statische Datastructure, die für den gleichzeitigen Zugriff von verschiedenen Web-Clients
Zuerst möchte ich holen einen bestimmten Satz von Fragen und Antworten aus einer riesigen sicher in einer ASP.net Anwendung werden muss fädeln Reihe von Fragen und in SQL Server gespeichert Antworten (Tabellen tblQuestions und tblAnswers)
Fetched Fragen und die entsprechenden Antworten werden in einer statischen Sammlung gespeichert bekommen (entweder
List<Quiz>
oderhashmap<key,value>
wo Schlüssel Quiz Id und Wert sein wird, werden Sammlungen von Qns sein und AnsFür jede HTTP-Anfrage muss ich eine bestimmte Frage und ihre Antworten anhand einer eindeutigen QuestionId beantworten.
Da viele Studenten für dasselbe Quiz eine Prüfung ablegen müssen, muss ich nicht wiederholt den gleichen Quizsatz aus der DB holen, aber wenn ein anderer Student eines anderen Streams sein Quiz beginnt, muss ich das Quiz holen er von DB und speichern sie auf dem gleiche statische Sammlung des Servers
5. Eine Reihe von Quiz wird aus der statischen Sammlung entfernt werden, sobald das Quiz durch den Administrator über oder ausgeschaltet ist.
Also im Grunde möchte ich wissen, was die geeignete Datenbankstruktur sein wird. Ich möchte mit Singletonmuster bleiben, und auch wollen, um es sicher machen Faden entweder durch Schleusen oder andere Mechanismus
Beispielmodell von Quiz
class Quiz
{
int QuizId; //QuizId
string QuizTitle; // Example - C# Quiz
List<QuestionAns> qnsAns; // List of Questiona and answers related to this Quiz
}
class QuestionAns
{
int QuestionId; //unique QuestionId
string Question; // Question Text
List<Answers> answers; //answers to this question (can be more than one)
}
class Answer
{
int AnswerId; //unique AnswerId
string Answer;//Answer Text
bool isRight;//Is this Answer right
}
Jetzt will ich eigentlich einen Thread sichere Liste der Quiz erstellen wie List<Quiz>
Wie man das macht oder gibt es einen anderen sehr geeigneten Mechanismus? Ich habe keine sehr guten Kenntnisse über web-spezifische Datenstrukturen.
Eine mögliche Alternative zu einer solchen Strukturdaten folgende
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance { get { return lazy.Value; } }
private Singleton()
{
}
}
Ja, ich dachte auch über diese ConcurrentBag-Sammlung nach, aber eigentlich bin ich mir über die Effizienz dieser Sammlung nicht im Klaren und möchte auch wissen, ob ich meinen Workflow sehr typisch mache.Ich meine zu sagen ist Thread-Sicherheit wirklich ein Problem in dieser Art von Problem – Abhi
ja Tudor Verriegelung auf diese Weise kann eine der guten Option sein, denke ich – Abhi
@Abhishek Gupta: Wie Sie in Ihrer Exposition sagte, gibt es eine Möglichkeit, dass mehrere Quiz-Objekte müssen der Liste gleichzeitig hinzugefügt werden. In diesem Fall müssen Sie den Zugriff synchronisieren. – Tudor