Welcome to Tony's Education Corner.  :)

Most of the responses so far say "connect, do your stuff, then disconnect".
That's all good advice - here is why people are saying this.

This is the concept of Persistence.   If you hold a connection between user
inquiries, you have a Persistent connection.  If you do not hold the
connection, it is Non-Persistent, but then you need to work out how you are
going to manage State.  That is the state of a user session, user variables
that tell the application where a given user is at any given time.  State
can be managed on the server by writing variables do disk with a unique ID,
then passing that ID back to the client program.  When the user re-connects,
the ID is provided, the app reads the state variables, and continues where
it left off.  (In the .NET world, this is called Serialization.)  State can
also be passed back entirely to the client.  If the users are coming in from
a browser, you might need to maintain state at a middle-tier, like on a web
server, and pass the unique ID back in a cookie.  There are many ways to
architect solutions like this.

If you want to consume a minimal number of licenses you need to code a
minimal persistence and effective state management.  The effectiveness of
this, and therefore the real number of concurrent licenses required, is
entirely up to you.  One thing you want to be careful of: Don't allow users
to do a Sort or Select on a large file, or otherwise initiate a process that
will take over 30 seconds to process.  This will tie up the connection, and
if the user gets impatient they may terminate the process.  Long-duration
processes can be done by a background task and the user should be given a
means for checking on the status of open jobs - or you can e-mail them when
reports are ready, etc..  Remember that you want to return a response back
to the user as soon as possible.  Some applications go into a status-check
loop where the client checks for job completion, and if the job is not done
the user sees a progress bar or some other entertainment - though the
connection appears to be persistent, it's not.

Be sure to account for the "no license" condition in client code.  The
client should be able to retry some number of times or for some time
duration before reporting back a connection failure to the user.  The client
code should pass back this sort of information to the server when it finally
does connect.  With this information you can add more licenses or make code
optimizations as required.  Without this information you may not know just
how overloaded your connections are.

I have extensive experience with writing interfaces like this, and I'll be
happy to provide services to help with any such project.  My preferred tools
these days for MV connectivity are the Pick Data Provider .NET from Raining
Data, and DesignBAIS, but the server-side is coded pretty much the same for
any tool including UniObjects.

Good Luck,
Tony
Nebula R&D
[EMAIL PROTECTED]

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Fawaz Ashraff
> Sent: Tuesday, July 13, 2004 6:46 PM
> To: [EMAIL PROTECTED]
> Subject: [U2] UniObject Licening
> 
> Hi All,
> 
> We are trying to use UniObject for UniData to get
> information for various web projects. Most of the
> Front End is done using VB .Net. It looks like
> UniObject is using a user license for each connection.
> There would be thousands of students using this
> application and we are having a licensing issue.
> Should we structure our program differently? Has
> anyone else come a cross the same problem? If so what
> did you do?
> 
> Thanks a lot.
> 
> 
> Fawaz
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to