The present disclosure generally relates to sessions and terminals configured for binding in an extensible manner.
A “session” may be configured to organize a group of applications and security tokens that share a subsystem within an operating system. Terminal functionality configured for use with the session may include hardware devices and associated software. Within conventional systems, the “terminal services” or similar software that creates session and terminal functionality has a composite structure. Because of this composite structure, different aspects of the software responsible for creation of session functionality are closely related and intertwined with aspects of the software responsible for creation of terminal functionality. Accordingly, any change required to either session or terminal aspects of the composite software used to create both sessions and terminals may result in a large number of interrelated changes, and the need to edit and re-compile large sections of code.
As part of an emerging trend, an increasing number of sessions having different type and specialization are being developed. Typical examples of such sessions include full desktop, Microsoft® eHome, sand-boxed sessions for multi-level security and protected admin. Additionally, an increasing number of terminals and terminal devices are also being developed. Because the composite software used by conventional systems must be heavily modified in response to a need for a change in either session or terminal functionality, a considerable amount of work must be done to known software in response to changes in aspects of session or terminal functional requirements.
Systems and methods for configuring sessions and terminals for binding in an extensible manner are disclosed. In one implementation, a terminal is created in response to notification of an incoming connection. A session is also created, and the terminal and session are bound together for operation. This implementation may be instantiated as computer-executable instructions defined on a computer-readable media.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.
Overview
This disclosure discusses sessions and terminals configured for binding in an extensible manner. In a preferred embodiment, a session and a terminal are created by a session manager and a connection manager, respectively. In this embodiment, the session manager and connection manager are configured as separate processes. Once created, the session and terminal are bound together, thereby allowing the session to gain access to various I/O devices available from the terminal. Because the session and the terminal are created by separate processes, changes may be made to either process without requiring changes to, or recompilation of, the other process. Accordingly, new sessions and/or terminals may be created under conditions of improved efficiency and enhanced functionality.
Exemplary Environment
The incoming connection 108 is a request 110 for the connection manager 104 to create a local or remote terminal. The terminal created includes software supporting an indicated hardware or physical device, while local terminals also include that hardware and/or device. The software may include device drivers and other low-level objects, but typically includes abstractions instantiated by one or more layers of higher-level software. In implementations wherein the terminal is local, the physical devices included within the terminal may be referred to as a “glass terminal” or “console.”
Interactions 112-116 between sessions and terminals are representative of the communication typically involved in creating and binding terminals and sessions. At 112, the connection manager sends a request to the local session manager (LSM) 106 to create a session. The request is typically made by an API (applications programming interface), but could be made by any means consistent with the environment within which the sessions and terminals are operated.
In response to the creation of a session, at 114 the connection manager binds the newly created terminal to the newly created session. The communication 114 between the connection manager and the session manager may be implemented by use of an API or other available functionality, depending in part on the operating system environment.
In response to the binding of the session and terminal, the session manager gets 116 device handles associated with operation of the terminal. Communication to the connection manager is made utilizing a notification framework, using the protocol 102. At this point, notification 118 is made indicating that the connection is completed.
Each of one or more connection managers 104 is configured to create a terminal 204. In a typical implementation, each connection manager is configured to create a different type of terminal. For example, each connection manager may be associated with creation of a terminal intended for use with a different physical device (i.e. “glass terminal” or “console”). Terminal functionality may include hardware devices such as a monitor, keyboard and mouse or other pointing device, as well as lower-level software drivers associated with the hardware devices. Such devices are directly accessible to the user, and may include printers, smart card readers, audio systems, storage devices and others. Additionally, most implementations include higher-level software providing one or more layers of abstraction.
Instructions to the connection manager(s) are configured according to the protocol and arrive via the notification framework 210. For example, the incoming connection instruction 108 (
Communications made by the connection manager(s) to the session manager 106 are made by appropriate APIs 208. For example, the instruction 112 (
The session 202 and terminal 204 are bound together into a functional unit 206 having characteristics resulting from the underlying session 202 and terminal 204. It is an important aspect that the session 202 and the terminal 204 are created by the session manager 106 and the connection manager 104, respectively, and that changes to either the session manager or the connection manager do not necessitate changes to the other. Accordingly, where a different session or terminal is desired, a new or changed session manager or connection manager, respectively, may be required. However, these changes are expedited relative to the prior art because issues arising from intertwined code related to both session and terminal creation do not have to be addressed.
Each session may be associated with a user, and IUserName 310 is configured to identify a logged on user.
A terminal object, ITerminal 312, is created by the connection manager 314, and is a specific implementation of the generalized terminal object 204 of
One or more instances of the IConnectionManager 314 may be configured as plug-ins, or otherwise configured as extensions with respect to the session manager 106. Configured as extensions, the connections managers can be loaded by the session manager 106 and executed in-procedure, or may be run out-of-procedure as COM objects. In most implementations, running out-of-procedure is preferred. Each IConnectionManager 314 is configured to create a terminal 204 (see
ITSNotifySink 316 is related to the ITSEventDispatcher 308, and includes software implementing methods and functions that support aspects of the notification subsystem or framework 210.
Exemplary Methods
Exemplary methods for creating and binding sessions and terminal in an extensible manner will now be described with primary reference to the flow diagrams of
At block 404, a terminal 204 (
In a further implementation of block 404, at block 408 the terminal is created independently of the session to which the terminal is to be bound. In a preferred implementation, the terminal is created by an out-of-procedure execution of a plug-in, while the session is created by an application configured to accept the plug-in. In an alternative implementation, the terminal is created by a plug-in loaded and run in-process within the session manager. Both implementations provide for independent creation of the session and terminal. By creating a desired terminal independently of the session, changes made to the connection manager to modify characteristics of the terminal created will not require extensive revision of the session manager and/or session, and vice versa.
At block 410, a session is created for use with the terminal in response to a request made by a connection manager to a session manager. Referring to
At block 412, the session is bound to the terminal. In the example illustrated in
At block 416, the session is disconnected from the terminal. Optionally, the session may be bound to a second, newly created or already existing, terminal. Binding the session to a second terminal allows the session to be reused, and also allows continuity in the applications running on the session during the transition from a first terminal to a second terminal.
At block 502, a notification framework configured in an extensible manner is operated according to an event-based model. The framework 210 of
At block 506, APIs are utilized to communicate from the connection manager(s) to the session manager. For example, in
At block 604, an appropriate connection manager and an appropriate session manager are selected to result in creation of an appropriate terminal and an appropriate session, respectively. By creating the appropriate terminal and session individually, the resulting the environment created upon binding the session and the terminal together may be selected in a customizable manner.
At block 606, the session and terminal are created using a session manager and a connection manager that are separate processes. Accordingly, the session is created independently from the terminal. In an example discussed previously with respect to
At block 608, the session manager or the connection manager may be modified or replaced to obtain a different session or terminal, respectively. Because the session manager and the connection manager are separate processes, replacement or modification of one process does not require replacement of modification of the other process. For example, if a new terminal is required, then a new connection manager may be installed as a plug-in to the session manager, without any need to modify the session manager.
While one or more methods have been disclosed by means of flow diagrams and text associated with the blocks of the flow diagrams, it is to be understood that the blocks do not necessarily have to be performed in the order in which they were presented, and that an alternative order may result in similar advantages. Furthermore, the methods are not exclusive and can be performed alone or in combination with one another.
Exemplary Computer
The computing environment 800 includes a general-purpose computing system in the form of a computer 802. The components of computer 802 can include, but are not limited to, one or more processors or processing units 804, a system memory 806, and a system bus 808 that couples various system components including the processor 804 to the system memory 806. The system bus 808 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, a Peripheral Component Interconnect (PCI) bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
Computer 802 typically includes a variety of computer readable media. Such media can be any available media that is accessible by computer 802 and includes both volatile and non-volatile media, removable and non-removable media. The system memory 806 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 810, and/or non-volatile memory, such as read only memory (ROM) 812. A basic input/output system (BIOS) 814, containing the basic routines that help to transfer information between elements within computer 802, such as during start-up, is stored in ROM 812. RAM 810 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by the processing unit 804.
Computer 802 can also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example,
The disk drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for computer 802. Although the example illustrates a hard disk 816, a removable magnetic disk 820, and a removable optical disk 824, it is to be appreciated that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement the exemplary computing system and environment.
Any number of program modules can be stored on the hard disk 816, magnetic disk 820, optical disk 824, ROM 812, and/or RAM 810, including by way of example, an operating system 826, one or more application programs 828, other program modules 830, and program data 832. Each of such operating system 826, one or more application programs 828, other program modules 830, and program data 832 (or some combination thereof) may include an embodiment of a caching scheme for user network access information.
Computer 802 can include a variety of computer/processor readable media identified as communication media. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
A user can enter commands and information into computer system 802 via input devices such as a keyboard 834 and a pointing device 836 (e.g., a “mouse”). Other input devices 838 (not shown specifically) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to the processing unit 804 via input/output interfaces 840 that are coupled to the system bus 808, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
A monitor 842 or other type of display device can also be connected to the system bus 808 via an interface, such as a video adapter 844. In addition to the monitor 842, other output peripheral devices can include components such as speakers (not shown) and a printer 846 that can be connected to computer 802 via the input/output interfaces 840.
Computer 802 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device 848. By way of example, the remote computing device 848 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like. The remote computing device 848 is illustrated as a portable computer that can include many or all of the elements and features described herein relative to computer system 802.
Logical connections between computer 802 and the remote computer 848 are depicted as a local area network (LAN) 850 and a general wide area network (WAN) 852. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. When implemented in a LAN networking environment, the computer 802 is connected to a local network 850 via a network interface or adapter 854. When implemented in a WAN networking environment, the computer 802 typically includes a modem 856 or other means for establishing communications over the wide network 852. The modem 856, which can be internal or external to computer 802, can be connected to the system bus 808 via the input/output interfaces 840 or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between the computers 802 and 848 can be employed.
In a networked environment, such as that illustrated with computing environment 800, program modules depicted relative to the computer 802, or portions thereof, may be stored in a remote memory storage device. By way of example, remote application programs 858 reside on a memory device of remote computer 848. For purposes of illustration, application programs and other executable program components, such as the operating system, are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer system 802, and are executed by the data processor(s) of the computer.
Although aspects of this disclosure include language specifically describing structural and/or methodological features of preferred embodiments, it is to be understood that the appended claims are not limited to the specific features or acts described. Rather, the specific features and acts are disclosed only as exemplary implementations, and are representative of more general concepts.