Article Options
Premium Sponsor
Premium Sponsor

 »  Home  »  Reviews  »  Software Reviews  »  Visual Welder by sembleWare
Visual Welder by sembleWare
by John Spano | Published  09/12/2003 | Software Reviews | Rating:
John Spano

John Spano cofounder and CTO of NeoTekSystems, a Greenville, South Carolina technology consulting company. NeoTekSystems offers IT consulting, custom programming, web design and web hosting. We specialize in Microsoft .Net enterprise development and business design.

I have six years of experience in software architecture. My primary focus is on Microsoft technologies, and I have been involved in .NET since beta 1. I currently hold a MCSD certification, 2 MCTS's (Windows, Web) a MCPD in Distributed, 2 MCITP's, a Microsoft MVP, and have won the Helper of the Month contest for July 2002 in the devCity.NET forums.

Corporate URL: www.NeoTekSystems.com
Primary email: JSpano@NeoTekSystems.com
Alternate email: Jspano@devcity.net.

 

View all articles by John Spano...
Visual Welder by sembleWare

I recently had the chance to review a new paradigm in development. It's not often that application development takes a big turn; some that come to mind would be the advent of object oriented programming and the new design of creating web pages with ASP.NET. Visual Welder by sembleWare (www.sembleware.com) introduces a new way to develop ASP.NET web sites from concept to full design and coding. We will take a look at Visual Welder and see how it develops applications and saves you time.

First, we need to decide on an application to develop. I decided to do a standard Customer Relations Management (CRM) application. Many companies are moving to web based CRM packages to facilitate their sales people, so they are fairly common.

We will first do an analysis of what we want our CRM application to do. Let's define some basic functionality for our application.

  1. Hold Customer information.
  2. Hold multiple contacts for each customer.
  3. Hold multiple addresses for each customer.
  4. Have a list of products.
  5. Allow users to sell products on orders for customers.
  6. There will be multiple products per order.
  7. Have a users table for our sales people.

Now let's fire up Visual Studio and see what Visual Welder can do for us. Visual Welder installs itself as an add-in to Visual Studio, and doesn't have a separate stand-alone application. The add-in consists of a couple of designer windows and a slide toolbar. You can design your applications in 2D or their new 3D interface. We will take a look at the designer windows when we dig into developing our CRM application.

Visual Welder bases it's designs on a visual concept of parts that fit together. These parts have parent or child relationships and interfaces with each other. When you generate code, it's based on the visual representation of your application. Let's take a look at our root part in the 3D design view. You will notice its forms and children, such as MainMenu, OwnCustomers and OwnProducts.

Click for a full-sized image
(click for a full-sized image)

Here is another view with the Customer expanded. You will notice the fields I have added in the grid. These represent the database fields. The form that is represented by the part is also shown slightly above the part.

Click for a full-sized image
(click for a full-sized image)

Most of the entire design process is done visually this way. I didn't like the 3D designer at first, but it grew on me quickly. It is much easier to see the relationships between your parts this way and interact with them.

After generating a prototype of our system (a quick menu click), we have a fully functioning website, with a database, minus the business logic. Take a look at the front page of our CRM application. I just went with the default template for my review, but this is fully customizable also through your own templates.

Click for a full-sized image
(click for a full-sized image)

Now that our user interface is designed and we have it working, let's look at some of the business logic we need to implement. Being a system architect, I was very interested to see what sembleWare did to my backend tier. I have seen many products before that try to generate a UI for you and the code to run it that aren't very good in terms of scalability and plain good object oriented design.

When generating the code, you get a front end ASP.NET web project and a back end VB.NET DLL for your business logic tier. One of the first things I noticed about the code generated was its generality. None of the objects were tied to any others, which is very good. You can manipulate individual parts and not have to worry about them affecting the other parts of the system.

As a quick example, look at the following code:

Public Overrides Sub Save()
    ApplicationSettings.BeginTransaction()
    ApplicationSettings.PartPool.Add(Me)

    ApplicationSettings.PartPool.Add(GetWrappedProductInclude.Instance)
    Try
        UpdateInvoiceTotals(ItemCost.Value)
        GetWrappedProductInclude.Save()
        MyBase.Save()
        ApplicationSettings.CommitTransaction()
    Catch x As Exception
        ApplicationSettings.RollbackTransaction()
        Throw x
    Finally
        ApplicationSettings.PartPool.Remove(Me)
        ApplicationSettings.PartPool.Remove_
            GetWrappedProductInclude.Instance)
    End Try

End Sub

Private Sub UpdateInvoiceTotals(ByVal CostAmtDiff As Decimal)
    Dim oOrder As WrappedOwner = GetWrappedOwner()
    oOrder.TotalForOrder.Value += CostAmtDiff
    oOrder.Save()
End Sub

It's hard to look at a piece of code and understand it with out the rest of the system, but I'll explain the main highlights of it. This is a partial listing of the override of the save method of my OrderLine class, and one of its needed functions, UpdateInvoiceTotals. I implemented this to satisfy the business rule of the order total reflecting the line totals. The key thing to notice with the code is that it is totally generic.

Take the UpdateInvoiceTotals function for instance. To update the parent order, I ask the order line for its parent, update it and then save it. Nowhere do I specifically ask for an order object in UpdateInvoiceTotals, but instead the owner of the line item. This would allow me to replace the order part should I need to (or use the line item part in other projects). Even the TotalForOrder isn't a property of the order object, but basically an interface between the order and line item. I can replace the order part with any other part that honors this interface.

I commonly design and implement similar architectures for the client/server systems I design. The difference in this case was it literally took a couple of hours instead of several months. How's that for an ROI? All I have to do is use the predefined objects and create some business logic.

Another point worth mentioning is that you can generate code from your structure at any time. Both the database, UI and business tiers get correctly changed to reflect your changes to the parts or the way they interact. It's not a generate once and then your on your own type of program. All changes from the database level up get propagated out.

Here are a couple more screen shots of my CRM system to give you a feel for what was generated.

Click for a full-sized image
(click for a full-sized image)

Notice that the Customer field is a different color. That means it's mandatory. Also notice that I haven't implemented any custom data grid lists yet. The product id shows a number and order id shouldn't show, since it's on the header. This is fixed with a custom list. After implementing the list, a minute later, the form now looks like this.

Click for a full-sized image
(click for a full-sized image)

List of current orders. Notice that I have done some more formatting to show the customer name instead of the customer number stored in the db.

Click for a full-sized image
(click for a full-sized image)

Overall, I was very impressed with sembleWare. I rarely do web development and was able to get a lot of a CRM system implemented in a couple of days. In approximately 5 hours, I have implemented all the functionality described above except for the contacts and customer addresses. I estimate that they will take another hour or so. It was also constructed in a scalable way from experts that know good web development, and not by me. The back end was implemented in a very scalable object oriented design. This is a tremendous productivity boost and a much less chance to have errors in the system.

I highly recommend you trying Visual Welder out, as I have barely scratched the surface of what Visual Welder can do. Even if you have an existing product with a database, Visual Welder can generate your web application and part structure from it. There is a fully functional 30-day trial available for you to download from their site. They also have fully functional pre-built parts for you to plug into your design available for free.

Don't wait, try Visual Welder now and see how your routine tasks become fun!

How would you rate the quality of this article?
1 2 3 4 5
Poor Excellent
Tell us why you rated this way (optional):

Article Rating
The average rating is: No-one else has rated this article yet.

Article rating:2.90909090909091 out of 5
 11 people have rated this page
Article Score12021
Sponsored Links