Friday, December 4, 2009

Configuring Xerces-C++ XML Libraries with Visual Studio 2008

The latest release of Xerces c++ xml library is Xerces-C++ 3.0.1. Download the library from the apache website @ http://xerces.apache.org/xerces-c/download.cgi from any of the available mirrors.

Integrating Xerces-C++ XML Library with Visual Studio 2008

Integration involves 3 main steps. This makes the application utilize the facilities of Xerces- C++ xml libraries, and be fully functional.

1) Set the Library path:-

· Start Visual studio 2008 and open your project.

· Go to Tools > Options…

· On the popped-up ‘options’ window, towards left, select and expand the directory ‘Projects and Solutions’. In the expanded list select ‘VC++ Directories’.

· Now towards the right of ‘Options’ window, click on ‘Show directories for:’ dropdown list and select ‘Library files’.

· Now in the window below, include the path of the Xerces-C++ ‘lib’ directory (Example: C:\xerces-c-3.0.1-x86-windows-vc-8.0\xerces-c-3.0.1-x86-windows-vc-8.0\lib). To do this, click just below the last included path. With this a cursor appears, where we can type the path, or we can even include the path by clicking on the ellipsis button at the end of the line and browse to the Xerces ‘lib’ directory.

· Finally click ‘Ok’.

2) Set the Include path:-

· Follow the first 3 instructions of the previous step.

· Now towards the right of ‘Options’ window, click on ‘Show directories for:’ dropdown list and select ‘Include files’.

· Now in the window below, include the path of the Xerces ‘include’ folder (Example: C:\xerces-c-3.0.1-x86-windows-vc-8.0\xerces-c-3.0.1-x86-windows-vc-8.0\include). To do this, click just below the last included path. With this a cursor appears, where we can type the path, or we can even include the path by clicking on the ellipsis button at the end of the line and browse to the ‘include’ directory.

· Finally click ‘Ok’.

3) Copy the two DLL’s, ‘xerces-c_3_0.dll’ and ‘xerces-c_3_0D.dll’ available in “bin” folder (Example: C:\xerces-c-3.0.1-x86-windows-vc-8.0\xerces-c-3.0.1-x86-windows-vc-8.0\bin) and put It in the system’s Windows folder. (i.e. C:\Windows)

Build and Run the application.

Thursday, September 17, 2009

Differenciating between Platform, Framework and Middleware

Introduction.

We all have used the terms Platform, Framework and Middleware at some point. These three are very necessary as they support the applications we develop and deploy, work as expected. Many a times we normally use these terms interchangeably, but that’s incorrect. Here we attempt to draw boundaries, between these three terminologies.

Definition

Think, you are developing a application, a PLATFORM is one, which provides a base to deploy and run your application, a FRAMEWORK is one which help design, develop and bind together different components to your application, a MIDDLEWARE is one which provides wide variety of services to the application from outside.

Description

Platform: A platform could be hardware architecture and some software, on top of which other applications operate. Hardware architecture is base to any software. More precisely, hardware platform refers to the processor and other hardware devices existing in any computing machine. Upon this hardware we have operating system and other application program. The software platform, for example an operating system forms the base for all other software’s to operate.

Platforms support the application programs by providing some of the following features. They include multi-tasking, memory management, access to disk and file systems, networking, security and several other functions.

Common Examples: Operating software, programming languages, compilers, runtime libraries, Java virtual machine etc.

Framework: A software framework could be a collection of support programs, a scripting language, code libraries and any other software, which help develop and bind together, different components of the software project.

Each library provides a specific functionality. More libraries the framework includes more functionality it provides. The functions provided by the framework are exposed through API’s.

The framework design is highly flexible and reusable. It facilitates software design & development, allowing designers and programmers, denote more time on actual requirement development.

Choosing the best framework for a project often requires a programmer to balance between

(i) How much functionality they get from the framework

(ii) The flexibility they are left with.

The original framework will become a part of the application being developed. I mean, if we ship the application, we ship it along with the framework. There is always a tight bonding between the application and framework it is using.

Examples: Wiki, Blogspot, Java spring framework, Struts framework

Middleware: A middleware provides services to an application. As the name tells, it acts as a mid-level agent, between the service provider and the service consumer. Also, we can say it acts as a glue or mediates between two or more already existing applications.

The middleware allows applications to communicate with one another, where either of the application runs on different platforms and could come from different vendors.

Common services provided by a middleware include, allow programs to establish access to multiple databases, provide messaging services that allow multiple applications to communicate.

Middleware supports your application from outside. That means, our application is not tightly coupled with any of the middleware, instead out application just uses some of its services.

Types of Middleware: Object Request Broker (ORB), Transaction Processing (TP) Monitors, Remote Procedure Call (RPC) systems, Enterprise Service Bus (ESB), Application Servers.

Example: Suppose we need to develop a Content Management System (CMS) that helps to keep all the data related to a particular project at one place. A freely available and widely used CMS is Wiki. Wiki is available in different versions. One has to download the available wiki framework and modify according to the requirements.

Also the wiki can work on many platforms; I mean many different operating systems supports wiki. But it is dependent on one such operating system. The basic framework that we download has to be deployed first, for which we need a operating system platform.

Now we need to make modifications to the wiki framework, add more code, update with new pages such that it suits our requirements. Once the application is ready, data is stored and accessed.

Now, we need to host the wiki, so it is accessible for all over the internet. To host the wiki application across a distributed network, we need certain other external applications like Web Servers and Application servers. So here we say, that these external applications which provides services to the wiki application, by hosting over the network, constitutes for the middleware.

More Information @:

http://www.hildeberto.com/2008/10/platform-versus-framework_12.html

http://www.hildeberto.com/2009/05/what-is-middleware-platform-framework.html

Friday, August 7, 2009

Configuring Boost C++ Library with Visual Studio 2008

I) Download Boost C++ Library

The latest release of Boost library is Version 1.39.0, released in may 2009. This release has the following new libraries and updates over its previous version, Version 1.38.0.

New Libraries : Signals2.

Updated Libraries : Asio, Flyweight, Foreach, Hash, Interprocess, Intrusive, Program.Options, Proto, PtrContainer, Range, Unordered, Xpressive. Updated Tools: Boostbook, Quickbook.

Download path: http://www.boost.org/

II) Integrating Boost C++ libraries with Visual studio 2008

Integration involves two steps. This makes the application utilize the facilities of Boost C++ libraries, and be fully functional.

1) ‘Including’ Boost directory path:-

Steps:-

a) Launch Visual studio 2008.

b) Click on ‘Tools’ menu & select ‘options…’

c) On the popped-up ‘options’ window, towards left, select and expand the directory ‘Projects and Solutions’. In the expanded list select ‘VC++ Directories’.

d) Now towards the right of ‘Options’ window, click on ‘Show directories for:’ dropdown list and select ‘Include files’.

e) Now in the window below, include the path of the Boost C++ ‘root’ directory. To do this, click just below the last included path. With this a cursor appears, where we can type the path, or we can even include the path by clicking on the ellipsis button at the end of the line and browse to the root directory.

f) Finally click on ‘Ok’.

2) ‘Linking’ the Boost libraries with the project.

Steps:-

a) In ‘Solution Explorer’, right click on the project folder and select properties.

b) Now the project properties window pops-up.

c) Towards the left of the properties window, select and expand ‘Configuration properties’ directory.

d) Now select and expand ‘Linker’ directory and click on ‘General’.

e) Now to the right of the ‘Project property’ window, select the property ‘Additional Library directories’ and add the path of Boost C++ Library directory.

(Example: ‘C:\Program Files\boost\boost_1_38\lib’).

f) Finally click ‘Apply’ and ‘Ok’.

III) ‘Build’ and ‘Run’ your application.

Microsoft Pre-defined macros

_MSC_VER

This is the predefined macro, which identifies the Micro

Soft Compiler VERsion. It comprises of the major and minor number components of the compiler’s version number.

Open your Visual studio Command Prompt and type in “cl/” and hit enter. The output in my system is shown below

.

So, the VC++ compiler version of my system is 15.00.21022.08. In this period delimited version number, the major number corresponds to the first component , 15 and the minor number corresponds to the second component, 00. So for Visual studio 2008, the _MSC_VER macro evaluates to 1500.

Below are a couple of examples of the usage of _MSC_VER macro in programming.

Example1:

#ifdef _MSC_VER

//if it is any version of MicroSoft Compiler, the below main() function

// is executed. Else this portion of code will be inactive.

int main(int argc, char* argv[])

{

//some come

return 0;

}

#else

//if it is any other compiler other than MicroSoft, the below main()

//function is executed. Else this portion of code will be inactive.

int main(int argc, char* argv[])

{

//some come

return 0;

}

#endif

In the above code snippet, it is shown that it has two ‘main()’ functions. But out of these two, at any point, only one will be active and the other is totally inactive. The compiler only identifies the main() function relevant to it. There by this does not result in any compiler error.

Example2:

#if (_MSC_VER >= 1400)

//VC 8.0: Executes this part of the code if the Compiler is VC 8.0

// and above.

#elseif (_MSC_VER >= 1310)

// VC 7.1: Executes this part of the code if the Compiler is VC 7.1.

#elseif (_MSC_VER >= 1300)

// VC 7.0: Executes this part of the code if the Compiler is VC 7.0.

#else

// VC 6.0: Executes this part of the code if the Compiler is VC 6.0.

#endif

In the above example a distinction is made between the various versions of Microsoft compiler. So based on the compiler version that part of the code executes and not all.

Thursday, December 25, 2008

Need for Service Oriented Architechture

Need for integrating an existing business model with new business model: Upgrading the existing business model is a need to adapt to the new customer bases and business partners. Sharing the IT system with another organization is the new trend in business. A practical example could be any online auction sites like the ebay where other third party organizations will register and try to sell their products their by increasing their customer base. In this direction SOA offers a cost effective solution. Legacy systems developed based on a earlier business model might need to be upgraded in order to integrate with the systems developed with new business models. The complexity of this whole process is the biggest challenge for the organizations.

Need for reusability: SOA implements functionalities as services. Each service describes a unique functionality. Organizations IT system is composed of a collection of these services, each one of which can evolve and change.This can be better explained with the following example. Assume there is an iphone for auction. This iphone could be available for auction either through ‘ebay’ or ‘sedo’ or ‘bidz’ or any other auction sites. When users click on this iphone link through any of these auctioning sites, in all scenarios it has to be redirected to the same web page which gives the details of the auction. This single web page which describes the product can be implemented as a service. Here the single web page service is used by multiple auction sites.

Need for Agility:   The ability to adapt rapidly, and taking advantage of change. For example, when a new opportunity arrives (e.g., a new product offering) or a business condition changes (e.g., a merger), companies need technology solutions to support this changing environment. By service enabling systems – grafting an XML and Web services interface onto existing applications – executives can access data that they need to make decisions more quickly, and firms can service their customers more effectively than before.

Efficiency:  Leveraging existing resources as much as possible. It is financial burden for the organization to reinvest time and money to recreate existing software, whether decades-old mainframe, 10-year-old client/server, or two-year-old Internet computing applications. By service-enabling these systems, companies can keep them in place but make it easier to access them or integrate them with other applications. This is achieved, where SOA provides an interface for all the systems, suitable for communication with other systems involved in the process. SOA can even create new solutions by combining existing service-enabled applications into more comprehensive, multiservice solutions called composite applications

Terminologies

Legacy system: is an old computer system or application program that continues to be used because the user does not want to replace or redesign it.

Business model: is a conceptual tool that contains a big set of elements and their relationships and allows expressing the business logic of a specific firm.

Also, a business model is simply a working description that includes the general details about the operations of a business. 

Customer base: is the group of current clients and consumers that a business serves.

Friday, July 25, 2008

Service Oriented Architechture

Introduction

Services-Oriented Architecture (SOA) is a software architecture where functionality is grouped around business processes and packaged as interoperable services. SOA also describes IT infrastructure which allows different applications to exchange data with one another as they participate in business processes. The aim is a LOOSE COUPLING of services with operating systems, programming languages and other technologies which underlie applications.

SOA separates functions into distinct units, or services, which are made accessible over a network in order that they can be combined and reused in the production of business applications. These services communicate with each other by passing data from one service to another, or by coordinating an activity between two or more services.

Overview

Companies have long sought to integrate existing systems in order to implement information technology (IT) support for business processes that cover all present and prospective systems requirements needed to run the business end-to-end. A variety of designs can be used to this end, ranging from rigid point-to-point electronic data interchange (EDI) interactions to Web auctions. By updating older technologies, such as Internet-enabling EDI-based systems, companies can make their IT systems available to internal or external customers; but the resulting systems have not proven to be flexible enough to meet business demands. A flexible, standardized architecture is required to better support the connection of various applications and the sharing of data. SOA is one such architecture.

Services

SOA unifies business processes by structuring large applications as an ad hoc collection of smaller modules called services. A service could be; filling out an online application for an account, viewing an online bank statement, or placing an online booking or airline ticket order.

Services are intrinsically unassociated units of functionality, which have no calls to each other embedded in them. Instead of services embedding calls to each other in their source code, protocols are defined which describe how one or more services can talk to each other. This architecture then relies on a business process expert to link and sequence services, in a process known as orchestration, to meet a new or existing business system requirement. The new applications built from a mix of services from the global pool which exhibit greater flexibility and uniformity.

Connections

The technology of Web services is the most likely connection technology of service-oriented architectures. Web services essentially use XML to create a robust connection.The term "Web Services" can be confusing. It is, unfortunately, often used in many different ways.
Here, the term Web Services refers to the technologies that allow for making connections. Services are what you connect together using Web Services. A service is the endpoint of a connection. Also, a service has some type of underlying computer system that supports the connection offered. The combination of services - internal and external to an organization - make up a service-oriented architecture.

Related Descriptions

Business process

A business process or business method is a collection of interrelated tasks, which accomplish a particular goal.

There are three types of business processes:

  1. Management processes, the processes that govern the operation of a system. Typical management processes include "Corporate Governance" and "Strategic Management".
  2. Operational processes, processes that constitute the core business and create the primary value stream. Typical operational processes are Purchasing, Manufacturing, Marketing and Sales.
  3. Supporting processes, which support the core processes. Examples include Accounting, Recruting, IT-support.
A business process begins with a customer’s need and ends with a customer’s need fulfillment.

Orchestration (computers)

Orchestration describes the automated arrangement, coordination, and management of complex computer systems, Middleware, and services.