Using Microsoft Visual C#, write a blog client that adheres to all
specifications of the standard Windows application from Project 1.
This project is divided into two parts:
- PART 1
Turn in a prototype (I don't care how it looks) that:
- displays the entire Blogs table
from the Blinky database (follow the
database connect
tutorial for the Blinky database and the Blogs table)
- calls the Blinky web service to verify
that user "Gayle" (with password="gayle") exists
- displays your name on the window somewhere
- PART 2 - Turn in the full
blog client.
GRADING CRITERION for PART 2:
85% correct execution, including performance
15% coding practices,
documentation, etc.
My prototype client (download here) is shown
below. Your client must implement at least the same functionality as my client, and
your client needs to load faster than mine.

|
DISCLAIMER: Prototypes are not guaranteed to be stable or well
designed, and your client may look different. |
|
|
Michael Richmans' client (download here)
performs much better than mine. It is simple to use and looks like this:

|
DISCLAIMER: Prototypes are not guaranteed to be stable or well
designed, and your client may look different. |
You may also get ideas from Wesley Rosenblum's client
(and you could use his images).
RULES:
- Required features
are 1) user login, 2) registering a new
user, 3) displaying blogs and their replies, 4) posting a new blog, and 5) replying
to an existing blog.
- The client
should have features similar to
the three sample clients provided above.
|
DISCLAIMER: Prototypes are not guaranteed to be stable or well
designed, and your client may look different. Part of your
job is to design a good, intuitive user interface for your client.
|
- Please only display a user if that user has at least one blog. The Richman and Rosenblum
clients implement this feature.
- The client will send SQL queries directly to the database when reading
blogs, but to write to the database or ask about username/passwords, the client
must use the Blinky web service.
- The client should remember that last user's name who logged on,
but it should not store user passwords.
- Passwords must not be
displayed in plain text. (HINT: Look up the PasswordChar
property of the TextBox control.)
- The client should allow reading of blogs without
making the user log in, but must require a valid login for posting or
replying.
-
Your name must appear in the client's
About form, and please display the executable name and the short version
number in all Window titles.
-
The blog client should
refresh any view it is keeping that would be changed by a new post
or new reply submitted from this client.
It should also offer an explicit refresh option for any view being displayed.
-
When a user logs in, both the DisplayName and the UserID must be visible
somewhere on the form (to resolve possible ambiguities in DisplayNames).
If the DisplayName is blank or empty, display UserID where DisplayName
would normally appear.
-
There are some pitfalls and performance issues
you should handle. Michael Richman's client shows particularly
good performance.
-
My blog prototype incorrectly displays the UserID field rather than the
DisplayName field. Only if DisplayName is null should you display
the UserId field. Unfortunately, the database does not enforce
non-null DisplayName so you should check in every case. Your client
should not allow a user to enter create a UserId without also creating a
DisplayName, but again unfortunately, some clients have done this in the
past.
- You should show DisplayName instead of UserID if possible; if
no DisplayName exists (i.e., it's null), then you must use the UserID for a DisplayName.
READING FROM THE DATABASE:
- The
Database
Spec describes the Blinky database structure.
- The SQL tutorial shows how to
query the Blinky database. The Query Tester
program lets you verify that
your SQL query syntax will work.
- The
database connection instructions
show how to connect your project to the Blinky database. The tutorial is
for the sample NorthWind database, but the same login and password work for
reading from the Blinky database (which is also on the same server).
USING THE WEB SERVICE:
-
View the Blinky web
service specification and read its
code.
-
See the tutorial
Using the Blinky Web Service.
SAMPLE CODE AND OTHER SUGGESTIONS:
- The sample
BlogBrowser project uses the web-browser control
(AxWebBrowser, instead of RichTextBox) to display blogs and illustrates
embedding files as resources, SQL, and use of the splitter control.
- Check out the code in the BlinkySampleCode project, which describes how to use a TreeView
control, how to access the Blinky database, and how to use the web service.
- For help with the TreeView control, I recommend
Petzold (in Towne 217 and at
Weiss Tech House);
see
pp 1060-1070 on TreeView. My prototype
client could have used a Splitter control to good advantage.
GOALS:
- To practice programming a Windows application which reads from a database.
- To practice using a web service.
- To practice designing a more complex, but (hopefully friendly, graphical user interface.
GETTING HELP:
If you need help, try (in preferred order):
- posting to the Discussion Group in Blackboard
- call or find me or a TA
- send email (last resort)
TURN-IN:
The turn-in procedure for programming assignments is as follows:
- Create a folder with your emailID as its name. The folder
I would create would be pgpalmer; yours will be different. Place
your Visual Studio solution and project, and all related files, into
this folder.
- Test your copied program thoroughly to make sure it works.
- When fully tested, zip up the entire folder, including all files
underneath the folder.
NOTE: Please do not use the "save full path info" option.
Test unarchiving the zip file to make sure it produces all your files and
directories, but in whatever folder the person unzipping chooses (such as, on
the Desktop).
If correct, log into Blackboard and turn in the
zip file (via file upload in your web browser). Be sure to select
"Send File" (and not "Add File") in Blackboard's Drop Box.