The change in business needs in terms of new solutions required organizations to move towards re-architecting their IT infrastructure. There are several means of re-architecting; one most efficient mean is to follow the Service Oriented Architecture (SOA). SOA differs from any other architecture in the fact that it: (1) provides a methodology and an IT platform, (2) provides a loosely coupled environment, (3) exposes the applications internally and externally and (4) produces well defined, easy to use and meaningful functionalities. SOA is an architecture that considers the service as the building block of composing applications. There are several known SOA technologies such as: Java RMI, CORBA and DCOM, but the most efficient realization of SOA is Web Services. However implementing SOA architecture with Web Services requires IT organizations to evaluate their systems architectures and determine how they will deliver Web services. One aspect of this great issue is to deal with legacy applications which are running smoothly and performing critical tasks, but were built without taking the advent of new technologies. These applications, built at high cost over years, have knowledge locked within them and need to be adapted to SOA. This paper first investigates the approaches to wrap legacy applications to expose them as Web services with respect to SOA architecture. Then, it details the approaches and their usages in the two well-known Web Service environments: J2EE and .Net. Finally, it compares the approaches with respect to some running legacy applications.