Behind the Scenes: Microsoft Developer Solutions
When it comes to looking at developer tools, add-ons and environments for the Windows platform, it’s important to note that Microsoft casts a long shadow. As the source of all the software and many of the tools, Microsoft has had the luxury of deciding what’s important, and what kinds of tools and interfaces are most likely to be imitated, if not used outright, in the aftermarket that develops software for the Windows platform. Thus, ample coverage of Microsoft products, languages and technologies is not a function of bias—it’s a necessity dictated by the 800-pound gorilla’s commanding position on this terrain!
What’s In a Developer Solution?
The term “developer solution” is somewhat vague, and might be best understood as providing one or more (and even all, in some cases) of the components, tools and utilities that a software developer would use to create, maintain or package software for distribution. Perforce, this covers a multitude of activities and capabilities, including:
- Programming languages in which code that defines software ultimately will be expressed. Options for the Microsoft Windows environment are nearly unlimited, but Microsoft’s languages of choice include Visual Basic .NET and Visual C# .NET, along with Visual C++ .NET and a special reworking of the Java programming language that Microsoft calls Visual J# .NET.
- Visual design and development tools that permit programmers to arrange and link objects, code elements, code library references and other items to describe and create software.
- Source-control systems that catalog, track and manage individual software components, and also support description of individual threads used to describe particular software builds or releases. Release packaging and management tools also generally plug into, or are part of, such environments.
- Testing and debugging tools that inspect code to generate automated tests, accept and manage programmer-built tests and handle updates that come from changes made as a result of testing and debugging. This category also includes tools that permit developers to step through code execution at various levels of granularity to look for errors and help diagnose and repair them as they’re found.
- Libraries of predefined objects, classes and services, or well-defined and well-documented application programming interfaces (APIs) that provide access to pre-defined objects, classes and services. Where libraries can often be extended or customized by their owners, APIs generally do not permit such arbitrary manipulation. Most modern development efforts make extensive use of both libraries and APIs.
Indeed, one also can include more specialized tools in this large and very general category (such as converters that translate code, plug-ins for various database, e-commerce or collaboration services, and so forth), but these capture the essence of what most such tools offer and do.
What’s Behind the Solution Curtain?
There’s another set of topics that help drive how developers choose tools and languages, and what kinds of interfaces and extensions they’ll employ to help them get the development job done. In the Microsoft world, this generally refers to an operating system component (an extension, really) known as the Microsoft .NET Framework, which is used to build and run modern Windows-based applications. A deep understanding of .NET takes a while to form for most people, but it’s possible to approach this combination of business strategy, development philosophy and a huge collection of tools, services and components from Microsoft as a way to “Webify” computing. That is, Microsoft envisions .NET as a way to reach out onto the Web for computing services and data access that might otherwise require more conventional, client-server applications and direct network access. That explains why the .NET platform includes all kinds of servers (database, collaboration, e-commerce, Web), numerous building-block elements (Web-based storage, file system extensions) and support for all kinds of devices that go beyond typical desktop and laptop computers to include PDAs, cell phones and other items. Passport is another key component of .NET, and provides a single sign-on that is also a consistent proof of user identity from one .NET-compliant application or service to the next.
In the long term, the .NET Framework is designed to provide numerous kinds of advanced computing capabilities, including:
- The ability to enable numerous types of devices to work together, with data automatically synchronized and updated across the entire range.
- Sophisticated interactivity on Web sites, especially as based on the extensible markup language (XML).
- Premium online software subscription services that include access to managed e-mail, services and applications (such as Microsoft Office .NET).
- Centralized storage and backup of all information to improve efficiency and enhance ease of access for all kinds of devices.
- Integration of various communications media, including e-mail, faxes and voice communications.
- The ability for developers to create reusable modules, increase productivity and reduce the possibility of errors. (To some extent, this is already being realized with third parties selling all kinds of add-ons and plug-ins for the .NET environment, as well as commercial object and class definitions, and code that uses them).
Abstract Data Representations
For multiple applications and services to easily and painlessly exchange data, it’s necessary for developers to use (and sometimes specify and design) standard representations that any consumers and producers of such data can understand. This is another great strength of XML, and with literally thousands of XML-based standards now in existence for everything from anatomy to zoology (and many more commercially useful forms of data), it helps to explain Microsoft’s enthusiastic adoption and use of this technology.
To its own benefit, Microsoft already uses XML-based data representations for system configurations, security updates and service packs, as well as for applications like the Microsoft Baseline Security Analyzer (MBSA) and the Windows Update and automatic update services. Likewise, all Microsoft Office standard file types and formats are captured in formal XML document definitions that can handle all content, syntax and data from such files in purely abstract form.
Though its benefits for more ordinary applications may not be immediately obvious, even a cursory examination of its developer certifications—the Microsoft Certified Application Developer (MCAD) and the Microsoft Certified Solutions Developer (MCSD)—shows numerous elements that focus on XML topics. These include specific, topical coverage in exams #70-310 and #70-320, which focus on developing XML-based Web services and server components with Visual Basic .NET and Visual C# .NET, respectively. Not coincidentally, these exams also feature the most in-depth coverage of the .NET Framework.
Do-It-All Packages Are Development Environments
While Microsoft may not be the only vendor that offers a do-it-all development environment and tool set, Visual Studio .NET not only takes a kitchen-sink approach to offering developer support and services, it also integrates well with Microsoft programming languages, APIs and other tools as well. That probably explains why it’s a core element in many Microsoft developer operations, even when it’s enhanced or augmented by third-party offerings.
Visual Studio 2003, the most current version, comes in various “flavors”:
- Visual Studio .NET Academic: Same core features and functions as the Professional version, except with instructional features and special collaboration capa