Click here to Skip to main content
15,885,170 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
Hi, Please I need some advise on the best technology or combinations to use in programming a web based testing and exam site.
- Should i just use ASP.NET web forms entirely on will Silverlight be better or will I be needing some other technologies to build a more robust web app.
- How do I take care of time lapses in case of poor internet reception because questions will be time based and I want to avoid a situation where the time for a question starts counting without the question being displayed or received from the server yet.
- Is there any architecture or class diagramming I could use as a reference to start designing mine before I start coding.
Please advice me on these things (and other issues that may arise later) which may be of great importance. Thanks in anticipation.
Posted

Answering in the order of given questions:
  • This question makes no sense at all. It depends on your goals, feature set you have to implement, and many other factors, such as the resource you have and even your own preferences.
  • There is no such problem as stated. Let's say, the client side sends HTTP request to get next question, and receive the question after a huge time lag. It makes no difference, because you don't have to start count time withing this time interval. Instead, inquire local time when the response with question is arrived and then send back another HTTP request with the confirmation that the question is received, with the time point. Next HTTP request will be sent with the answer and another time point. Between these two time points, there is no internet transmissions, and both points are taken on the same side, client side. Of course, such timing could be spoofed, but everything is fair. I would not even consider the possibility of cheating and consider cheat-proof schema as a requirement; in my opinion, it makes no sense at all.

    In general, I would like to warn you: if this is done for educational purposes, any timing would be wrong. Timing some examinations can only damage educational process, it only leads to "educating" people into fast-thinking idiots. We already have too many people of that sort. Education is not a sport. I would say the same thing about all those multiple-choice questions. They already damaged education in the whole world. But I would understand if you do it for entertainment purposes or some kind of specialized training.
  • Last question is unclear. How "architecture" and "class diagramming" can be related? Anyway, if you clarify this part, I'll try to answer.

    If you mean just class diagram as the way of explaining some architecture to you, I would not say it can be important. As to the architecture in general, the question is two broad to discuss seriously. "Architecture" is never something predefined. It is not taken from some textbook, reference book or some golden architecture repository. This is a process and a field of activity, not the unit of knowledge. It can be learned, practiced, perfected and so on. The architecture of a project is developed for the project starting its inception phase.

    From the other hand, there are architectural patterns which can be useful to study. My usual advice is: do it only after you put forward your own architectural artifact, that will help you to better understand the approaches. In particular, I would suggest you learn and analyze applicability of the following architectural patterns (http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)[^]):
    MVVM — Model View View Model,
    http://en.wikipedia.org/wiki/Model_View_ViewModel[^],
    MVC — Model-View-Controller,
    http://en.wikipedia.org/wiki/Model-view-controller[^]),
    MVA — Model-View-Adapter,
    http://en.wikipedia.org/wiki/Model–view–adapter[^],
    MVP — Model-View-Presenter,
    http://en.wikipedia.org/wiki/Model-view-presenter[^].

    Pay attention for the motivation of those architectures. If you understand it, you would be able to create better design ideas.

    But first of all, remember that architecture is not reduced to the patters, and those UI-related patterns don't reflect all the scope of development of architecture. It's even more important to understand that following the patterns is not the goal of development. Patterns are shared by people to facilitate project development, not the other way around.


—SA
 
Share this answer
 
Yes, it's a cliche to say: "start at the beginning and complete each step until it is finished."

But, that's also a profound truth; but, first, you need some kind of a plan ... to locate where the beginning is. How do you get a plan:

Start by doing basic research. Search CodeProject and the web for on-line testing/exam software, or software, like slide-show, or wizards, that present a sequence of something.

At the same time, work on outlining a set of features your software must have; make notes as you study what you find on the web, or by looking at how other programs work. Sketch ideas for the UI.

You will need to think about, and plan for, the use-cases of your software: think about things like "scale:" how many users at one time (a few, a hundred, several thousand). You will need to plan for how your on-line application does, or does not, persist data: that leads to consideration of security (users, accounts, roles, groups, passwords, etc.), and what database, what type of database, you need to use.

You will need to choose software libraries to use to give your web-site functionality/facilities, and to what extent you will locate code and resources server-side vs. client-side.

To avoid getting overwhelmed in information and possibilities, I suggest you start early to create a simple web-site prototype to simulate presenting exams, and responding interactively to a "mock" user.

The journey can be fun if ... you take it carefully, and slowly.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900