High-Level Overview of Source Code? (COMPLETE)

Jun 1, 2010 at 3:24 AM

I started working on a new page for the wiki providing a high-level overview of the source code, but could use a few pointers to make sure I'm providing the right info. The draft article is here: http://wiki.bvcms.com/BasicSourceCodeOutline.ashx

Here are the basic questions:

  1. Is CmsCheckIn only a touch-based interface or does it also provide other interfaces for check-in?
  2. What is the purpose of CmsData?
  3. What is the purpose of CmsPresenter?
  4. Am I correct in describing CustomControls as customizations to standard ASP.NET controls?
  5. What is the purpose of ImageData, ScanUploader, TakeUploadPicture?
  6. What is the purpose of UtilityExtensions?


Jun 1, 2010 at 12:32 PM

CmsCheckin consists of four parts.

  1. A touch screen WinForm app for child check-in. It provides not only checkin but new family registration, choosing a class to visit, and editing phone numbers emails etc.
  2. A web page for doing bar code scanning checkin. This is designed for checking into a facility like a Rec Center, gym, game room etc. It is just a record of when a person walks in. It allows you to associate a card (with a bar code, library card, drivers license, student id, etc with the PeopleId)
  3. The TakeUploadPicture WinForm app which works with the previous check-in web page for taking the persons picture so that when they check in, you can see what they are supposed to look like for authentication.
  4. The backend Web Service for both of these apps (REST based)

Jun 1, 2010 at 2:01 PM
  • CmsData is the library that serves as the ORM (object relational mapper) to the database.
    • The Generated folder contains the DBML for Linq to SQL. The files are generated by the DBMLBuilder app.
    • QueryBuilder folder contains a lot of sophisticated code for building Expression trees used by Linq-to-SQL to construct advanced Queries.
  • CmsPresenter contains code for binding data to ListView and DataGrid controls. Originally BVCMS was written using the Model View Presenter pattern (MVP). Currently all new development is done with the Model View Controller pattern (MVC). And all pages will eventually be refactored to follow the MVC pattern. So CmsPresenter will eventually go away. In fact much of the code there is no longer used and could be cleaned out now. My understanding was that the Presenter part of MVP stood between the Model (data) and the View (webform). So basically it transforms the data model into one suitable to be bound to the View controls.
  • CustomControls is a library of ASP.NET controls that worked with WebForms and the Model (data model). The controls are designed to have two states, a read view and an edit view. These controls were responsible for updating the model from the view and vice versa. Again, this is not the pattern we will follow for future development and eventually the need for this library will go away. I think we may be close now to being ready to get rid of it.
  • ImageData is the ORM (dbml) for the Image database. The CMS data is kept separate from the images for ease and speed of making backups. Also the Image database backup always overwrites the previous backup whereas the CMSData backup keeps a daily backup. The ImageData is for storing pictures.
  • ScanUploader is no longer used. Perfectly good program, but no longer necessary. Originally when we first started doing online registrations, we figured we needed a way to accommodate paper forms too. The technology worked well but became too much work on the coordinators and admins. Not because of the software but because of the inherent problem of being able to read handwriting. So now we are sending everybody to the web. If they cannot use the Web, they call the office and we'll enter it for them.
  • UtilityExtensions is a library of convenience functions, including email functions.
Jun 2, 2010 at 4:04 AM


    Great explanations. I've finished update the Basic Source Code Outline wiki page with the information you provided here: http://wiki.bvcms.com/BasicSourceCodeOutline.ashx. I figured out that VWD did not import a few folders, so I actually have a few more to add...will add any questions concerning these in near future.


Jun 12, 2010 at 9:39 PM

I've again updated the wiki article mentioned above. I've cleaned up the presentation of the info. and added references to third party components utilized in the software: CookComputing.XmlRpc, ICSharpCode.SharpZipLib, itextsharp, SquishIt.Framework, RouteDebug, and DirectShowLib-2005.

Jun 12, 2010 at 9:49 PM
That's looking really good. Like the way you have linked the external libraries. These are all libraries that seem to be considered best practice. I know I do.