Virtual Earth and SQL Server 2008 - A Match Made in Heaven?

by Nate 1. May 2008 12:34

WebServicesArchitecture

Johannes Kebeck has an interesting post showing how to get the benefits of the MapPoint Web Service method, FindNearRoute, through the use of SQL Server 2008. He uses a newly-added feature of the Virtual Earth API that allows developers to gain access to a complete returned route-geometry when performing a route. This new feature, however, does require that the mapping application use customer identification (which, in turn, requires that you sign up for a Virtual Earth platform developer account).

If you haven't checked out Johannes' blog lately, you might want to give it a go now. He has written a whole slew of Virtual Earth and SQL Server 2008 posts lately, and there's a wealth of good information there.

We've already started using SQL Server 2008 in some of our development applications, and are planning on taking advantage of ArcSDE 9.3's ability to utilize SQL Server 2008's spatial data types. We're hoping that by doing this, we'll be able to offer access to our geometries through both traditional GIS tools (ArcGIS Desktop for our shop) and web services (ADO.Net Data Services returning JSON and XML and other services built on top of WCF). As we're already using ArcGIS Server 9.3's REST capabilities from within our JavaScript/Virtual Earth applications, if we can "close the circle" by tying SQL Server 2008 and Virtual Earth together in a robust and meaningful way, we may just be able to hit the proverbial bulls-eye. We've already written quite a bit of code that brings these technologies together, but are still deciding on the best overall approach.

One thing that is still unclear to me is if we're going to utilize ESRI's tools heavily or try to avoid them as much as possible and stick with all of the non-ESRI .NET technologies. In a lot of ways, we're already going the latter route (saying ArcGIS Server 9.2 still leaves a bad taste in my mouth), but I've been impressed with ArcGIS Server 9.3 so far, so I'm withholding judgement until we see how the new set of technologies perform in a couple of months.

And from the Microsoft camp, I expect that more direct integration with SQL Server 2008 will be coming soon to the Virtual Earth API. I haven't, however, heard of any solid dates yet. Any integration will be much-welcomed, as it will save us precious development time.

Whichever route we decide to take, it's pretty obvious that now is a great time to be working in web mapping. Especially if you're able to take advantage of all the integration points available through .NET.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ADO.NET | ArcGIS Server | Javascript | Microsoft Virtual Earth

Microsoft SQL Server 2008 November CTP

by Nate 19. November 2007 20:11

Those of you who use Microsoft SQL Server will be interested to hear that the SQL Server team has just released the November Community Technology Preview of SQL Server 2008 "Katmai". Of special note for us GIS types is that this is the first publicly available release that includes support for the new spatial data types.

The last couple of weeks have seen a slew of news about this upcoming release, including some pretty interesting demonstrations of the new spatial data types. A good blog to keep your eye on is Isaac's MSDN blog; he recently linked to a webcast that he gave on the 1st of November, titled "Introduction to Spatial in SQL Server". This is a good place to start if you're just being introduced to the new capabilities.

Here's a link to the download.

I'll be playing around with Virtual Earth and this release quite a bit over the next month and will post about my experiences here.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Microsoft Virtual Earth | SQL Server

New Features Added to the Virtual Earth API

by Nate 18. November 2007 21:52

This news comes from Hannes's Virtual Earth Blog.

Microsoft has just released several new features into the Virtual Earth API, allowing developers to further enhance their Virtual Earth map control v6 applications:

  1. It is now possible to import 3D collections into VEDataType.VECollection.
  2. It is now possible to import KML and GPX data into VEDataType.ImportXML. This is obviously great news. We can now consider using KML as a data standard for our organization.
  3. Localized driving directions can now be accessed through the API by adding the market you're interested in (en-us for the United States) to the end of the map control URL (e.g. http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6&mkt=en-us).
  4. SSL support has been added for the Virtual Earth map control (https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6). This may not sound like a huge enhancement, but support for SSL is a huge need for enterprise customers. It is a major pain when developers have an SSL-secured application but their users get security warnings when browsing to a page that has an embedded map. I have heard much grumbling among users of the Google Maps API that including SSL support doesn't seem to be a priority for Google. Maybe this is just another demonstration that Virtual Earth is becoming the standard for mapping in the enterprise?

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Javascript | Microsoft Virtual Earth

Virtual Earth Dashboard Display Bug

by Nate 16. November 2007 02:30

Here's a quick tip that I uncovered today while working with V6 of the Virtual Earth map control: If you notice that your application's Virtual Earth dashboard appears funky with the "Road", "Aerial", and "Hybrid" choices displaying below the actual dashboard (as seen in the first screenshot below), you've probably set a font-size on the body of your web page. This is what's causing the text to wrap below the actual control.

The fix is simple: Define the preferred font-size on something other than the <body> tag of your page. If you can't do this for some reason, you should also be able to dig a bit into Virtual Earth's CSS classes using a tool like Firebug, find the default font-size for the dashboard, and set your Virtual Earth map div with this default font-size. Just make sure that you use the !important designation to make sure that your styles get applied. I haven't tried this approach, but it *should work (famous last words, right?).

I strongly suggest, though, moving your font definitions from the <body> to something more "controlled", such as your paragraph <p> tag; this will save you from a lot of headaches in the future.

Before

virtualearth_dashboard_bug

After

virtualearth_dashboard_bug2

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

CSS | Microsoft Virtual Earth

Virtual Earth Map Control v6 Released

by Nate 17. October 2007 05:54

As I'm sure most of you already know, Microsoft's recent (October 15th) release of their new version of Live Maps is getting a lot of attention. While I'm as excited as everyone else about the new features, I'm much more interested in getting at these features through Virtual Earth's JavaScript map control. Well, I decided to take some time today to update one of my web map applications to the new version of the map control. Here's a rundown of my experience, including what I'm most excited about:

After switching to the v6 map control (http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6), the first thing I noticed was the new control. It's the same one that Live Maps uses. I must say that I really like it; It takes up less space, has nice transparency, and the ability to contract and expand it adds a lot to the overall experience.

ve5_1

However, immediately after noticing this I noticed a couple of problems with my application that required my attention:

  • None of my GeoRSS data were showing up. After looking into this, though, I realized that my JavaScript was incorrect (due to a hack), and - after a few simple changes - everything was back up and running. It's strange that the v5 map control let my errors slide, but I'm assuming that there must have been a fix in the underlying JavaScript that invalidated my code.
  • My custom icons were not displaying. This was, again, because of a workaround that I implemented in v5 of the map control. After going back and correcting a couple of things (read: making them conform to standards), this problem was taken care of.

And that's it! Those were the only problems that I ran into with the switch to the new map control, and both were necessary because of workarounds that I had to implement in v5 of the map control. I must say that I'm impressed with how easy it was. The upgrade from v4 to v5 was much more painful, but it looks like those painful changes are starting to pay off in time and effort saved now.

Some fixes that I've already noticed:

  • The SetCenterAndZoom method seems to be working correctly now. In v5 of the map control, it was inconsistent and I had to revert back to setting the center and then zooming to a point with two different methods.
  • Like in Live Maps, the 3D map control works *much better than it did in the v5 release. The overall experience is much smoother (especially in Firefox), and the data are looking better than ever.
  • It looks like the CSS has been touched up a bit, as well. With the v5 map control (and a couple of map control releases before it) the info boxes often showed up unattached to a particular point when hovering over the point in Internet Explorer. My workaround required creating my own custom info boxes and turning off Virtual Earth's. Hopefully I'll be able to abandon this workaround now.

Some enhancements to the SDK that I'm excited about (for a complete list, see the version changelist):

  • VEAltitude Enumeration - Gives developers the ability to find the altitude of any point on the globe.
  • VEMap.GetDirections Method - Allows for multi-point routing. This is a great addition.
  • VEMapStyle Enumeration - Added the "Shaded" value. It was possible to get to this in v5 of the map control, but it is now accessible through the LoadMap and SetMapStyle methods.
  • VEMatchConfidence Enumeration - Gives developers access to the accuracy of a returned geocode. This is an extremely useful feature that Google's geocode service has had since its 2.59 release. Microsoft still isn't as far along as Google on this one though; they only return three possible values (High, Medium, and Low), whereas Google returns nine values (0 being the least accurate (unknown) and 8 being the most accurate(address level)) and even gives developers access to "failure reasons", making it possible to let the user know why his/her geocode failed. That said, with this VEMatchConfidence Enumeration and the VEMatchCode Enumeration, Microsoft is moving in the right direction.
  • VERouteOptimize Enumeration - Allows developers to specify how a route is optimized. The options include Default (no route optimization is done), MinimizeTime, and MinimizeDistance.
  • There are also a handful of new 3D methods. It makes a lot of sense for Microsoft to continue to focus its resources on furthering Virtual Earth's 3D capabilities, as these capabilities are what really set it apart from the rest of the pack.

A random observation:

  • It looks like disambiguation is now turned off by default for the geocode service. When I searched for "Denver", I was taken straight to Denver with no other options presented to me. With v5 of the map control, I was always asked if I meant "Denver" the city or "Denver" the county.

All in all, I'm very impressed with this release. There are enough new features to get me excited, but I'm just as excited about some of the fixes. As I continue to work with this new version of the map control, I'll post about my experiences here.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Javascript | Microsoft Virtual Earth

Virtual Earth Map Control v6 Coming Soon

by Nate 3. October 2007 18:17

It looks like Microsoft is looking to release version 6 of its Virtual Earth map control around the middle of this month. This version includes both new features and enhancements to existing features. So far, they've disclosed that the following new features and enhancements will be included in this release:

  • Enhanced geocoding
  • Multipoint routing
  • Safari browser support
  • Localized driving directions

I'm especially excited about the multipoint routing and support for Safari.

There have also been rumors of KML support, though I haven't heard any official word about this.

It's safe (I think) to assume that this new version of the map control will also provide some fixes in Virtual Earth's 3d capability. I certainly hope so, at least, as we have some projects that really need to utilize 3d in the browser, but have held off on moving too far with them, as there are still some critical issues with the browser (especially Firefox) plugin.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Microsoft Virtual Earth

MapDotNet Server 2007 6.1.2 Released Along with Better Documentation

by Nate 7. September 2007 03:56

Less than a month after the 6.1.1 release, ISC announced yesterday the release of MapDotNet Server 2007 6.1.2. I love it when development teams embrace the "release early, release often" approach. This is the approach that the ArcGIS Explorer team has taken, and look how much their product has improved in the (relatively) short time that it has been out. According to the release notes, 6.1.1 is a maintenance release, but there are two critical improvements related to ArcSDE support that merit mention. Quoted from the release notes:

  • "Substantially improved rendering speeds with ArcSDE. This is especially the case in large multi-processor web garden deployments where the MDNS services are less likely to be processor-bound. Substantially improved SDE connection pooling resulted in upwards of 10 times the rendering performance in our tests. This was especially noticeable when ArcSDE is installed on a separate server from the MDNS web services."
  • "Improved locking support for ArcSDE where large numbers of spatial queries/edits/transforms and map renderings are occurring simultaneously. The ArcSDE ESRI client connector is not thread safe and under heavy load faults were encountered. This has been resolved through better locking in MDNS."

As I mentioned in a previous post, performance in general increased many-fold with the addition of SQL Server tile caching support and the tile over-fetching capabilities in the 6.1 release. And now that the performance of data stored in SDE (where just about all of our data are stored) is supposed to improve even more dramatically with this release, I'm looking forward to seeing the difference.

And on a slightly different - but just as important - note, if you check out the MapDotNet Server website, you'll notice that a lot has changed over the last couple of months. The Interactive SDK now has ten examples that you can both preview and download. In addition to this, the Wiki has some new content (especially of interest are the Virtual Earth extended template and the Performance Tuning entries). Kudos to the MapDotNet Server team for these improvements. That said, there are still a lot of improvements that need to be made, but it seems that they are moving quickly in the right direction.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | MapDotNet Server | Microsoft Virtual Earth | SQL Server

Web Mapping Offerings Compared (Post 2 - What I'm Looking For in an API)

by Nate 13. July 2007 06:36

Note: This is the second entry in a series of posts titled "Web Mapping Offerings Compared". The first post, Introduction, is available for viewing here.

Introduction

As I mentioned in the first post of this series, many of the online mapping services offer developers application programming interface (API) hooks into their services. These entry points allow developers to build applications that utilize both the data and other bits of functionality that they offer. Over the last couple of months, in my search for web mapping solutions for the organization that I work for, I have experimented with many of these APIs, and, as I worked with each of them, I noticed that each seemed to have its own unique set of strengths and weaknesses. It seems that while each of the products are moving generally in the same direction, they are all trying desperately to separate themselves from the rest of the pack while also working hard to attract developers. This can only be good for us (as the consumer, of course, but also, more importantly for me, as the developer), so I'm certainly not complaining, and as more levels of functionality are opened up to developers, I imagine that we will begin to see more "GIS-centric" applications built on top of these APIs (in place of the all-too-common 'mash-up').

The *current bottomline, though, is that these APIs don't offer nearly as much built-in functionality as a full-featured GIS web map application. Out of the box, they don't support as many data types or allow you to directly query associated attributes, etc. So, the major question is "why would a GIS professional consider using an API when he/she has access to a full-featured GIS web map platform?" Well, the answer is simple - at least for me.

I've noticed that often, although we (as GIS developers) hate to admit it, users of web map applications really only need the most basic of functionality. Although we'd like to think that all of our users need the ability to perform complex queries and analyses on our datasets, this level of skill is the exception and certainly not the rule. Now, I'm obviously generalizing here, but I'm speaking from the experience that I have within my own organization. There are certainly times where a level of advanced functionality is needed, but I would say that in about 80% of our use cases the user just needs to be able to:

  • View data laid over high-quality (and high-performing) base data
  • Digitize and attribute simple geometries
  • Perform some fairly basic attribute queries

If this is the level of functionality that you're looking to achieve for your web map application(s), an API may be the way for you to go. And even if you need more functionality you may want to check back as this series progresses, as somewhere in the series (I haven't decided where I'll fit it in yet) I'll talk about ways that you can integrate other technologies with some of the existing API features I'll discuss to build your own web map application that rivals the offerings and functionality of one of the more full-featured GIS web map platforms. And the cool thing is that you can build a very lightweight but powerful application using this type of model.

Following are the criteria that I'm going to use to evaluate each of the APIs:

Type, Breadth, and Quality of API(s)

All of the products that I'm going to review in this API section have at least a JavaScript API that allows developers to hook into their services. A few, however, have more API offerings. This was definitely a consideration for me when looking into each of them, as different APIs meet different needs. It's pretty easy for me: the more options, the better (assuming, of course, decent quality and stability).

Kind of along the same lines, if a product's API(s) don't include the functionality that I need in my application, I'm not going to use it. Some of the APIs are more mature than others, and it shows when you start getting your hands dirty.

Accessing Data/Services (Licensing)

One of the biggest concerns/questions that I had when I first started looking into the different data/service mapping APIs had to do with licensing. If the cost or terms of use were prohibitive up front, it wasn't worth my time to spend a lot of time researching (read: playing) with the technology. Luckily, I found that the aforementioned competition in the fight to win developers and users over didn't stop at innovation in the products themselves; it also trickled down to licensing models. To put it simply, not only are the different players trying to outpace their opponents in their pricing models, all are also making their services available for free - with some limitations, of course.

Now that I've gotten all of that out, I'm going to immediately renege on one of the statements (well, I'm not really backing away from what I said, but it may seem like it on first read): While the different vendors are trying to compete on pricing, when it comes down to the licensing model that they use, they are remarkably consistent. They all use the same type of model, based on transactions, to track and (if necessary) price usage of their services. Most say that a single transaction equals nine 256x256 pixel tiles (although there are exceptions to this), so, if you pan and only have to load three more tiles during the pan, this is considered 1/3 of a full transaction.

The good news is that most of the vendors allow developers to use their services for free - up to a certain transaction limit - as long as the application is public-facing. If the application is, however, on an internal network you must purchase the data from the vendor.

Quality of Base Data

As I mentioned in the first post in this series, Introduction, one of the things that drove me towards this search was the fact that we needed to be able to use high-performing, high-quality data in our applications.

While not all of the APIs that I'm going to discuss serve their own data, the data that they use have to be served from somewhere. So, if an API wasn't built on top of a particular data service (for instance, Open Layers), I had to know what data services it could connect to, out-of-the-box, and how good the data that it could access were. For those APIs that were built on top of a particular data service, it was important for me to know how good the default data were.

Built-In Features and Data Support

While all of the APIs support a "core" level of functionality, there are certain features that set some apart. Sure, they all allow you to view data and navigate around the map, but can you easily build digitizing functionality into the application with the API(s)? Can you access the product's geocode and routing services (and this question ties back to the licensing issue)? These are the types of features that I needed for my applications, and, therefore, the types of questions that I considered when researching the different options.

Another key metric that makes it easier to distinguish between the different APIs is their out-of-the-box support for data. All of the different products allow you to create and manage shapes within a user's session, but they don't all give developers the capability to import different types of data into an application. Now, to be fair most of the products only currently support a few different types of data out-of-the-box. I imagine, though, that this will change over the next six months or so, as many of the vendors seem to be focusing more of their efforts on this critical issue.

Ability to Integrate with a GIS

Unfortunately, I couldn't just throw out my organization's GIS needs when looking at the different APIs (and I say unfortunately because, if I could throw these needs out, it would make my life a whole lot easier). I had to consider GIS-type issues like projections, accuracy of base data, and resolution of imagery (and this was especially important in some rural areas, as many of my organization's units aren't anywhere close to an urban area).

Not all of the applications that I'm working on require true GIS functionality, but this was an important consideration, nonetheless.

And Moving On...

In the next post, I'll start reviewing the APIs using both the overarching criteria that I laid out in the Introduction post and the API-specific criteria that I laid out above.

Note: I've received several requests to look at products that I didn't explicitly mention in my first post. I will do my best to get to know all of them, as I'm curious to see what's out there. It will take some time, however, so please forgive me for any delays.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ArcWeb Services | Google Maps | Javascript | Microsoft Virtual Earth | Open Layers

MapDotNet Server 6.1 is Released

by Nate 5. July 2007 20:42

ISC announced on the 2nd that it has released MapDotNet Server 2007 6.1. This version of the mapping platform includes some major enhancements, including support for the newest Virtual Earth Map Control, v5 (which, in and of itself added quite a bit of functionality and hooks into the API, especially in its support for shapes). As I've mentioned several times before, I've been impressed with the quality of the data being served through Virtual Earth, and am expecting that things will only continue to improve (you may have noticed that Virtual Earth just released a major data update in the last couple of days). It also looks like ISC has worked hard in this release to improve performance on their end; they are touting 5-12 times the performance in this release when compared to 6.0. The new version includes tile pre-caching in SQL Server and a tile pre-loader utility. Performance of SDE data laid over Virtual Earth wasn't bad in the 6.0 release, but there was definitely a difference in load times, at least on our hardware and geodatabase(s). Hopefully these improvements will make the difference less obvious, although I'm sure that there will always be some latency when compared to data coming from Microsoft's servers.

In addition to these enhancements, ISC has also made some improvements to other parts of the MapDotNet Server product, including:

  • New support for Virtual Earth 3D, including a new template that  allows out-of-the-box 3D functionality
  • Easier connection to ArcSDE
  • Support for SpatialDB, a SQL Server 2005 spatial extension

They also have plans to release an Interactive SDK sometime this month, and it looks like they've made some recent additions to their support WIKI.

All in all, these are all welcome additions, and I'll be playing around with the new version soon.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

MapDotNet Server | Microsoft Virtual Earth | SQL Server

Web Mapping Offerings Compared (Post 1 - Introduction)

by Nate 5. July 2007 16:33

Online mapping is taking off in a big way. Just look at the number of online mapping sites now available (Ask.com, ESRI, Google, Mapquest, Microsoft, and Yahoo! are the ones I can think of off the top of my head) and, especially, at the work and money that's being put into enhancing these applications and the data that they serve, and you'll see that mapping - albeit in a simple form - has truly become an integral part of most people's everyday lives. These products all have their own way of doing things, although there are obvious similarities between them all. Now the rush is on to see who is going to provide the best - and most open - application programming interface (API) and licensing model.

Over the last couple of months, I have worked to develop prototype applications with several different web mapping APIs, including ESRI's, Google's, Microsoft's, and Open Layers'. My goal when initiating this development was to get a feel for the strengths and weaknesses of each of the offerings, and, in the end, to decide the best route for my organization. In addition to working  with each of the APIs alone, I also worked with (or at least discussed in length with the vendor(s)) some third-party products that allow you to tie into the data offerings of the large online mapping vendors while working directly with databases on the backend. Through the process of learning these new technologies, I discovered quite a bit about each of them, and feel like I now have a pretty good understanding of how they compare.

Before I delve into each of them, here's a bit of background to help frame this series of posts: My organization is pretty much a strictly ESRI shop. Our current architecture sits on a Microsoft/ESRI platform, so we really only use SQL Server, ArcSDE, and ArcGIS Server. When ArcGIS Server 9.2 came out, we decided that we were going to use it exclusively for our web map applications, as it tied seamlessly into our existing infrastructure and expertise. Well, we initially ran into the same problems that everyone who used the Web ADF ran into (some of which a lot of developers are still running into - see the ArcGIS Server Forums) and were a bit discouraged by the lack of quality, documentation, and - most importantly - response from ESRI. We weren't dissuaded, though; we kept at it, trying to build tile cache after tile cache after... Granted, we were trying to build massive tile caches, but we figured since ArcGIS Server was an enterprise product, it would be up for the task. From our experiences, I can now say that we were wrong. There was only minimal documentation available initially to help us in our massive cache builds, so we had to learn each lesson the hard way. In addition to this, the product simply didn't work as advertised. Even with quite a few fairly powerful servers dedicated to building cache for weeks at a time, a lot of times we couldn't get the processes to successfully complete, and had to either start over from scratch (as there is still not a good way, at least that we're aware of, of picking up a failed cache build where it left off) or give up all together.

In this context, with lots of frustration and a bit of regret, we made the decision to widen our vision to other web map products and/or data services, as we needed to find a way to include high-quality and high-performance nationwide base data for our applications. In doing our initial research, we considered a couple of important requirements:

  1. Ability to Plug-in to our Existing Infrastructure
  2. Performance
  3. Cost
  4. Quality of User Experience
  5. Ability to Support Open Data Types
  6. Scalability

After considering these requirements, we settled on a number of possibilities, including:

  • ArcWeb Services
  • Google Maps API
  • GeoServer
  • MapDotNet Server
  • Microsoft Virtual Earth API
  • Open Layers API
  • Visual Fusion Server

Now, you've probably noticed a couple of similarities in these different products. First of all, many of them are free-to-use (unless you use their data internally, of course, or go over the usage limits that they have specified (that is, in the case of using data served by either Google or Microsoft)). ESRI ArcWeb Services, MapDotNet Server, and Visual Fusion Server are the exceptions to this first rule. Second, each of them have the ability to access high-performing data that are served from either Google or Microsoft. This was probably the most important requirement to us, as we realized while trying to build our tile caches for ArcGIS Server that there was no way our organization could sustain the practice of maintaining huge datasets and building massive tile caches, and that, even if we did get a cache successfully built, we would never be able to meet the performance expectations/needs of our users while serving the data from our infrastructure. The last common thread between the products is the fact that they all support open standards, albeit some more comprehensively than others. This was another absolute requirement, as, like many other organizations, we are trying to move in the direction of open standards.

In the series of posts that are soon to follow, I will discuss my experience with these different products, focusing on the requirements of my organization and how well each of the products meet these requirements. This may be helpful to others, as our requirements seem to be shared by many others out there.

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen
GeoURL