The Queued Components feature takes advantage of Microsoft Message Queuing Services (MSMQ) to let server components logically participate in transactions while unavailable or offline. (MSMQ is described in detail in the next section of this paper.) This allows standard COM components to use MSMQ to deliver asynchronous capabilities. While developers can use MSMQ to write applications that use the capabilities provided by queued components, such development is relatively labor-intensive. Programming with queued components is much faster, and does not require the developer to learn new techniques.
Queued components are typically used for communications between two servers Requests that affect a queued component are transparently recorded, queued, and played back at a later time when the requested component becomes available. Such a model is particularly useful on unreliable networks or in situations where one of the servers isn’t always connected to the network. Queued components can execute immediately if the servers are connected; otherwise, the component can hold execution until a connection is made.
Object Pooling
Object pooling is an automatic service provided by COM+ that lets application developers configure a component so that instances of it are kept active in a pool, ready to be used by any client that requests the component. Developers can administratively configure and monitor the pool maintained for a given component, specifying characteristics such as pool size and creation request timeout values. Once the application is running, COM+ manages the pool, handling the details of object activation and reuse according to pre-specified criteria.
Developers can achieve significant performance and scalability benefits by reusing objects in this manner, particularly when they are written to take full advantage of reuse. Object pooling lets developers:
Speed object use time for each client, factoring out time-consuming initialization and resource acquisition from the actual work that the object performs for clients.
Share the cost of acquiring expensive resources (such as database connections, sockets, and so on) across all clients.
Pre-allocate objects at application startup, before any client requests come in.
Administratively configure pooling to take best advantage of available hardware resources—the pool configuration can change as available hardware resources change.
Speed reactivation time for objects that use just-in-time (JIT) activation, while deliberately controlling how resources are dedicated to clients.
COM+ Events
Also known as the publish and subscribe events service or Event Notification, COM+ Events is a programming tool that lets application developers write application code (called publishers) that can notify client-side application code (called subscribers) when a particular event happens. For example, COM+ Events can be helpful to developers using queued components to help guarantee delivery of queued tasks.
COM+ Events uses a multicasting publish/subscribe event mechanism that lets multiple clients subscribe to events published by various servers. The COM+ Events system maintains an event database with information about various events, publishers, subscribers, and individual subscriptions.
To see how this works, look again at the order entry application described earlier. Using COM+ Events, the product inventory server can publish a notice when inventory levels on popular items drop below a certain level. Developers writing applications for the purchasing department—or any other areas of the company that are affected by inventory conditions—can readily use this information in their applications by subscribing to the inventory software event notification service.
Message Queuing with msmq
MSMQ, a separate technology introduced in the Windows NT 4.0 timeframe, complements the capabilities inherent to COM and transaction services. Because all the steps of an application process may not need to be completed at one time, many distributed applications need the ability to handle delays between a request and a response. MSMQ allows applications to use components that communicate with one another using queued messages, which is a concept similar to e-mail sitting in an inbox.
Being able to write applications that don’t require immediate responses from either clients or servers lets developers provide the flexibility required to handle routine pauses within business processes. Using this service also helps developers write applications that are more readily available and more scalable.
How MSMQ Works
Figure 6: Message Queuing Services
When developers write components that take advantage of MSMQ, their application can send messages to another application without waiting for a response. Those messages are sent into a queue, where they are stored until a receiving application removes them. If a response is expected, the sender can check a response queue when convenient.
Message queuing is a flexible, reliable approach to communication—one that's appropriate for many kinds of applications. Developers don’t have to think about the details, and the system architecture takes care of the queuing processes even if the client and server aren’t running at the same time.
For example, a developer can use MSMQ to write an application that will let customers submit orders over the Internet, even when the receiving Web server isn’t available. Message queuing can also be used to make back-end processing more efficient. For example, when a customer places an order, not all parts of the order need to be processed right away. In the example described earlier, the shipping department does not have to receive the customer order before the rest of the transaction can be completed. Using MSMQ, the order entry application can continue running even if the shipping application isn’t available.
When an order is completed, an order entry component sends a message to a warehouse indicating that the order should be packaged and shipped. Because there’s no need for the component to wait for the order to be sent off, this request is made using MSMQ. When convenient, an application in the warehouse then extracts orders from a queue and ensures they are filled. Developers can use transaction services with MSMQ to ensure that the transaction completes properly.
MSMQ Features
MSMQ features that support the capabilities described above include:
COM-based access. The services of MSMQ can be accessed through a simple interface provided by COM components. This setup makes it straightforward to send and receive messages from within an Internet Information Service Active Server Page script, a transactions-based application or any software that can use COM.
Integration with transactions. MSMQ operations can automatically enlist in transactions to preserve data integrity.
Automatic message journaling. If requested, MSMQ will keep copies of messages sent or received by applications. Journals provide audit trails and can also make recovering from some kinds of failure easier.
Automatic notification. If requested, MSMQ can notify a sending application that messages were (or were not) received and processed correctly. This service lets sending applications know when they can treat messages as delivered or, if failures occur, when they must take corrective action.
Built-in data integrity, data privacy, and digital signature services. MSMQ can digitally sign and encrypt messages for transfer across the network. This capability protects messages from being viewed or changed during transmission, even when sent over public networks such as the Internet, and ensures that servers do not receive messages from unauthorized senders.
Message priority support. MSMQ allows priorities to be assigned to messages and queues, then routes and delivers messages based on these priorities. Priorities let applications handle the most important messages first.
Simplified application integration. MSMQ greatly reduces synchronization requirements between applications because message contents are easy to translate, and message-based interfaces hide the differences between different application architectures and database technologies.
Network protocol independence. All MSMQ features and functions operate independently of network protocols. Any application that knows the name of another application request queue can send requests and receive responses regardless of network type.
By providing flexible, reliable asynchronous communications between component-based applications, MSMQ plays a critical role in Microsoft component services for Windows NT 4.0. With Windows 2000, MSMQ services are even more tightly integrated with the COM programming model, as discussed in the COM+ section of this paper.
Data Access and XML
Windows 2000 Server provides high-performance access to all types of information (including relational and non-relational data) across an organization from the desktop to the enterprise. The following data access specifications are supported in Windows 2000:
ODBC. ODBC is the most widely used interface for accessing structured data. ODBC lets applications developers easily access data in over 50 different databases including Microsoft SQL Server, Oracle, Sybase, Informix, DB2, and many others.
OLE-DB. OLE DB is the Microsoft low-level interface to data across the organization. OLE DB is an open specification designed to build on the success of ODBC by providing an open standard for accessing all kinds of data.
ActiveX® Data Objects. Active Data Objects are a language-neutral object model, which expose data raised by an underlying OLE DB Provider. The most commonly used OLE DB Provider is the OLE DB Provider for ODBC Drivers, which exposes ODBC Data sources to ActiveX Data Objects.
RDS. Remote Data Service is used to transport Active Data Object Recordsets from a server to a client computer. The resulting recordset is cached on the client computer and disconnected from the server. RDS uses a subset of the ActiveX Data Objects model, the ADOR.Recordset, to provide a low-overhead, high-performance way to marshal recordset data over a network or web.
CDO. Collaboration Data Objects are a set of COM objects that provide access to data stored in Exchange.
XML
Windows 2000 Server supports a full range of industry standards to allow you to build applications that integrate with databases, mail servers, XML, and other existing systems. XML is particularly important, because just as HTML lets developers describe the format of a Web document, XML lets them describe complex data structures. Developers can share this information across a variety of applications, clients, and servers. Using the new Microsoft XML Parser, developers can create applications that enable their Web server to exchange XML-formatted data with both Microsoft Internet Explorer and any server capable of parsing XML. Using ActiveX Data Objects 2.5, developers can also access databases and work with ASP pages using XML-enabled code.
Windows 2000 Infrastructure services
Organizations that build applications on the Windows 2000 platform can take advantage of integrated system services and capabilities. In addition to broad programming language support, Windows 2000 provides the performance, management, reliability, scalability, security, and interoperability required for the increasingly diverse application development requirements faced by today’s businesses.
This section provides a brief overview of these Windows 2000 platform infrastructure capabilities. Readers interested in learning more about these aspects of Windows 2000 will find links to helpful resources at the end of this paper.
Performance, Scalability, and Reliability
Windows 2000 Server introduces new levels of performance, scalability, and reliability, which can bring immediate benefits to applications—whether or not those applications were written to take advantage of specific Windows 2000 features. The tight integration between the application services: COM+, MSMQ, and IIS 5.0, and the operating system itself, help to magnify the performance gains throughout applications that use the COM+ technologies.
Programming and Language Support
By integrating COM+, Windows 2000 provides developers with a language neutral approach to building and deploying distributed applications. This lets developers take advantage of the skills and tools they already use, and build distributed, Web-enabled applications in the same way they build stand-alone Windows applications.
Developers can build and reuse components written in Microsoft Visual Basic, C++, Java, and any other language that can generate a COM component. Because Windows 2000 DNA Services relies on a comprehensive and integrated set of services provided by the Windows platform, developers are free of the burden of building or assembling the required infrastructure for distributed applications and can focus on delivering business solutions.
Interoperability
Today's corporate computer environments are often heterogeneous: Many rely on several network operating systems that must interoperate with both newer, intranet client/server environments and legacy computers and applications.
The Microsoft interoperability strategy is based on a four-layer framework that covers network, data, applications and management integration. By supporting key standards, Microsoft is committed to ensuring that the Windows 2000 Server operating system can interoperate with existing platforms and technologies.
Specifically, Windows 2000 Server lets developers create applications that can:
Communicate with other operating systems using common protocols. Using TCP/IP as a core protocol, a Windows 2000-based server is able to communicate with UNIX and NetWare systems natively over enterprise networks and the Internet.
Access file shares and printers regardless of environment. Windows 2000 Server provides the services to allow file and print sharing with NetWare, UNIX, Macintosh, and IBM (with SNA Server).
Reduce the burden of administering multiple systems. With the Active Directory service, organizations can unify and manage the multiple namespaces that now exist in corporate networks—an efficiency that delivers the high level of interoperability required for administering heterogeneous software and hardware environments
Directory Services
The Active Directory service is the integral directory service within the
Windows 2000 operating system. It provides a centralized location to store information about people and resources on a distributed network. Developers can use a number of standard interfaces to write applications that use information stored in the Active Directory service about users, other applications, and devices. This can help them write dynamic applications that are simpler to develop and easier to manage.
Because Active Directory is based on standard directory access protocols, such as Lightweight Directory Access Protocol (LDAP), it can interoperate with other directory services employing these protocols. Several application programming interfaces (APIs)—such as Active Directory Service Interfaces (ADSI)—give developers access to these protocols. All Active Directory functions are available through LDAP, ADSI, and MAPI for extending and integrating with other applications, directories, and devices.
ADSI gives developers access to multiple directory service providers through an open set of interfaces. Applications written to ADSI will work with any directory service that offers an ADSI provider. For example, with ADSI, applications can access LDAP, NDS, Active Directory, and other directories with ADSI interfaces as long as the appropriate service providers are available.
Security
Windows 2000 Server includes security services for enterprise-wide network authentication. Developers can build secure intranet, extranet and Internet sites using the latest standards, including 56-bit and 128-bit SSL/TLS, IPSec, Server Gated Cryptography, Digest Authentication, Kerberos v5 authentication, and Fortezza. Because the security infrastructure is integrated into the core of Windows 2000, all Web and Application Services can take advantage of it. From the kernel, through services and applications, all the way to databases on the backend, Windows 2000 provides easy to manage, single-source, high security.
Beyond Windows 2000: Windows DNA 2000
The application services described in this paper, plus other capabilities such as file and network services, let Windows 2000 provide the foundation for the Windows DNA platform (Windows DNA 2000). The Windows DNA 2000 architecture provides a blueprint that helps developers design and build distributed business applications using technologies that are integral to the Windows 2000 platform.
With Windows DNA, the idea of a platform extends beyond the Windows 2000 Server operating system to include a programming model, tools, database, and application services. Windows DNA 2000 defines a common set of services, including components, Dynamic HTML, Web browser and server, scripting, transactions, message queuing, security, directory, database and data access, systems management, and user interface. These services are exposed in a unified way through COM, enabling applications to take advantage of them easily.
Windows DNA 2000 addresses requirements at all tiers of distributed applications—presentation, business logic, and data, helping developers:
Create robust, scalable, distributed applications using the Windows 2000 platform.
Extend existing data and external applications to support the Internet.
Support a wide range of client devices to maximize the reach of an application.
Windows DNA 2000 enables developers to build tightly integrated applications using familiar tools. Because Windows DNA uses the comprehensive and integrated set of services provided by the Windows platform, developers are free of the burden of building or assembling the required infrastructure for distributed applications. The heart of Windows DNA is the integration of Web and client/server application development models through COM.
Windows DNA 2000 also describes how the family of Microsoft application development products fits together, including Microsoft Windows 2000, Microsoft Visual Studio® development system, Microsoft Exchange Server, Microsoft Commerce Server, and Microsoft SQL Server, as well as new pending products including the next version of Microsoft SNA Server called the Host Integration Server, Microsoft Application Center, and Microsoft BizTalk™ Server (for XML-based business process integration).
Conclusion
The application services in Windows 2000 are the result of years of refinement to meet the requirements of developers who are writing increasingly sophisticated distributed applications. These services have evolved from addressing stand-alone personal computers in the early 1990s to supporting today’s diverse distributed networks with multiple servers and large numbers of clients.
IIS 5.0 provides the Web access essential to many new applications. The IIS 5.0 Web server works hand in hand with the component-based application services in Windows 2000.
At the heart of the Windows 2000 application services is the Microsoft Component Object Model (COM). The COM technologies provide a mature foundation for component-based development, and the majority of Windows-based application use COM in some way. With its integrated services and its development tool support from Microsoft and others, COM is a popular foundation for building distributed applications.
Windows 2000 introduces COM+, which fully integrates transaction services to make it easier for developers to write sophisticated, component-based, Internet-enabled distributed applications. COM+ also provides queued components and event services. These features make it easier to write applications that both allow for routine pauses in business processes and can publish information about activities that can be used by other applications.
COM+, IIS 5.0, and the broad base of application development and integrated infrastructure features including directory, security, and data access services in Windows 2000 provide the technology required to let the operating system act as the foundation for the Windows DNA 2000 platform.
For More Information
For the latest information on Windows 2000, check out our World Wide Web site at http://www.microsoft.com/windows2000
To learn more about Windows 2000 performance, see: http://www.microsoft.com/WINDOWS2000/guide/platform/performance/default.asp
To learn more about the scalability and availability provided by Windows 2000 Advanced Server, see: http://www.microsoft.com/WINDOWS2000/library/howitworks/cluster/asoverview.asp
To learn more about Windows 2000 interoperability, see http://www.microsoft.com/windows2000/guide/server/features/interop.asp
To learn more about writing applications that use the Windows 2000 application services, visit the Microsoft Developers Network Web site at www.microsoft.com/msdn
To learn more about COM, see www.microsoft.com/com
To learn more about Windows DNA, see www.microsoft.com/dna
To learn more about data access, see www.microsoft.com/data
To learn more about XML, see http://msdn.microsoft.com/xml/default.asp
To learn more about Windows 2000 security, see www.microsoft.com/windows2000/guide/server/features/securitysvcs.asp
|