I am a new ArcGIS Server user and am trying to understand how our web mapping application specification would fit into the ArcGIS Server map services architecture.

Our application should support multiple users, each of whom will be working with a limited number of their own maps. Each map is made up of a common base map across all users, but with a user-maintained layer from a geodatabase that is specific to the individual user.

So should I be thinking in terms of a single map service which is consumed by all the users, and somehow for each request I swap in the correct layer for that user. Or rather should there be a separate map service for each user (and for each of the user's maps) - in which case I guess I would need a way to dynamically create & publish the map services to the server at runtime.

In either case I am looking at writing a Server Object Extension to provide the som of my custom application functionality.

4 Answers
4

It sounds like the setup that you are trying for right now, is more or less exactly what I am currently working with. We have an AGS10 setup with multiple concurrent users, a common basemap (The ESRI Streets data which is in our MXD), and then multiple layers in the MXDs.

Each user then has an individual login and once they are in the application they are able to turn on and off any layer(s) they want (this will persist through all of their sessions). We maintain this basically through an Oracle/SDE setup where each layers in the MXD has an ID which is stored and tied to that user.

I would recommend against a map service for each user because counting on how many users you have, scaling the hardware could become an issue.

My preferred setup is to control as much of the output as possible with definition queries. Simply add a user column, and set a definition query for the particular user at runtime. This also forces you to rationalise the number of layers and the complexity of the data model, which generally makes things run faster.

We are thinking of doing something similar to this except instead of users it will be a project area, where different users are only allowed to see their specific work area.
–
Chad CooperNov 17 '10 at 12:19

I'll take a stab at my best understanding. I haven't done this in AGS, I did it in mapguide several years ago. The process I used then was to have applications for each specific type of user. I created links for each and had authentication on each. Then in AGS you would need only to have a service for the base map and one for each different "editable layer". I haven't tried it but it would be an easy test to see if DB permissions would allow you to use one service for all layers, and all users (not displaying the data if no permissions). I assume you will be using the ADF for user maintained layers?

I'd go with a REST-backed web map for your purposes. You may be able to do it with a single map resource and ArcGIS Server authorization, but I would probably go with a single static map (perhaps even tiled) and then dynamic maps for user-specific stuff.