Thursday, March 20, 2008

ViSit Anywhere Architecture

This article provides some insights into the ViSit Anywhere architecture, and shows exactly why we think that it can be used to as a foundation for work-centered GIS and geo-engineering applications. Physically, the architecture of ViSit Anywhere is straight forward. The following diagram summarizes the basic components.

I have added several components here to represent the different roles that can be taken by the various applications and users. Not all components need to reside on physically distinct machines.

The first thing to note is that this is a client server architecture. The consolidation point for ViSit Anywhere is the Project Server. This is a component that maintains the stack of changes that have been applied to a the projects used in ViSit Anywhere. An installation can consist of any number of projects. When creating a new project, the project server will simply deliver a project consisting of the basic ViSit Anywhere types, but without any schema or instance data.

Internally, the project server is implemented as a .NET WCF server and is delivered either as a HTTP web service or a Windows service that listens to clients on a TCP/IP port or both. In fact, the two configurations of the project service can be active at the same time, as some users may find it more convenient to connect to the project data through ubiquitous HTTP, while others may prefer the performance of a dedicated TCP/IP port. Switching between the two network schemes requires only a reconfiguration of the client.

The project server acts as a consolidation point for ViSit Anywhere licensing as well. When users connect to the project server their user credentials are sent to the license server where they are tested against the available block of licenses. In this way licensing has been localized on the server and the GIS administrator does not have to micro-manage installing licenses on individual machines. The licensing model has been design specifically for disconnected editing, where the synchronization and commit processes act data integration portals for the users.

I will come back to the role of the database server later in this blog. For now, I want to talk about the ViSit Anywhere clients. I have represented the clients with three separate icons. They represent an integration client, a number of standard workstations and a number of mobile workstations. Each of these roles is important for ViSit Anywhere usage.

The first client role depicted is the integration workstation. In this case, data from various sources and in various formats are integrated into the ViSit Anywhere project. ViSit Anywhere uses a simply abstract data format, based on XML to represent all underlying data items. Each component renders the underlying data in a format that is appropriate for its implementation. For example, a Microstation-based editing client maintains data in the generic format, but transforms it into a Microstation design file when it needs to edit or display it. The format used by the standalone editor does not maintain data in Microstation design files and these editors do not have to know how to display a Microstation design file.

The integration workstation will typically use Microstation as the primary CAD engine, as Microstation is well adapted for reading and converting various graphic formats. Also the general CAD editing tools found in Microstation are useful for creating symbols and other graphic items that will later be used by the other CAD engines.

The intergration workstation may also need to extract data from a ViSit v3 project using an RDBMS during project initialization. Project migration from ViSit v3 is performed by running a program that creates an XML description of the ViSit project, then building the project schema and instance data by "discovering" the described information in ViSit Anywhere. The migration process requires a connection to the RDBMS which may require a client database license. Once the project has been migrated and integrated into the ViSit Anywhere project, the database connection infrastructure on the client is no longer necessary. For this reason, we believe it necessary to have only a limited number of integration workstations.

The next client role is that of general workstation. This represents a typical in-office user. These users could be outfitted with either the ViSit Anywhere Microstation or ViSit Anywhere standalone. Microstation is typically only necessary when the structure of the data will require the higher performance offered by this tool. For example, Microstation is able to better optimize the display of large raster files. Even if Microstation is available (for example, because it is used for non-ViSit Anywhere work flows), users may prefer using the standalone version because of its simplified user interface. ViSit Anywhere licensing allows users to have both the standalone or Microstation version.

Standard workstation users will have the ability to modify the GIS data like all other user. They do not require a connection to a database or any other 3rd party software (including database clients and CAD editors). When these users are ready to commit their changes they can simply connect to the project server (via TCP/IP if the project server is on the LAN) and share their data. One interesting possibility that is presented by the ViSit Anywhere notion of "local project data", is to have users perform simulations that will not necessarily ever be committed. This is done by synchronizing to the tip of the project and making proposed changes. The user can then analyze the result of the changes and repeat the process if necessary, without fear of ever corrupting the project data. In addition, once users find configurations that are viable, they can be merged in to the project data simply by synchronizing to the tip of the project data, and committing their changes.

The final client role is the mobile worker. These users are typically equiped with a rugged laptop or tablet computer. They will typically synchronize the project on their mobile machine when they have the opporatunity. Their connection to the project server may only be sporadic and thus it is important that their data merges correctly and easily with the ever changing project data. ViSit Anywhere provides support for this through its change management system. Under this system the graphic and attribute data of managed elements are handled atomically. Since GIS data typically represents large sets of managed data, it is rare when two users modify the same element at the same time. That is, it is rare when there is a true conflict. Other, structural conflicts (like the key conflicts that occurs when two users both add a new element and the new elements both have the same key) can be resolved automatically by the system and do not require any user intervention. In ViSit Anywhere conflicts are resolved on the client's machine. There is not reason to upload revisions to the server or to use special tools to merge revisions. When users resolve conflicts the server provides the current server version and the last shared ancestor version to compare with the local version. The user simply modifies the local project so the data is correct then accepts the conflict as being resolved. The correct version is then accepted as the tip of the project when the changes are committed. I will talk more about conflicts and change management in an upcoming blog entry.

Note that on the above diagram all the connections between the client applications and the project server are shown in green. This is meant to represent the fact that these users can work productively without any connection to any other machine. The users only have to connect to share there changes with other users (by committing the changes) or to synchronize their local project to see the data other people have changed. In addition, no other 3rd party software is required to work productively while disconnected. This is equally true for disconnected mobile workers as it is for office workers.

The final component on this diagram is a server-side client that listens for project data changes and automatically updates an external RDBMS. The connection between the project server is shown in gray because this component is only scheduled for release in the second ViSit Anywhere beta. We are currently planning to implement auto-synch database clients for Oracle locator and Microsoft SQL Server 2008 (which also supports spatial data). We feel that These types of clients are very important as they will allow GIS project data to be easily accessible in other enterprise applications.

This concludes my basic look at the ViSit Anywhere architecture. The thing to understand is that ViSit Anywhere uses a centralized project server to consolidate and distribute data to all users, but once a user has synchronized to the server, that user can work autonomously, without further interaction with any external application until such as time as they want to share their changes or recover a newer version of the project data.

1 comment:

Navya said...

Well written post.Thanks for sharing..

Photogrammetry mapping