Unless you have been living under a rock for the past year, you must have heard of .net(“dot net”) by now. What is .net? Is it a new operating environment? Is it a newlanguage? Is ita new way of developing distributed applications? The answer is “Yes”:.net is all of these things and more.

The .net world was created by Microsoft to allow users to have access to theirinformation, files, or programs anywhere, anytime, and on any platform or device.

When Microsoft introduced the first Windows operating system, it took applicationdevelopment and system design to a new level: multi-tasking. With each new version ofWindows, multi-tasking has been driven more towards distributed processing and .net isthe next step.

Visual Studio.net has an entirely new, object-oriented framework. In this paper I willintroduce you to some of features in Visual Studio.net, however, I will focus mostly onVisual Basic.net and draw some comparisonsto its predecessor VB 6. The reader of thispaper will not be able to start developing code in Visual Basic.net after reading, butshould have a high-level view of the changes in Visual Basic.net and how they differfrom previous versions.

As shown in Figure 1, Visual Basic sits at the top of the framework (along with the otherlanguages in Visual Studio.net). Below that is theCommon Language Specification(CLS). This specification is a set of rules that govern the minimum language featuresthat must be supported to ensure that a language will interoperate with other CLS-compliant components and tools. As long as a language conforms to the CLS, it isguaranteed to work with the CLR. In this way, when third-party compilers target the .netframework, as long as they conform to the CLS, the code is guaranteed to work.

You might also notice that VB is now and “equal” or peer of C++, C# and any otherlanguage that is .net compliant. Visual Basic.net shares the same variable types, arrays,user-defined types, classes, graphical forms, visual controls and interfaces as these otherlanguages.

Web Services

Web Services provide a Web-enabled user interface with tools that include variousHTML controls and Web controls. Forms creating using Web Services are the same asforms created for a Windows application. The code behind a Web form is the same asthe code behind a Windows form.The markup language that is used by Web forms isstill there, but the Web form applications generate it for you.

User Interface

At the same level as Web Services is the User Interface. The User Interface is whereWindows forms live. It also provides code for drawing to the screen, printing, renderingtext and displaying images.

Data and XML

Both Web Services and the User Interface sit on top of the Data and XML block. As youwill learn later in this paper, XML (or extensible markup language) plays just asimportant of a role as data. XML is used to provide a text view of data that can be sharedbetween services on the same PC or passed through a firewall to a web server across thecountry using SOAP (more on SOAP a little later).

Base Class Library

The base class library (BCL) is underneath the Data and XML block. This area is theorigin for the base class of all .net programs. Everything in Visual Basic.net is an object,and all objects originate from a class namedSystem. The BCL also providescollections,localization, text objects, interoperability with non-.net code and ActiveX controls and avariety of other services.

Tem McGallagher

Page5

11/5/2013

The Common Language Runtime

At the base of the .net framework is the common language runtime (CLR). Much like theJavaVirtual Machine, the CLR is needed to make .net code run on any machine.

The CLR is a set of resources that any .net program can take advantage of, from any .net-supported language. All languages will be more equal in capability than they ever havebefore.

The CLR includes support for the BCL, where the architecture for controls and formsactually live. It is also responsible for managing threads and exceptions (replacing theErr object in VB 6). Garbage collection is also handled by the CLR.

The CLR takes code generated by VB and converts it to the native language of thecurrent platform. Through this conversion, the magic of multi platform execution isachieved. Now VB programmers can write code in VB syntax and the CLR isTem McGallagher

Page6

11/5/2013

responsible for converting it to any platform that can run the CLR. The programmer isremoved several layers from the hardware and doesn’t really need to know what platformhis/her

code is running on.

One additional service of the CLR is handling bad code. You have probably heard storiesof rogue code that overran buffers and trashed a machine, killing all other programs alongwith it. By design, this cannot happen with code written in Visual Basic.net.

System Namespace

TheSystem

namespace includes all classes that represent the base data types used by allVisual Basic.net applications. In .net, all of the base data types areObject, Byte, Char,Array, and so on. Many of these correspond to the data type in classic VB.

Provides classes that give system run times, administrativetools, applications and other consumers of configurationinformation access to configuration information.

System.Data

Consists mostly of classes that constitute the MicrosoftADO.net architecture.

System.Diagnostics

Provides classes to debug applications

and trace the executionof code.

Ssytem.DirectoryServices

Provides access to Active Directory from manage code.

System.Drawing

Provides access to the GDI+ basic graphics functionality.

System.EnterpriseServices

Provides transaction-processing functionality.

System.Globalization

Provides localization information on elements such as thecurrent culture, formatting, data, and time for specific locales.

System.IO

Provides types that allow synchronous and asynchronousreading from and writing to data streams and files.

System.Management

Provides classes for manager of system object and events.

System.Messaging

Provides classes to connect to message queues on the network,send messages to queues and receive or “peek” messages fromqueues.

Tem McGallagher

Page7

11/5/2013

Namespaces

Description

System.Net

Provides a simple programming interface to many of theprotocols found on the network today.

System.Reflection

Contains classes and interfaces that provide a managed view oftypes, methods and fields, with the ability to dynamically createand invoke types.

System.Resources

Provides management of resources, such as a resource thatcontains culture-specific information.

System.Runtime

Provides infrastructure services,

System.Security

Provides the underlying structure of the .net framework securitysystem, including interfaces, attributes, exceptions and baseclasses for permissions.

System.ServiceProcess

Provides classes to install and run services (non-interfaceexecutables).

System.Text

Contains classes representing ASCII, Unicode, UTF-7 andUTF-8 character encoding; abstract base classes for convertingblocks of characters to and from blocks of bytes; a helper classthat manipulates and formatsString

objects without creatingintermediate instances ofString.

System.Threading

Provides class and interfaces that enable multithreadedprogramming.

System.Timers

Provides two components that raise an event on an interval ormore complex schedule.

One of the biggest improvements with .net, in my opinion, is the new common IDE. Asyou can see in Figure 3, the IDE contains a little of all the different classic Visual Studiolanguages. There is an output window similar to the one in C++,the properties windowsimilar to the one in VB; but best of all are the “slide-in” capabilities of the differentexplorer windows.

There is now a server explorer that slides-in from the left side of the IDE. This explorerallows the developer to have access to operating services, data connections, and best ofall, SQL server. I cannot tell you how many times I’ve wished that I could change astored procedure or table design without having to load SQL Enterprise Manager to doso. With the .net IDE, all of the tools are found right in the same application. With theuse of the “thumb-tack”, you can minimize explorers to gain more space for your codewindow if needed.

Tem McGallagher

Page9

11/5/2013

Visual Basic.net

Now it’s time to take a look at Visual Basic.net, the main focus of this paper. I am goingto assume that the reader is already at least familiar with writing applications using VB 6or earlier. The intent of this paper is to point out what is new in Visual Basic.net and nothow to develop applications using Visual Basic.net.

Visual Basic.net Data Types

Before we can get into the Visual Basic.net code, we need to start by exploring thechanges to data types. Hopefully, you are not a programmer that insisted on using theVariant

data type consistently in your code…if you

did, you will have a more difficulttime adjusting to the new data types in Visual Basic.net. TheVariant

data type no longerexists in Visual Basic.net. (Another data type that did not make the transition is theCurrency

type.)

The primitive data types still exist (Integer, Boolean, Long, etc.), the main difference nowis that these data types are all structure types in theSystem

namespace and are referred toasValue Types.

Value types are always accessed directly. In fact, you can’t create a reference to a valuetype. And unlike reference types, setting a value type to Null is not possible. Valuetypes always hold a value, even if one hasn’t been assigned yet. When a value typevariable is dimensioned, it’s initialized to a value representativeof its type. For example,if you dimension a variable toInteger, the Visual Basic.net compiler automaticallyinitializes the variable to 0.

Consider the following VB 6 variable declaration:

Dim intValue As Integer

This code is still valid in Visual Basic.net, however, you can also do the following inVisual Basic.net:

Dim intValue As Integer = 5

Being able to dimension and set the value of a variable at the same time is a muchwelcome change.

For you Java users out there, there are also some new features to the value types you arealready familiar with: formatting and conversion. In VB 6, the Format() function andfunctions like CStr() or CInt() provided us with the means of converting between datatypes. Now, each data type has its own built in methods to handle conversion, equalitychecks (there’s even a ToString() method in these structures.)

Tem McGallagher

Page10

11/5/2013

A final note on data types: Visual Basic.net is a type-safe language (you can only accessa variable through the type associated with that variable). We should be used to usingOption Explicit

in VB code to require variable declaration, but Visual Basic.net has a newdirective calledOption Strict. This new directive prevents you from trying to overwritedata with a different data type and should always be

included at the top of your class andform code.

TheSystem.Object

Class

TheSystem.Object

class is much like theObject

class in Java. TheSystem.Object

class isthe super class of all classes the in .net framework—it’s the only class in .net that doesnot inherit from any other object type. All objects must either explicitly or implicitlydeclare support for exactly one other object type. In .net it is impossible to use a classthat does not inherit fromSystem.Object.

There are six methods inherited by all classes that come from theSystem.Object

class, seeTable 3 below.

Table 3–

Inherited

Methods fromSystem.Object

Namespaces

Access

Description

Equals

Public

Takes another object as a parameter and returns aBoolean

that indicates whether the two objects are equal.

GetHashCode

Public

Returns an integer hash code that represents the object’svalue. This code is usually used as a key when the objectis added to a collection. Two identical objects shouldgenerate the same code.

Finalize

Protected

The CLR calls an object’sFinalize

method to notify theobject that the object is about to be destroyed. Thismethod really does nothing and is overridden by theclass.

MemberwiseClone

Protected

Creates a shallow copy of the object.

GetType

Public

Returns an instance ofSystem.Type, which is used to getinformation about the object through metadata.

ToString

Public

Returns a string representation of the object.

Garbage Collection in Visual Basic.net

In VB 6, when you were finished using an object, you simply set it to nothing and theobject would be released. This is no longer the case with Visual Basic.net. In VisualBasic.net, when a variable loses scope, the CLR destroys the object and removes it fromthe stack automatically for you.

Tem McGallagher

Page11

11/5/2013

Object Oriented Programming in Visual Basic.net

Many people have asked for this for a long time and now Microsoft has delivered. Asyou may have guessed by now, the major difference in Visual Basic.net is that it is nowtruly object-oriented.

Inheritance

is one of the fundamental aspects of object-oriented programming. Throughinheritance, you can derive classes from other classes that have already been written.Even a Windows form is now inherited, just look at the code at that begins each form:

Public Class Form1

Inherits System.Windows.Forms.Form

As you may know, when a class inherits from a base class, it inherits the properties andmethods of that class (or itsmembers). You can then use or add these members in yourown class in whatever way you

need.

Visual Basic.net couldn’t be truly object-oriented without polymorphism, which it ofcourse has. Using theWindows.Forms.Formclass an example: you create two Windowsforms in your application, they both have a Close() method, but what the code does ineach form can be different (an usually is). The point is that each form inherits from theWindows.Forms.Form

class, but each has its own “form” (no pun intended). After all,the word polymorphism literally means “many forms”.

One other change in Visual Basic.net that relates to OOP is method overloading. VBalways had a “sort of” way of overloading functions or methods by using theOptional

keyword in the function/method declaration. In Visual Basic.net (again, much like inJava), when you writea definition for a method/function, you can overload it with thedifferent parameters as needed.

Visual Basic.net Classes–

Checking Account Sample

The following is a short example of a class written in Visual Basic.net. After the code, Iwill examinethe features of the class.

Code for the Checking class:

Option Strict On

Imports System

Namespace Accounts

Public Class Checking

Private m_strAcctName As String = ""

Private m_strAcctNumber As String = ""

Sub New()

MyBase.New()

End Sub

Tem McGallagher

Page12

11/5/2013

Sub New(ByVal strAcctName As String, ByVal strAcctNumber AsString)

MyBase.New()

m_strAcctName = strAcctName

m_strAcctNumber = strAcctNumber

End Sub

Overridable Function Serialize() As Boolean

If ((m_strAcctName <> "") And (m_strAcctNumber <> "")) _

Then

Return True

Else

Return False

End If

End Function

#Region "Account Properties"

Property AccountName() As String

Get

AccountName = m_strAcctName

End Get

Set(ByVal Value As String)

m_strAcctName = Value

End Set

End Property

Property AccountNumber() As String

Get

AccountNumber = m_strAcctNumber

End Get

Set(ByVal Value As String)

m_strAcctNumber = Value

End Set

End Property

#End Region

End

Class

End Namespace

Examining the Checking class and Accounts Namespace:

Option Strict On

–

To reiterate, this statement checks for possible problems in thecode that would try to overwrite different data types (for example if: intI = strSomething).

Imports System

–

This imports the classes in the System Namespace.

Tem McGallagher

Page13

11/5/2013

Namespace Accounts

-

Namespaces

are used to group related types into ahierarchical categorization. We’ve already explored the System namespace, I’ve chosento use Accounts for my namespace. Later, I may want to add a Savings account or aMoney Market account class to the Accounts namespace that would have differentproperties.

Public Class Checking

–

Begins the definition of the class.

Next, I declare private memory variables that assist

me in data hiding. While thesevariables will hold the actual value of the Account Name and Account Number, theconsumer of this class can only access these values by using the public methods.

Sub New()-

This is the default constructor for the class. You can see the I haveoverridden the New() constructor with one that will also allow the consumer to passinitial values to the class during construction.

MyBase.New()-

This must be the first line of code in the constructor methods. Thiscalls the base-class constructor that the class is derived from (in this case it isSystem).

Overridable Function Serialize()

–

Because Visual Basic.net methods arenot overridable by default you must explicity use the keywordOverridable

for methodsyou want consumers to be able to override.

Property AccountName()-

The traditional Let/Set methods have been replaced inVisual Basic.net with Get/Set methods instead that are “wrapped” inside of theProperty

block.

To actually implement this class in your Visual Basic.net

code you would assign the classto a variable using the following code:

Dim clsChecking As New Accounts.Checking()

This calls the default constructor for the class. Then to set the properties of the class, youcould do the following:

With clsChecking

.AccountName = “AmSouth Checking Account”

.AccountNumber = “53-11123221”

End With

Visual Basic.net–

A High Level Summary

As you can probably tell by now, there are a lot of things that are new with VisualBasic.net, but there are also some things that haven’t changed. One could easily write aTem McGallagher

Page14

11/5/2013

book on this topic, but with this paper we will keep it on a high level…so let’s reviewsome of the major changes in Visual Basic.net.

The Framework

There are many goals of the .net framework, however, the main goal, and benefit, is thatof the CLR. With the CLR, objects that are written in C++, C# and Visual Basic.net canall be used in any project that is targeted for the .net framework. If you are familiar withCOM, a subject I haven’t touched on inthis paper, it’s time to forget what youknow…COM no longer exists in .net (there is backward compatibility for ActiveXcontrols and DLLs, however, I would expect this to go away in future releases of .net).

The Framework is meant to be the “great equalizer”. No longer do we, as programmers,have to worry about the underlying architecture/hardware we’re running on; if the PCmeets the minimum requirements for the .net Framework, then your Visual Basic.netapplication should run without problem on that PC.

Syntax

Much of the syntax in Visual Basic.net has remained the same, however, as I’ve alreadymentioned, everything in Visual Basic.net is now an object, even the data types. You canstill use data types much the same as before, however, since they are now objects, theprogrammer has greater control and flexibility when manipulating them.

Visual Basic.net is type-safe. Since theVariant

data type no longer exists, you cannotsimply assign the value of anInteger

to aString

for example; this will cause a runtimeerror. Using theOption Strict

statement at the beginning of your code will help eliminatethese types of errors because the compiler will catch them.

Distribution of Applications

This is a major, and very much welcome change, in Visual Basic.net. Today, when youcreate a VB 6 application that uses COM components, you have to remember to alwayspackage the COM components with your application. Furthermore, you’d better makesure you are packaging the right version of the components or you

will get trapped inDLL Hell!

With Visual Basic.net, your target audience for the application must first install the .netFramework on their PC(s). Next, you simply create a folder and copy your applicationand any supporting files (help files, etc.)to that folder and you’re finished. It really isthat simple! When the user wants to uninstall your application, they simply delete thefolder containing the application. There is no risk or worry of un-registering componentsor removing shared components that cause other applications to no longer function.

Tem McGallagher

Page15

11/5/2013

Data Access and XML

I will talk more about ADO.net in one of the following sections, but I did want tomention here that data access with Visual Basic.net and ADO.net has changedimmensely. TheRecordSet

object no longer exists in ADO, instead we now use aDataSet

object.

The main idea behind theDataSet

object is this: after you have defined all you needabout the data source, you use aDataSetCommand

object to connect to the data sourceandretrieve the data you want then disconnect from the data source. This frees up serverresources because the server does not have to maintain as many concurrent connections.(This principle is much the same as using a disconnected recordset, but as you’ll

see later,there are also other features in theDataSet

object that disconnected recordsets cannothandle.)

At the root of all data in .net is XML. I will explain later why XML is used and you willhopefully see the beauty of it. If you have ever developed distributed applications, orwanted to, .net gives you the tools to do this much easier than before. If you refer backto the table containing theSystem

Namespace, you’ll seeSystem.Xml

at the end of thelist…i.e., one could also say that at the root of ALL things in .net is XML.

Tem McGallagher

Page16

11/5/2013

Accessing Data with ADO.net

Data access with Visual Basic has come a long way in a relatively short period of time.After all, Microsoft released three versions of Visual Basic before database access wasever included.

In VB 3, Microsoft introduced DAO (Data Access Objects), which usedthe Microsoft Jet Engine to connect to local databases. You could use DAO to connect todatabases on a server, but the performance was poor because DAO was optimized forlocal access.

Following DAO came RDO (Remote Data Objects) and then finally ADO (ActiveX DataObjects). These access technologies were designed with client/server in mind, but withthe move away from a client/server to an n-tier approach to system design, somethingnew

was needed; enter ADO.net.

As mentioned earlier, theRecordset

object no longer exists in ADO.net. The successor,theDataSet

object now gives us a look at all of the data. It can model data logically orabstractly, because unlike theRecordSet, theDataSet

is not a container that can hold onlyrows of data. TheDataSet

can actually hold multiple tables and the relationshipsbetween them.

Let’s say for example you wanted to query data from two tables in a database that arejoined together. In traditional ADO, you would execute a SQL query that placed theresults in theRecordSet

object. In ADO.net, using theDataSet

object, the two tablesthemselves are placed in the data set and you then perform the needed query afterwards.The advantage of this method is not obvious, but what if there was some bit of detail inone of the tables your query left out? You would then, possibly, have to create anotherRecordSet

to query the additional information you needed.

Previous releases of ADO had support forXML, but it was crude at best. If you don’tknow what XML is by now, I suggest you start surfing or buy a good book on XML: it’shere to stay.

For several years now, many businesses have been using XML to exchange data. Theproblem has been that both entities had to agree in advance on the format of the XMLdocument, because there were not any languages that would give you an easy way toaccess XML data. Microsoft introduced the use of XML in ADO in version 2.1. Theprogrammer could either save a recordset to XML and vice-versa; the trouble was thatMicrosoft defined the format of the XML and no other platforms had native support forit. Thanks to W3C, there is now a standard XML schema for recordsets and Microsoftuses this standard in ADO.net. I amnot sure if other companies have yet adopted thestandard, but you can be assured they will soon if they haven’t already.

Figure 4 depicts data flow from a data source to a data consumer using ADO.net. Firstwe connect to and retrieve tables from a relational database. The tables are each placedin an in-memoryDataSet

object usingDataSetCommand

objects. TheseDataSetCommand

objects specify the tables (or a subset thereof) that we are interested in.Tem McGallagher

Page17

11/5/2013

After theDataSet

is filled, the connection to the database is immediately closed. We canthen build the relationship between the individual tables within theDataSet

itself andsend the data, via XML, to any client application.

Figure4

-

ADO.net data

flow

Tem McGallagher

Page18

11/5/2013

Table 4 below lists some of the differences between ADO and ADO.net.

Table 4–

A Comparison of ADO and ADO.net Features

Feature

ADO

ADO.net

Memory-residentdata

Use the Recordset object, whichlooks like a single table.

Uses the DataSet object, which cancontain one or more tablesrepresented by DataTable objects.

Relationshipsbetween multipletables

Requires the JOIN query toassemble data from multipledatabase tables in a single resulttable.

Supports the DataRelation object toassociate row in one DataTableobject to rows in another DataTableobject.

Accessing data

Scans Recordset rowssequentially.

Permits non-sequential access torows in a table. Followsrelationships to navigate from rowsin one table to corresponding rows inanother table.

Disconnected access

Provided by the Recordsetobject, but generally supportsconnected access representedby the Connection object.Communicates with a databasewith call to an OLE DBprovider.

Communicates to a database withstandardized calls to aDataSetCommand object.

Programmability

Uses the connection object totransit commands.

Uses the strictly typed programmingcharacteristic of XML. Data is self-describing. Underlying dataconstructs such as tables and rows donot appear in the XML, making

You cannot do anything in Visual Basic.net without XML being involved somewhere. Itmay not be on the surface, but it is there in the underlying data. Chances are that if youare only developing Windows applications for use on a single PC, you will not use XMLTem McGallagher

Page19

11/5/2013

very often; but if you want to query or update data from a remote data source (on theInternet or Intranet), you will need to understand what XML is and what it can do. Andyou will, of course, use ADO.net as the mechanism to do this.

Tem McGallagher

Page20

11/5/2013

ASP.net and Web Services

Web Forms (the controls and classes .net provides for building Web pages) and WebServices (programmable application logic accessible by standard Internet protocols) arepart of the framework for Internet functionality included in Visual Basic.net and areknown under the umbrella of ASP.net. If you have worked with ASP (Active ServerPages) before, you will be surprised at how much different and more efficient ASP.net is.ASP.net

encompasses a completely new programming object model. It replaces the VB 6WebClasses and DHTML pages. Not only that, but the ASP.net programming model isalso more consistent and easier to use.

Some of the key features of ASP.net are:



Language Independence.

ASP.net allows you to use compiled languages,providing better performance and cross-language compatibility.



Simplified development.ASP.net makes even the richest pagesstraightforward and easy to write.



Separation of code and content.EachWeb Form has a code module withthe same name but with the extension .vb. This so-calledcode behind thepage

contains the program logic code, while the Web Form contains the visualcomponents.



Improved scalability.New session-state features make it easy to create WebForms that work on Web server farms.



Support for multiple clients.

ASP.net controls can automatically detect theclient and optimize themselves for a consistent look and feel. You no longerhave to write separate code for different browsers.



New Web Forms controls.

The new controls can output HTML 3.2 fordown-level browsers while taking advantage of the runtime libraries forenhanced interactivity on richer clients. Our programs can now output to awhole new range of platforms such as PDAs.



Server-side processing.ASP.net changes each page into a server-side object.More properties, methods, and events can be used with your code to createcontent dynamically. Therunat-“server”

attribute converts the HTMLelement into a server-side control that is visible and therefore programmablewithin ASP.net on the server. Events raised by Web Form controls aredetected and the appropriate code is executed on the server in response tothese events.

Tem McGallagher

Page21

11/5/2013

A final note on ASP.net

ASP.net is written entirely in the new C# language. All ASP.net pages have the .aspx fileextension, which allows both .asp and .aspx files to be run on the same machine under theexisting ASP runtime.

Web Services

In very general terms, ASP.net pages are for human interaction with a Web server, andWeb services are for programmatic interaction with a Web server. Web services are ageneral model for building applications that can be implemented for any operation thatsupports or requires communication over the Internet.

DCOM (which stands for Distributed COM) has been around for a long time and iswidely used today by many developers. DCOM allows us to distribute “tiers” or singlecomponents in an enterprise solution; problem is DCOM uses protocols that can only beshared between computers running Microsoft operating systems.

Web services uses a new technology called SOAP (Simple Object Access Protocol),which doesn’t rely on operating systems or network protocols but uses XML and HTTPto perform remote requests;thereby making it usable on non-Microsoft platforms as well.

SOAP is basically a message exchange protocol that uses HTTP and XML. HTTP isused as the transport because it uses port 80 and practically any computer with Internetaccess is allowed in and out of a firewall using port 80. XML is used for formatting themessages.

The key advantage of Web services is that is allows software companies to createservices that can be marketed to other companies. Let’s say, for example, we’ve beenasked to develop a web site for our company, which does business in different parts ofthe world. Obviously there will be money conversions involved in this application. Inorder to keep up with the daily exchange rates, we would have to develop our ownsystem thatupdates the exchange rates daily. But what if we instead used a Web Serviceprovided by a bank? Each time we need an exchange rate, we simply make a request tothe bank’s Web Service. The benefits of the scenario are obvious, but in addition to theobvious, is the fact that we have a guarantee from the bank that the rates are valid.

There are already a number of businesses offering Web Services on the Internet. There iseven an Internet based registry that can be searched for a usable Web Service. You

canimagine that some of these services will be charged, while other may not (where it’s inthe best interest of the business offering the service to provide it free of charge).

Some authors are predicting that Web Services may very well become the new standardfor B2B integration over the Internet.