Search This Blog

Monday, June 28, 2010

History of WCF

Share
Why we go for WCF?

    To know the answer for this question we should know how WCF evolved. The history begins from

            COM-->DCOM-->.Net Remoting-->Web Services-->WCF

•    COM- Component Object Model:
              Microsoft developed COM to enable applications to interact with each other and to promote reusability. The advantage of using COM is that different components developed in different languages can write these software components and interact with each other by using IUnknown and other standard COM interfaces. Though COM provides the ability to reuse the components locally, it was not designed to work well with remote components.

•    DCOM- Distributed Component Object Model:
              The need for remote method invocations grew substantially which led to the development of DCOM by Microsoft. This essentially is a combination of COM and the network protocol that allows you to run a COM object on a remote computer. DCOM provides an opportunity to distribute your component across different locations according to the application requirements. In addition, DCOM provides basic infrastructure support such as reliability, security, location independence, and efficient communication between COM objects that are residing across processes and machines. The main disadvantage of DCOM is, it is built only to communicate with .net application and Windows platform which makes it not suited for heterogeneous environments. Also its client is tightly coupled with the server.
•    .Net Remoting:
             Microsoft .NET came up with a vision to be more connected than ever. It wanted to deliver software as a “service” and also resolve issues related to COM. The release of .NET was termed as the biggest revolution ever on the Microsoft platform after the introduction of Windows. .NET Remoting is one of the ways to create distributed applications in .NET. Developers now have additional options such as XML web services and service components.

           .NET Remoting delivers on the promises of easy distributed computing by providing a simple, extensible programming model, without compromising flexibility, scalability, and robustness. It comes with a default implementation of components such as channels and protocols, but all of them are pluggable and can be replaced with better options without much code modification. Not only does .NET Remoting enable communication between application domains, but it also can be extended across processes, machines, and networks. Similarly .Net Remoting too suffers from some vital pitfalls like it is proprietary to .NET and works seamlessly to exchange data between two .NET applications. .NET Remoting suffers from the issues of load balancing because it is not intelligent enough to shift a request from a busy application server to one that is not as busy.

•    Web Services:
               Web services are not just another way of creating distributed applications. The distinguishing factor of web services from other distributed technologies is that rather than relying on proprietary standards or protocols, web services rely on open web standards (such as SOAP, HTTP, and XML). XML web services are designed with interoperability in mind and are easily callable from non-Windows platforms. Through web services, Microsoft wants to achieve the best of both worlds—Web development and component-based development. Web services were the first step toward service orientation, which is a set of guiding principles for developing loosely coupled distributed applications. Since a web service and its clients are independent from each other, they need to adhere only to the XSD and WSDL document standards in order to communicate.

•    WCF- Windows Communication Foundation:
                The next Microsoft offering to address SOA is WCF. It complements Web Services and distributed applications and enhances their values. Work on WCF started with the release of .NET. Microsoft unveiled this technology at the Microsoft Product Developers Conference 2003 in Los Angeles, California. In other words, it has taken years to build and come to market. WCF is the first programming model built from the ground up to provide explicit service-oriented application development and ready-to-face-the-future business orientation. AWCF application not only interoperates with applications running on other platforms but also integrates with other distributed programming models that Microsoft has come up with over the past ten years.

All the above reasons put to the evolution and need for WCF.