Important: |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
Microsoft Corporation
September 2000
Summary:This paper describes the key features of MSMQ on Microsoft Windows CE 3.0, with a comparison to the desktop-based Windows implementation, and provides a variety of message queuing application scenarios. (8 printed pages)
Introduction
Over the past five years, distributed applications have become a
mainstay of enterprise solution providers. As enterprise computing
moves away from the desktop, developers need to provide a way for
distributed applications to communicate when they are running on
mobile, distant devices that may be disconnected at times from any
physical network. Microsoft Message Queuing Service (MSMQ) is a
communication service that provides asynchronous communications,
guaranteed message delivery, efficient routing, and priority-based
messaging to distributed applications. Microsoft Message Queuing Service lets applications communicate
with each other quickly and reliably, even when the applications
are running at different times or across networks and systems that
may be offline at the time the message is sent. To accomplish this,
applications communicate by sending and receiving messages that
contain text or binary data. The message passing is done by means
of the MSMQ API and a message queue, without the applications
having to establish or maintain a communication conduit. This means
that you can create distributed applications without the
programming overhead associated with creating and maintaining
network connections and persistent data buffering. This paper describes the key features of MSMQ on Microsoft
Windows CE 3.0, with a comparison to the desktop-based Windows
implementation, and provides a variety of message queuing
application scenarios. A desktop-based MSMQ configuration consists of a
server, and any number of
dependentand
independent clients. The server provides message storing and
routing, supports local and dependent clients, and maintains a
public queue directory and other information services. The MSMQ
server must be a Microsoft Windows NT 4.0 Server or Microsoft
Windows 2000 Server platform.
Dependent clientsdo not have local storage, which means they
cannot queue outgoing messages and must be connected to the server
at all times.
Independent clientscan store messages and can operate
offline, but they cannot provide routing services. Clients, whether
dependent or independent, can run on any Microsoft Windows
9x, Windows NT 4.0, or Windows 2000 platform. MSMQ on
Windows CE supports independent clients only. Windows CE-based independent clients can operate as clients of a
desktop serve r—or in a peer-to peer, application-to-application
configuration—without need of a server or a domain controller. In the Windows CE independent client model, a single queue holds
messages for both sending and receiving applications. This queue
can be located on the same device as either the sending or
receiving application, or on another device available to both
applications. When the receiving application is restarted or the
network connection is reestablished, the receiving application
reads the messages stored in the queue. The following illustration shows the components of the
independent client architecture. In a client/server configuration, Windows CE independent clients
can send messages to desktop applications and to other Windows CE
clients even when no direct connection is available, by routing
messages through the server. Routing servers can also be used to
deliver messages from Windows CE clients to other clients that are
on a secured domain. Windows CE-based clients do not support:
Windows CE-based devices operate in a wide variety of scenarios,
ranging from stationary devices that are connected continuously to
mobile devices that are usually disconnected even on startup.
Frequently, the sending device and the receiving device run at
different times. One requirement shared by virtually all Windows
CE-based devices is the need for efficiency and a small memory
footprint. The Windows CE MSMQ programming model provides the essential
features of the desktop, optimized for systems that support a small
number of simultaneous connections with a short code path. The
entire persistent state of MSMQ is stored in the registry and the
MSMQ base directory. As a result of these optimizations, MSMQ on
Windows CE requires just 100–150 KB of storage. The following sections describe other key features of the
Windows CE implementation of MSMQ. MSMQ supports two delivery methods:
expressand
recoverable. Express messages are usually faster and consume
fewer resources, but data loss is possible if the computer with the
message queue were to fail. Recoverable messages are slower than
express messages and consume more resources, but they can be
recovered in the event of a system failure. A public queue is one that is registered with a directory
service, such as Microsoft Active Directory™ This allows the MSMQ
application to locate and open a queue anywhere within its domain.
Because Windows CE does not have a directory-service interface, you
cannot create public queues on a Windows CE-based client. The
Windows CE MSMQ service can, however, send messages to public
queues that are located on a desktop computer or server by using an
OutFRS queue. An OutFRS queue is an outgoing queue that points to a Falcon
Routing Server (FRS). The target computer must be a message queue
server capable of routing messages; it cannot be another Windows
CE–based device, or a desktop-independent client. An OutFRS queue
is an outgoing queue that points to a Falcon Routing Server (FRS)
The target computer must be a message queue server capable of
routing messages; it cannot be another Windows CE–based device or a
desktop-independent client. When a Windows CE–based device connects
to an OutFRS server, messages from an outgoing OutFRS queue are
moved to the server. This server is then responsible for the
correct routing of the messages.
Transactionalmessages can be used to pair the sending or
receiving of any message with an action in another operation. Using
transactional messages ensures that the unit of work is carried out
as an atomic operation—that is, the operation succeeds or fails as
a whole Transactional messages can also be used to ensure that a
message is delivered only once, and to ensure that all messages
sent from one computer to another are delivered in order. Positive
and negative acknowledgments can be used to confirm that messages
reached, or were retrieved from, the destination queue. Transaction support on Windows CE is limited to a single message
transaction, which is sufficient to order messages, and to
guarantee a single delivery of each message. Journaling support lets you recover from a failure that occurred
anywhere in the system by creating a copy of the message at every
routing or queuing point. Journaling is also valuable for
applications that need to be able to audit messaging activity or
confirm delivery. MSMQ supports instant reconnection, called Network Tracking.
When a network card has been inserted or a dial-up connection has
been established, there is an immediate reattempt to connect to all
target computers. The information that controls how MSMQ retries
failed connections is stored in the registry. This allows you to
control this retry schedule and defer connection attempts until LAN
hardware is actually available. Networking on Windows CE is slightly different from the desktop
implementation, in particular, when it comes to name
resolution. Windows CE supports only a TCP/IP network stack. Because IP
addresses change in a mobile environment, MSMQ depends heavily on
the following:
A network registration daemon (NETREGD) provides name
registration services for Windows CE devices. It ensures that the
device name and IP address are registered with WINS when the device
goes online. The daemon can also use the network tracking
capability of Windows CE to register the device name when the
network interface becomes available. Because the Windows CE independent client is designed to operate
without support from a desktop-based domain, the standard MSMQ
desktop administration and configuration tools, such as MSMQ
Explorer, are not supported on Windows CE. All relevant administration information is stored on the Windows
CE device, in the registry and in the base directory. You can
configure MSMQ by setting the registry values directly, or by using
the MSMQAdm utility, provided in the Windows CE SDK. Tasks
administered through MSMQAdm include:
MSMQAdm includes scripting support, allowing you to automate
routine tasks. MSMQ on Window CE version 3.0 supports logging. When MSMQ is
started and stopped, or a fatal error— as a corrupt file or a
request for connection from an unidentified computer— encountered,
it generates an entry in the MQLOGFILE text file in the MSMQ
storage directory. The base directory contains local and outgoing queues and
message data, and MSMQ internal queues. One file is contained in
each queue. At startup, MSMQ creates a machine journal queue and a
dead letter queue if they are not already present. The Windows CE MSMQ service can use an installable file system
for its base directory. Note, however, that the transactional
nature of the native, RAM-based file system in Windows CE provides
additional security for messages. If you move your queue to a
non-transactional file system you must ensure that the file system
is available when the message-queuing service is started. You can
move the MSMQ storage from one file system or from one directory to
another by stopping MSMQ, changing the base directory (
BaseDir) value in registry, and copying the contents of the
storage to the new location. MSMQ can have its storage located on a Flash card, or Compact
Flash card, just as it can on any other installable file system.
This ensures that messages are not lost if the system suffers total
power loss, or locks up so that it requires a hard reset. Keep in
mind, however, that flash cards also use a simple FAT file system,
which is neither transactional nor fault-tolerant. As with any
installable file system, the flash card should not be removed from
the system when MSMQ is operational—doing so may lead to message
loss and file corruption. The user must always stop MSMQ before
removing the flash card. For detailed information on developing distributed applications
that use the MSMQ Service, see the Microsoft Platform SDK
documentation. For information specific to developing applications
on Windows CE-based platforms, see the SDK documentation for your
target platform.
The information contained in this document represents the
current view of Microsoft Corporation on the issues discussed as of
the date of publication. Because Microsoft must respond to changing
market conditions, it should not be interpreted to be a commitment
on the part of Microsoft, and Microsoft cannot guarantee the
accuracy of any information presented after the date of
publication.
This White Paper is for informational purposes only. MICROSOFT
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT.
Complying with all applicable copyright laws is the
responsibility of the user. Without limiting the rights under
copyright, no part of this document may be reproduced, stored in or
introduced into a retrieval system, or transmitted in any form or
by any means (electronic, mechanical, photocopying, recording, or
otherwise), or for any purpose, without the express written
permission of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks,
copyrights, or other intellectual property rights covering subject
matter in this document. Except as expressly provided in any
written license agreement from Microsoft, the furnishing of this
document does not give you any license to these patents,
trademarks, copyrights, or other intellectual property.
© 2000 Microsoft Corporation. All rights reserved.
Microsoft, Win32, Windows, and Windows NT are either registered
trademarks or trademarks of Microsoft Corporation in the United
States and/or other countries.
The names of actual companies and products mentioned herein may
be the trademarks of their respective owners.
Windows CE MSMQ Independent
Client Model
Features of Windows CE MSMQ
Transactions
MSMQ Implementation
Scenarios
For More Information
Introduction
Windows CE MSMQ Independent
Client Model
Features of Windows CE
MSMQ
Message Delivery Methods
Access to Public Queues
Transactions
Journaling
Network Tracking
Name Resolution
Configuration and Administration Support
Logging
Installable File Systems
Note MSMQ is a very
storage-intensive application, so a slow file system may degrade
the performance of a message queuing application
significantly.
Notes on Flash Card usage
MSMQ Implementation
Scenarios
For More Information