David Jordan wrote:
> Tony
> 
> One thing, and I may be wrong, is that MV.Net is about accessing the
> database directly.  This puts Multivalue in the same bucket as other
> RDBMS in performance.

David, mv.NET is a suite of three libraries, and there's more than one way
to run a program.  Specific to your comments, we can do this:
        mvAccountObject.CallProg("BASIC.program.name",arg1,arg2,...)
and that will execute any BASIC subroutine on the server just like any
server-side BASIC program doing a call.  This is similar to a UniObjects
UniSubroutine call.

We can also Execute a TCL command, capturing and returning data just as we
do from server-side BASIC.

This sort of code would only be used where a client-side interface is
required.  Relational databases can accept command-line queries just like
MV can, and we'd really be after server-side numbers anyway.  But when
people say "how fast is it", they might want to know so that they can
extract data into some remote client - it wouldn't be good to have fast
server numbers and poor data transmission numbers, or in the case of QM to
not be accessible (natively) via ODBC/OLEDB at all.  Since every MV
platform has different external interfaces, I'm suggesting mv.NET as one
possible standard by which all MV platforms can participate in
client-interface testing like this.


> An area of efficiency and capability of U2 is in the Basic programs
> within U2.  We need to access those from .Net as we would a stored
> procedure in SQL Server.

A stored procedure in SQL Server is defined with:
  CREATE PROCEDURE [dbo].[ProcName] (params...) AS
  INSERT INTO ...
And then they do this:
 SqlCommand cmd = new SqlCommand("ProcName",connection);
 cmd.CommandType = System.Data.CommandType.StoredProcedure;
 ... // set parameters
 rows = cmd.ExecuteNonQuery();

We use BASIC to OPEN and WRITE files as our "stored procedures".  And we
can call to BASIC subroutines using the same ADO.NET syntax that's used to
call a stored procedure in an RDBMS.  That is, the mvCommand class
implements the same IDBCommand interface as the SqlCommand class.  So we
can do this:
 mvCommand cmd = new mvCommand("ProgName",connection);
 cmd.CommandType = System.Data.CommandType.StoredProcedure;
 ... // set parameters
 rows = cmd.ExecuteNonQuery();

Look familiar?  That can be coded so that a single test doesn't even know
whether the data is coming from MV or relational - it's the exact same
code.

 
> If you don't use the Basic programs for the business rules in a .Net
> application one loses a lot of the advantages of U2 and creates many
> of the issues in client server architecture.

I didn't want to imply that code intended to benchmark a server would be
done on a remote client, and I fully agree that server-side benching should
be done with BASIC on the server.  What I'm suggesting is that of the many
tests that would need to be run in a "real world" benchmark, like a query
from Crystal Reports or other similar product, we should run through a
common interface to get an apples/apples comparison.

T
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to