|
|
|
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
|
| |
|
![]() |
|