Friday 21 November 2008  
  3devroup Home | Tehnologies | Pending Projects | All projects | Team | History | BEST Links | Downloads
 
Reg.Engine Project
 Powerd by ZOL
 
Overview
Getting started
Arhitecture
Download
Team
Standards
Screen Shots
Todo List
Known bugs list
Search
Advanced search
 
  3devgroup home \ projects \ registration-engine
 
 

Overview

 

Registration engine is a windows component created to make availabe for all software products of a software company, the same registration framework.Integrated with any project this library can easely be used to provide support for online processing of requests and respones to a registration server. registration-engine and registration-server can not be used one without the other. This two applications are implemented as one. However anybody can build another client for registration-server since we make the protocol available.Also, anybody can build another registration server to use with registration-engine. registration-server is an web application used by softare provider (vendor) to manage all it's registered clients.registration-engine is the windows client for this web-application.To find more about registration-server and registration-engine protocol read this



 

Getting started

 

   Say you have a nice little application that you sell to 1000 clients.You premanently improve this application, add new features and modules, make available multiple versions of application.With registration client / registration server couple you can track , for each of your clients , Application version, application instances count,trace bugs and bug reports,licence status and easely manage demo lincesing.All you must to is to install registration server onto your online location, and add to each application you sell the registration-engine.


   Following a few basic steps , your clients cand register online, receive an unique client id and comunicate to registration server (you),transparently, all info you need to handle,support,help,improve the relationship between you and your client.Using info gathered from all your clients you can view (using registration-server reports module) all kind of high-level reports to see, in a real-time fashion, what clients are uing what version for what application you sell.Comunication to clients becomes automated,in both ways since registration server knows to send eamails to clients, anouncing them of updates , new versions and so on.All you must do is to keep alive registration server , and ...write code!!

   Registration component is builded in Visual Basic 6.0 and is using Miscrosof XML library , version 3.0 (msxml3.dll).So this library must be present on the system.Create reference into your project to dgRegEngine.dll.To use it properly you must also have registration server installed and running, since this library is it's client.Registration process is a transactional process.That means that a list of steps are expected to be followed.Firs of all you must specify URL of the registration server and ohter initial prerequisites :

'at module level
Public WithEvents clsInstall As New CInstall


'example of function that inits all registration object prerequisites
Private Function initRegistration() As Boolean
      'InstanceData represents local user/registered app. information
      '   - application version, application licence type and so on; in our
      '   applications that use registration client is an xml document,
      '   but you can use any kind of format.

      '   The xmlInstanceData holds information that can undo all operations
      '   done by the user.It is in fact a 'rollback' data , or backup data if
      '   you like.This info is stored on the sever, and queryed to check what
      '   went wrong.In this way you can easely help/support users to do the
      '   right thing
      Install.InstanceData = xmlInstanceData

      'NLSInit(number) inits National Language Support for GUI layer of the
      'registration engine;
      '    0 - english

      Install.NLSInit (0)

      'InstallURL is the URL of the registration server
      '    - if not provided registration can not function

      Install.InstallURL = "http://localhost/registration/"

End Function




   After initial step you must let the server know that type of licence for what application the client is registering (or updating registration):



'example of function that inits licence / client information
Private Function setLicence() As Boolean
      'Domain represents information related to client web address. We
      '    used "Domain" property in FileShare and NewsPlus projects for other
      '    purposes, now this property will be removed in future versions.
      Install.Domain = SetupInfo.GlobalInfo.DomainName
      'Same as "Domain" property,"Owner" represents deprecated functionality       '    related to client web address/ownership.You don't have to use it. We
      '    used "Owner" property in FileShare and NewsPlus projects for other
      '    purposes, now this property will be removed in future versions.
      Install.Owner = SetupInfo.OwnerInfo.Name

      'InstanceID represents the number of client and server instance.
      '    it is a locally incremented number that will be stored on server to
      '    identify how often the user connected to registration-server
      Install.InstanceID = INSTANCE_ID

      'MaxInstances represents the number of remaining instances to be
      '    installed by the client. It is localy stored.After registration-transaction
      '    this number will be decremented / restored / corected.
      '    This is also stored on registration-server database for each
      '    client and there is no way to get wrong with this.
      Install.MaxInstances = GetLicenceRemaining

      'UsedInstances it's also locally stored and represents the number of valid
      '    copies installed by the client.
      '    This is also stored on registration-server database for each
      '    client and there is no way to get wrong with this.
      Install.UsedInstances = GetLicenceUsed

      'SN it's application serial number that client wroted into registation interface.
      '    if client uses a demo licence an DEMO Serial Number is generated.
      '    This is stored localy by the applicatin and remote
      '    by registration server.
      Install.SN = GetAPPSN' GetAPPSN is a function that returns a String.

      'UserID it's client identification number.Each of your clients has one.
      '    Using this number the client it's identified into the server/client system.
      '    This is stored localy by the applicatin and remote
      '    by registration server.
      Install.UserID = GetCSTUID' GetCSTUID is a function that returns a String.
End Function



   As you may see in CInstall object declaration, CInstall provide some kind of events. This events signal registration process status.Following piece of code exemplifies two event-handlers for events provided:


'Install_InstallError event handler
Private Sub Install_InstallError( _
                        strServerErrorMessage As String, _
                        strClientErrorMessage As String)
   Call Msgbox ("Registration Server Message : " , strServerErrorMessage)
   Call Msgbox ("Registration Client Message : " , strClientErrorMessage)
End Function

'Install_InstallEvent event handler
Private Sub Install_InstallEvent( _
                        strServerMessage As String, _
                        strClientMessage As String)
   Call Msgbox ("Registration Server Message : " , strServerMessage)
   Call Msgbox ("Registration Client Message : " , strClientMessage)
End Function



   To fully understand client's actions (by client we reffer at registration-client) you must understand what registration server does with the data provided by client each time when is conected to registration engine.Please read this to understand what kind of information is stored into registration server database and what client reports are available.

You must read more about registration transaction to fully understand what must be done to ensure a corect registration.

Check this to see an registration transaction implementation.

Also you can check registration-protocol-specification to view all operations that are posibile using this framework.    The specification contains also some examples, so you can see how messages between server and client look like.

   To inspect a fully functional example download this (vbregClient001b.zip 23k archive)



 

Arhitecture

 

General info

Basically registration client acts like a common browser (check out msxml3.dll documentation on http) making requests and parsing responses against a http server, registration server.Following resource may help:

    Basic layout - application basic overview (gif image)
    Application targets - main targets to be acheived ( power point presentation )
    Registration client class diagram - main compoenent description
    Main creatable component description - main compoenent description

 

Team

 

  • dafimoto & xtremecode -framework, registration protocol,database design,tests
  • xtremecode - registation client,registration client/server implementation
  • dafimoto - registration server,reports
  •  

    Coding standards

     



      Coding standards used for this project are same used in all 3devgroup projects.


     

    Screen shots

     



    FileShare project registration screenshots:
        - registration startup - Shows first screen of the registration process (and help file that starts with first step of registration or licence agreement file - check todo list to see that help and other files - like registration files or readme files are considered external resources and dinamically loaded by registration engine)
        - registration step 2 - Show second standard screen of the registration process : client registration.There are two ways.Or the client is a new client and he has to complete all fields or is a older client and now is reinstalling the software, in this case he must provide Client Code to continue
        - registration error - Example of registration error.This specific error has two causes: or the server is not running or the application provided an invalid URL as registration server URL
        - another registration error - Another error that may occur: Email provided by the server components and if the email is invalid this error is displayed
        - another registration error ... :) - Broken server components error. When developing serverside scripts this was a way to check scripting error messages
        - client registered.receiving cliend Id - Client info was "checked", client is receiveing this unique client number. After that registration continues with application registration.
        - client registered.Application registration begins - After client registration , application registration begins.First step of application registration is choosing between a demo version licence or other type of licence


     

    Todo List

     



      Registration framework was developed for Eurosito company,and it is currently used in NewsPlus and FileShare projects (implemented for the same company).Since 3devgroup is the proprietar of the registration application framework (client server and protocol), out scope is to make sure that registration-client component can be integrated with any registrable-software program. We identified a list of changes that we have to make to acomplish that:

      registration to do list can be found here

     

    Known Bugs List

     



  • 0001 - http connection is a syncronized connection, client waits until the response is made, so sometimes application user interface may not respond properly.We're planning to change that using asyncron connection mode.


  • 0002 - install fails if xmlhttp3.dll is not installed on target system (if target system has an IE under 6.0 version). We're planning to add msxml.msi (Windows® installer for windows microsoft http library) to 3devgroup registration client setup.


  •  

    Related projects

     



    registration-server
    NewsPlus
    FileShare


     

    Buy 3devgoup Online Registration Solution

     

    Source or binaryes are for sale. Please contact us at main@3devgroup.com
     
     
    www.3devgroup.com
    Contact : Terms : Privacy Policy
    © 2004-2005 3DEVGROUP. All Rights Reserved.