A closer look at mv.NET – Part 1
I’m going to post a few articles to describe various facets of mv.NET, both for people who have never seen it as well as for those who are using it. I’ll start here with info about webinars, a video, and some info about the “big picture”.
If you haven’t received this info yet… BlueFinity is hosting webinars to demonstrate usage of the latest features in v4.2, for developing Silverlight UIs with mv.NET. See the BlueFinity website to register. Read more about Silverlight with mv.NET. Watch a professional 2.5 minute marketing video to give you an idea of what this mv.NET/Silverlight hype is all about.
If you’ve used mvDesigner, DesignBais, SystemBuilder, Viságe, ATGUI, Symbion, or other development tools, you’ll see where the new hooks fit in. It’s important to note that mv.NET is not just another GUI development platform. It’s a general purpose development platform that now has more hooks to allow developers to create attractive user interfaces. Let’s go over the other major parts of mv.NET so you can see what I mean.
mv.NET includes a class library called Core Objects that provides similar but advanced functionality along the lines of the D3 Class Library, UO.NET, QMClient, and the new MVSP from TigerLogic. It also has a class library called Adapter Objects that implements ADO.NET interfaces to allow developers to access any MV platform in a SQL-like manner, with DataSets, DataTables, DataAdapters, Rows, Columns, Parameters, etc. You can call BASIC programs and return results from Core Objects, or you can call the same programs from Adapter Objects as though they were Stored Procedures. You don’t “need” to use either mechanism – the one product gives you the freedom to use either library depending on your needs for specific projects. You’re never going to get this from the freeware provided by your DBMS vendor.
mv.NET also includes Solution Objects which is, in large part, a code generator to create strongly typed classes. The code you get doesn’t just have simple FileName.DictName properties and .Save or .Delete methods. There are a lot of details built-in to the platform for calling BASIC programs as methods, performing complex selections, handling associated MV attributes, and related (translated) items. For example, with Customer.OpenOrders.OrderDate, you can access a collection of orders from within a Customer object, and you have access to the OrderDate in each order. You can make that date read-only for some purposes and read/write for others. You can render that date as a string or as a true DateTime object. And when you .Save your Customer, you can elect to have changes to your order objects update back to the server in a cascading fashion – without having to manually save all of the objects yourself. When updates are performed you can elect to let mv.NET update all of the data directly into the file system, or you can elect to have a program that you’ve written process all of the file IO operations.
With any of the above libraries you can solve problems other than just creating a GUI. You can create a thick-client GUI as well as a thin-client/browser GUI. You can interface Web Services to your application. You can connect devices to your application. You can interface other software packages like SAP, Oracle Financials, Microsoft Office apps, Google Apps. You can connect your software with any website that offers Software As A Service (SaaS) … and since the internet has now morphed into a platform for applications rather than just websites, that right there should be as compelling as is required to convince you that mv.NET can move you further than other products in this space.
Core Objects uses connectivity like QMClient and UO.NET to connect to the DBMS. mv.NET is a superset of those freeware offerings. If all you need is basic connectivity to your DBMS, you’re welcome to use those tools provided by your DBMS vendor, and neither I nor BlueFinity will try to sell you something you don’t need. (We’ve actually discussed this and have agreed on this approach.)
Solution Objects and Adapter Objects are built over Core Objects, and the functionality is constantly improved.
The new Silverlight functionality is based on Solution Objects, where your strongly typed collections can be used to populate list boxes, grids, and other controls, and to faciliate updates all the way back to the DBMS. With the new features, you don’t need to manually proxy updates from a client running Silverlight through a middle-tier server and then to the DBMS – that is part of the new value-add provided in mv.NET.
The mv.NET product is evolving, building upon itself to faciliate new kinds of development. As mv.NET developers, this is what we get for our support dollars. Compare this to the free libraries that you have been using which never change – for better or worse.
In upcoming articles I’ll compare mv.NET to UO.NET, the new MVSP library from TigerLogic, and perhaps others. This is to answer the question “why should I buy that when I can get this for free?”. If the info above hasn’t already convinced you that mv.NET is much more than your freeware, then details provided in the other articles should help. But note again that mv.NET is a “solution”, and that real solutions depend on the problem you’re trying to solve. If you just need to connect to your DBMS from .NET, then don’t bother with mv.NET. But if you are writing code to support multiple DBMS platforms, or if you are supporting more than just a few users, or if you want some who has never seen Pick to maintain a GUI for your software, then you really should take a closer look at mv.NET
Nebula Research and Development is a worldwide Distributor of mv.NET for BlueFinity International, and provides value-add support services and other benefits to our clients. Nebula R&D also provides mv.NET development and mentoring services for sites running almost all MV/Pick DBMS platforms.