As an mv.NET Worldwide Distributor, we provide both software and
services to assist with this sort of project. We don't like
mv.NET because we sell it. We sell it because we like it.
There are a couple ways to move jBase data to/from relational.
1) Create an mvSelect item, use that to populate an mvItemList,
then use the DataTable method to create a real ADO.NET DataTable.
That takes all of about 1 line of code for the raw basics but not
many more to refine the process.
2) That doesn't help with well structured data that conforms to a
specific schema. So an alternative is to separate the ETL
components where you loop to Extract data from jBASE in a couple
lines, Transform data types and do other minor manipulation, then
Load the data into a DataTable / DataSet with AddRow methods.
3) Another way to do this is with the AdapterObjects library, one
of the three primary libraries that comes with the mv.NET
product. This allows you to reference your jBASE data as though
it were relational, and directly populate mv.NET objects that
implement the ADO.NET interfaces. Here the idea is that you're
not extracting MV data and transforming to relational, you're
looking at all of the data as relational - and without making any
changes to your existing file structures.
If you're doing Microsoft Office integration, please note that we
also write Excel and Outlook addins to create seamless data
exchanges with jBASE/MV environments - that means real-time
updates of cells, charts, contacts, appointments, etc.
HTH
Tony Gravagno
Nebula Research and Development
TG@ remove.pleaseNebula-RnD.com
Nebula R&D sells mv.NET and other Pick/MultiValue products
worldwide, and provides related development and training services
Keep up with the Blog! : remove.pleaseNebula-RnD.com/blog
With mvDBRPC you simply write data to any jBase file with your
normal BASIC code. A middle-tier .NET process polls for updates.
The polling period is determined by the polling process but is
typically from 1 second (need to be careful about that) to 30
seconds. The "middle-tier" can be on the localhost or a separate
server, the term simply means it's a communications component.
When data is available on the server, it's extracted at the
polling interval, an event is fired by the mvDBRPC object, and
from there you can do whatever you want. It looks like the data
is being pushed from the server even though it's really pulled
from the mvDBRPC object running in a non-blocked background
thread. If you have multiple Excel processes that need access to
this data, they can in-turn poll this middle-tier for updates
unique to them. Controls need to be in place to ensure all
clients get all data required - this is the sort of stability
that message queuing provides. However, mvDBRPC will allow a
*nix server to push out data (and requests for data) and you
can't do this (easily) with message queues. Again, each method
has different merits.
As an example of how mvDBRPC can be used, we use it in all of our
components that:
- make the DBMS call to external web services
- retrieve web pages
- query/update external relational databases
- and push data into Microsoft Outlook
An alternative with other connectivity methods is to use your own
code to poll, but then you need to manage threads and ensure
transactions aren't missed or double-processed. You really don't
"need" mv.NET at all, it's simply convenient to reduce
development time for these types of interfaces.
Do you _really_ need second by second updates? That can be
server intensive. As I believe Jim was suggesting, you can
extract data from jBASE to a middle-tier by whatever method you
choose, and stage it there for query from clients. Data
extraction from the server should be discoupled from query
processing from clients. In other words, I don't personally
think every client query should hit the server - but it depends
on how you write the code.
How fast is it? Minimize the data you're extracting and it
should be OK. Don't return entire items to the middle-tier and
then parse for required data, only send the data required to the
middle-tier.
Cost? The cost for mv.NET is tiny compared to that of other
products and compared to the time=money cost of writing your own
components.
NTMS, I won't offer to sell you mv.NET. I know you're working
with BlueFinity. But if you need assistance with development and
you are not asking them for services, I will offer to help with
that.
For anyone else - I welcome inquiries for mv.NET, related
components, and services.
For anyone who uses mv.NET in an end-user environement, feel free
to download mvExec - completely free from our freeware site.
It's a simple utility that uses mv.NET to allow you to execute
queries and programs on your jBASE DBMS from anywhere. No code
required.
remove.pleaseNebula-RnD.com/freeware
Tony Gravagno
Nebula Research and Development
TG@ remove.pleaseNebula-RnD.com
Read about PickWiki:
remove.pleaseNebula-RnD.com/blog/tech/mv/2009/01/wiki1.html
For instance how many people know about:
http://www.jbase.com/knowledgebase/manuals/3.0/30manpages/man/jbc2_PAUSE.htm
MV.Net has lots of good things in it, but you should never consider
polling for data when ther is kernel controlled solution available. For
one thing, polling something every second has the potential to slug a
machine and the OP wants real time.
Jim