40 likes | 241 Views
Windows Programming Environments. Jim Fawcett CSE775 – Distributed Objects Spring 2007. Windows Programming Environments. Win32 API:
E N D
Windows Programming Environments Jim Fawcett CSE775 – Distributed Objects Spring 2007
Windows Programming Environments • Win32 API: • virtually all of the programming functionality directly or indirectly used in any Windows program, e.g., I/O, windows, controls, threads, sockets and other IPC, memory management, device management • C++ Std Libraries: • Console I/O, file abstraction, math, STL containers …, memory allocation, … • Visual Studio Libraries and Facilities: • Dialog designers, thread abstraction, COM related wrappers – smartpointers, BSTRs, … • COM Libraries and Run-Time: • Support for component models, e.g., definition of interfaces, management of lifetime, image packaging in DLLS and EXEs, persistence, structured storage, RPC … • ATL Libs: • Wrappers around COM that simplify its programming model, wrappers for COM types and smart pointers • WTL: • Wrappers around Win32 windows and controls that provide a light-weight GUI framework • MFC: • Classes, macros, and data structures that support the development of GUI applications in a heavy weight framework • .Net Managed Environment: • New execution model, wrapping of most of the Win32 API, library facilities that cover most of the C/C++ library functionality in a manner consistent with its managed environment, WinForms - a medium weight GUI framework
Strengths of Each Environment • Win32 • Natively provides windows, controls, memory management, process management, threads, directory and file management, access to Registry. • C++ • Widely supported and powerful object model, very well designed abstractions for console I/O, file management, containers, math. • Visual Studio Libraries • Smoothly integrates into all the Windows programming environments. Supports a COM-based programming model. • COM • Early and effective support for Component Engineering, allowing modifications to parts of large complex systems without rebuilding the entire system. • ATL • Efficiently and effectively hides a lot of COM’s complexity and weak encapsulation. • WTL • Very light weight and flexible wrapping of Windows many GUI facilities. Integrates well with ATL programming model. • MFC • Rapid development of complex user interfaces, provided that you want to use its models. • .Net Managed Environment • Elegant and well encapsulated wrapping of most of the Win32 API. Provides a very easy to use GUI framework, supports managed code.
What Environments Lack • Win32 • No objects directly usable by applications • Byte and address oriented, no high-level types • C++ • No threads, sockets, directory management, windows • Visual Studio Libraries • Just support for other programming environments • COM • Weak object model - no inheritance of implementation, very limited types, weak encapsulation • Weak networking, no windows • ATL • Weak windowing, no networking other than COM’s limited facilities. • WTL • Focuses exclusively on providing support for GUIs, not supported by Microsoft • MFC • Focuses mostly on providing support for GUIs with a ridgid architectural model • .Net Managed Environment • Requires run-time and libraries not found by default on Windows systems (that will change with Vista), uses a shallow reference object model, not ideal for some applications, e.g., scientific programming and memory intensive applications like medical imaging.