A Comparative Analysis of Programming Languages for GIS
|
|
|
- Aubrey Lucas
- 10 years ago
- Views:
Transcription
1 A Comparative Analysis of Programming Languages for GIS Kurt Swendson Department of Resource Analysis, Saint Mary s University of Minnesota, Minneapolis, MN Keywords: GIS, ArcMap, ArcView, ArcObjects, C#, Python, VB Script, VBA Abstract Many GIS departments in organizations throughout the world have developed customized tools using an Environmental Systems Research Institute (ESRI) proprietary language named Avenue. Avenue is reaching the end of its life cycle, and will soon be unsupported. ESRI has moved on to new versions of its software, which is not backward compatible with Avenue. This project explores the various options available to GIS professionals in order to bring their customized tools up to date using the latest software. Introduction GIS professionals may rewrite their customized GIS applications written in Avenue using many different languages and methods. Which of these is the best, in terms of development speed, execution speed, maintainability, and future scalability/ability to upgrade? Although the GIS sector is made up of highly skilled and trained professionals, the subset of these people who also have computer programming skills is much smaller, and thus more expensive (Marble, 2005). Careful planning and selection of a migration strategy is valuable in that it can save countless hours of research and development, and additionally save future development hours for inevitable further upgrades and migrations when Environmental Systems Research Institute (ESRI) and/or the rest of the computer industry moves to yet another software package. There are countless computer languages and operating systems available in the market today, but it is safe to assume the ESRI products will run on Microsoft Windows, using programming languages available for this operating system. Although ESRI does support Unix operating systems, this study will focus on software running on a Microsoft platform. The ESRI website shows the lifecycle chart for the various ArcView versions (Product Lifecycle Support Policy, n.d.). All versions but the latest version ArcView 3.3, have been retired, and ESRI no longer supports them. ArcView 3.3 has been moved from general availability to extended support to mature support, which is still supported, but at a cost (Product Lifecycle Support Policy: ArcGIS 3.3, n.d.). ESRI s new object oriented software, running under ArcGIS 9.x, is a COM-based model named ArcObjects. Swendson, Kurt A Comparative Analysis of Programming Languages in GIS. Volume 9, Papers in Resource Analysis. 13 pp. Saint Mary s University of Minnesota Central Services Press. Winona, MN. Retrieved (date) from 1
2 (Welcome to ArcObjects Online, n.d.). Therefore, languages that support COM are the only valid languages to review. Of those languages, the following will be studied: VBA (Visual Basic for Applications), VB Script, Python Script, Microsoft Visual Basic, Microsoft Visual C++, and C#.NET. This study will choose an example ArcView tool written in Avenue, the programming language used in ArcView, and duplicate all or part of its functionality using all of the above technologies, comparing and contrasting the different languages with regards to ease of development, ease of use, speed of execution, reliability, supportability, and integration into ArcToolbox and Model Builder. Methods Description of Original Tool With cooperation of the Minnesota DNR, a sample Avenue application was provided. It performs a number of useful GIS functions of varying complexity. The tool, as stated in the user manual: The Sampling Tool was designed to assist biologists in using ArcView to generate spatially explicit random or systematic sampling schemes to support resource monitoring, mapping, and research needs. The tool works either with polygons in a theme or with graphics that have been added to a view. Samples can be entirely within a single polygon or shape, or distributed among several disjoint polygons or shapes. A number of user defined constraints and settings are offered as input options (Minnesota DNR, 2005). The requirements of this project were to select a sample of existing tools from the given ArcView 3.3 application, implement the same functionality in different languages, and test for speed, reliability, integration into ArcToolbox, and ease of use. From these requirements, the following course of action was chosen: examine functionality of the existing ArcView 3.3 tool, choose various functions from the tool to convert to VBA within ArcMap, then duplicate the same functionality in the other languages. The functions chosen from the tool were as follows. 1. Random points: Within a selected group of polygons, generate n number of randomly spaced points. 2. Systematic square points: Within a selected group of polygons, generate a matrix of points, evenly spaced by n degrees. 3. Systematic triangle points: Within a selected group of polygons, generate a matrix of points, evenly spaced by n degrees. Every other row of points, offset by n * ½ degrees, resulting in points arranged in a triangular pattern. 4. Tiled hexagons: Within a selected group of polygons, generate a tiling of hexagons, having sides of n degrees long, completely covering the area. This was completed by first generating the triangle points, and connecting the points in a hexagonal pattern. The code for each tool could easily be changed to space the points by any unit of measure: meters, miles, feet, etc. Implement the Tool in ArcMap Keeping in mind the original project parameters, the true graphical user interface (GUI) oriented design of the original tool was unacceptable. The original project parameters were to develop a tool that would work within ArcToolbox or Model Builder. 2
3 The ArcView 3.3 tool worked by selecting a polygon in ArcView, then processing was done on the selection. The ArcMap tool was developed to start with a shapefile containing polygons. The entire group of polygons served as the input for processing. Therefore, porting the tool to a command line program that accepts parameters such as shapefile name, distance between points, and output file name could easily be done. From there, the tool could be integrated into ArcToolbox and Model Builder. Previous coursework at Saint Mary s University of Minnesota created a toolbox that contained examples of a command line script that received its parameters from ArcToolbox, thus proving it can be done. During the development of the VBA code, there was difficulty with implementation of the relational operator function, so an alternate plan was devised: draw a blanket of points and hexagons larger than the target area, and use the ArcToolbox tools to clip the points and hexagons that fell within the target area. Discussions with the DNR resulted in some new ideas and example code using the relational operator, eliminating the need to perform the clip operations. The example code provided many interesting ideas, but the code ended up not being used. Eventually, after experimentation inspired by the example code, the relational operator became workable. With the relational operator successfully implemented, as each point or hexagon is generated, the relational operator method asks: Does it overlap the target area? If it does, the feature is saved, otherwise it is ignored. The actual implementation asked not disjoint which covered all true operations: overlap, within, intersect, etc. With successful use of the relational operator function, the random point function was obtainable draw random points until the exact desired number of points fall within the target area. A brief outline of the original point/hexagon tool is stated here: 1. Get extent of the target area 2. Get user input on how far apart to put the points 3. Add a small amount to the extent, to make it bigger 4. Create blanket of points over adjusted extent 5. If hexagons are requested, draw hexagons over adjusted extent 6. Call clip tools to clip points 7. Call clip tools to clip hexagons exactly by target area [clipped hexagons] 8. Call clip tools to do spatial join of hexagons to target area [complete hexagons] After implementing the relational operator, the logic changed slightly: 1. Create relational operator on target area 2. Get user input on how far apart to put the points 3. Create blanket of points over adjusted extent 4. If hexagons are requested, draw hexagons over adjusted extent 5. If relational operator is not disjoint, save feature The triangle points are the vertices of the hexagons. Generating the points in this manner do not use the trigonometry functions which require much more processing time. Instead, alternate rows of points are offset by half the distance 3
4 between the points. The resulting triangular array of points can be easily connected to create regular hexagons. Implement the Tool in VB Script After successful implementation of the functionality in VBA, the same code was attempted in VB Script. VB Script has some drawbacks: no early bound COM objects are allowed. IDispatch is the interface that allows discovery of interfaces and methods at runtime late bound objects. All of the tools shown in ArcToolbox are late-bound COM objects. ESRI s ArcGIS Desktop Developer Guide, Appendix A provides an unparalleled introduction to using COM and ArcObjects. It states: The object classes within the ESRI object libraries do not implement the IDispatch interface; this means that these object libraries cannot be used with late binding scripting languages such as Java Script and VBScript, since these languages require that all COM servers accessed support the IDispatch interface (ESRI, 2004). Developers can easily see all the methods available for an object by using IntelliSense in VB/VBA. If instantiating an object that uses GPDispatch, and the control-space keystrokes are keyed, IntelliSense shows nothing. This additionally supports experimental evidence, where VBScript could not instantiate IEnvelope to get extent. In addition, no examples could be found on the web. Therefore, VB Script is unable to duplicate the functionality in ArcMap. It definitely can be used to script tools published in ArcToolbox because those COM objects implement IDispatch, but any early binding COM objects who do not implement IDispatch cannot be called with VB Script. This does not mean that a tool cannot be created in VB Script using a hybrid of the ArcToolbox tools and compiled VB or C++ components. If the developer would spend the time to develop the compiled components, he/she may as well develop all of the functionality in the compiled language. Implement the Tool in Python After termination of the VB Script portion of the project, Python was explored. Python is said to have good COM support, and probably should have the ability to support early binding COM methods. In Python Programming on Win32, Hammond and Robinson state that Python does support early binding, but only for IDispatch objects (Hammond and Robinson 2000). The utility makepy will create a Python class from the COM interface for use in the Python program. Here is an example run of makepy: Generating to d:\arcgis\python21\win32com\gen_py\2396ba16-b4c6-4d51-86e7-b E86Fx0x1x0.py "dogserver 1.0 Type Library" Generating to d:\arcgis\python21\win32com\gen_py\2396ba16-b4c6-4d51-86e7-b E86Fx0x1x0.py Having generated the wrapper Python class, it can be used in a Python script: import win32com.client w=win32com.client.dispatch("dogserver.dog") w.bark() The problem with makepy classes is that they do not support early binding COM objects. The discussion by Hammond and Robinson about early 4
5 binding actually is an early binding class of a late binding method. Another COM library, comtypes, is available on the web. It does true early binding of COM objects. Comtypes is dependent on another Python package named ctypes. Ctypes works exclusively with Python 2.3. After installing Python 2.4 from python.org, which is the most current version, the ctypes install presented an error requiring version 2.3 of Python to be installed. Perhaps when porting ctypes from 2.3 to 2.4, it was declared problematic or a feature of questionable value, and thus doing early binding COM with Python will only be an anomaly of 2.3. It could also be possible that the package is being written for 2.4 and not yet complete. Perhaps the ctypes install is erroneously hard coded to version 2.3, and if the versioning were changed to versions 2.3 and later, it would work for all qualified versions. Proof of Concept Using VB and C++ Upon experiencing such trouble, it was decided to prove the get extent call would work as a compiled VB and C++ program. First, make the ienv example program that minimally does the IEnvelope interface to determine the extent of a shapefile. Specific details about ienv will be discussed later. Project references are shown in Figure 1. The resulting programs reported maximum and minimum X and Y coordinates of an input polygon shapefile. They also proved, using compiled VB and C++, the implementation is possible. Having thus identified the COM objects required to implement some Figure 1. This figure shows the dependent ESRI libraries required to calculate the envelope of a polygon. Screenshot taken from the Microsoft Visual Basic IDE. functionality, each of the ESRI libraries were run through makepy to create the Python wrapper classes: Generating to D:\arcgis\python23\lib\sitepackages\win32com\gen_py\2396BA16-B4C6-4D51-86E7-B E86Fx0x1x0.py Generating to D:\arcgis\python23\lib\sitepackages\win32com\gen_py\ADC7DE29-DC0B -448E-BBF6-27E4E34CF2ECx0x1x0.py Generating to D:\arcgis\python23\lib\sitepackages\win32com\gen_py\1CE6AC65-43F FC0-D7ED298E4F1Ax0x1x0.py Generating to D:\arcgis\python23\lib\sitepackages\win32com\gen_py\0475BDB1-E5B2-4CA B4B1683E70C2x0x1x0.py Generating to D:\arcgis\python23\lib\sitepackages\win32com\gen_py\C4B094C2-FF32-4FA1-ABCB-7820F8D6FB68x0x1x0.py The desired functionality was still out of reach by merely using the resulting classes. In order to prove the COM objects were able to be instantiated at all, the Python COM browser was used. The entire list of all ESRI objects was shown, which is of considerable size. Examples of a few objects, as seen in the object browser, are shown in Figure 2. The file names for the objects are also reported. The ESRI DataSourcesFile object library filename is shown in Figure 3. 5
6 Figure 2. This figure shows an example of the Python Object Browser. Figure 3. A fully qualified file name shown in the Python Object Browser. Some properties of some of the objects examined in the object browser presented error messages. An application that uses the methods in the object shown in Figure 4 may not be able to do so using Python. Perhaps the errors shown here are a problem with the object browser, and not a shortcoming of the language specification. program ran, many files appeared in the <python dir>\lib\sitepackages\comtypes\gen folder that were not there before. Such behavior suggests that using the object browser or an application could instantiate and possibly internally makepy the objects. To further prove it is the case, all the objects from the <python dir>\ Lib\site-packages\comtypes \gen folder were deleted and the program was rerun. It generated the following output instead, which is promising, but also showed some unexpected output: C:\temp\model>ienv.py getmodule comtypes.gen._1ce6ac65_43f5_4529_8fc0_d7ed298e4f1a_1 comtypes.gen _c _2 comtypes.gen.stdole comtypes.gen.475bdb1_e5b2_4ca2_9127_b4b1683e70c2_1 comtypes.gen._5e1f7bc3_67c5_4aee_8ec6_c4b73aac42ed_1 comtypes.gen.esrisystem comtypes.gen._c4b094c2_ff32_4fa1_abcb_7820f8d6fb68_1 comtypes.gen.esrigeometry comtypes.gen._59fccd31_434c_4017_bdef_db4b7edc9ce0_1 comtypes.gen._4ecca6e2_b16b_4aca_bd17_e74cae4c150a_1 comtypes.gen.esrisystemui comtypes.gen.esridisplay comtypes.gen.esrigeodatabase comtypes.gen.esridatasourcesfile done getmodule do import wkspfact done import wkspfact inst obj done inst obj Check out spatial extension done check out add toolbox done add toolbox start dogserver done dogserver start shapefile C:\temp\model> Figure 4. Example type library showing errors in the Python Object Browser. In later experimentation, a test program used the esricatalog.olb module. This approach allowed the object to be instantiated. After the Upon observing the gen folder, all of the deleted.py files were regenerated, along with many more. The next experiment was to call a method that creates a typed return value, and call a method from that returned object. In short, implement the following VB code in Python: Dim pwsfact As IWorkspaceFactory 6
7 Set pwsfact = CreateObject("esriDataSourcesFile. ShapefileWorkspaceFactory.1") Dim pws As IWorkspace Set pws = pwsfact.openfromfile("d:\bb", 0) Step 1 was accomplished in previous experiments: create an IWorkspaceFactory. The earlier example [ienv.py] did just CreateObject. The next step is to call QueryInterface on IWorkspace Factory, and get an IWorkspace, and from that call the method OpenFromFile. OpenFromFile is shown in Figure 5 in the object browser. could be a possible explanation why this coclass is never used explicitly. The only way the coclass was revealed was to write the target program in another language, run regmon to see what COM objects it is using. Only then could the correct COM object be identified and used in the Python code. It seems excessive that such an effort is required to create an app in Python: first create a test app in another language. Next experiment: After successful instantiation of pwsfact = createobj (shapefilework spacefactory), call QueryInter face to transform it into an IWork spacefactory. Here is an example of the generated files: _1CE6AC65_43F5_4529_8FC0_D7ED298E4F1A_1.py.txt:554 :ShapefileWorkspaceFactory._com_interfaces_ = [comtypes.gen _c _ 2.IUnknown, comtypes.gen.475bdb1_e5b2_4ca2_9127_b4b1683e70c2_1.iworkspacefactory, comtypes.gen.475bdb1_e5b2_4ca2_9127_b4b1683e70c2_1.iworkspacefactory2] Figure 5. IWorkspaceFactory interface shown in the Python Object Browser. The only successful way to determine the coclass that was used by OpenFromFile was to run the compiled VB application [ienv.exe] while concurrently running regmon. It showed that the app looked up a coclass named esrigeodatabase. AggregateDatasetEnumImpl. The above code sample, which is the successful code, instantiates IWorkspace. Nowhere is AggregateDatasetEnumImpl shown. A web search of that coclass name turned up only one example, which did not do a CreateInstance of that coclass. In addition, the coclass is not documented anywhere in the ESRI website. The definition of aggregation Within the generated files, the section shown here defines the workspace factory: class ShapefileWorkspaceFactory(CoClass): u'esri Shapefile Workspace Factory.' _reg_clsid_ = GUID('{A06ADB96-D95C-11D1-AA81-00C04FA33A15}') _idlflags_ = [] _reg_typelib_ = ('{1CE6AC65-43F FC0- D7ED298E4F1A}', 1, 0) ShapefileWorkspaceFactory._com_interfaces_ = [comtypes.gen _c _ 2.IUnknown, comtypes.gen.475bdb1_e5b2_4ca2_9127_b4b1683e70c2_1.iworkspacefactory, comtypes.gen.475bdb1_e5b2_4ca2_9127_b4b1683e70c2_1.iworkspacefactory2] Here is the final implementation in the Python code: pwsfact = comtypes.client.createobject("esridatasourcesfile. ShapefileWorkspaceFactory") o1 = pwsfact.queryinterface(comtypes.iunknown) o2 = o1.queryinterface(comtypes.gen.475bdb1_e5b2_4ca2_912 7_B4B1683E70C 2_1.IWorkspaceFactory) print "now open files" pws = o2.openfromfile("c:\\temp\\model",0) print "done open files" It can be seen that o2 is of the proper interface type to call the 7
8 OpenFromFile method. This is the desired COM object: IWorkspace._methods_ = [ COMMETHOD(['propget', helpstring(u'the connection properties of the workspace.')], HRESULT, 'ConnectionProperties', POINTER(POINTER(comtypes.gen._5E1F7BC3_67C5_4AEE_8EC6_ C4B73AAC42ED_1.IPropertySet)), 'ConnectionProperties' )), COMMETHOD(['propget', helpstring(u'the factory that created the workspace.')], HRESULT, 'WorkspaceFactory', POINTER(POINTER(IWorkspaceFactory)), 'Factory' )), COMMETHOD(['propget', helpstring(u'the datasets in the workspace.')], HRESULT, 'Datasets', ( ['in'], esridatasettype, 'DatasetType' ), POINTER(POINTER(IEnumDataset)), 'Datasets' )), COMMETHOD(['propget', helpstring(u'the DatasetNames in the workspace.')], HRESULT, 'DatasetNames', ( ['in'], esridatasettype, 'DatasetType' ), POINTER(POINTER(IEnumDatasetName)), 'DatasetNames' )), COMMETHOD(['propget', helpstring(u'the file system full path of the workspace.')], HRESULT, 'PathName', POINTER(BSTR), 'PathName' )), COMMETHOD(['propget', helpstring(u'the Type of the Workspace.')], HRESULT, 'Type', POINTER(esriWorkspaceType), 'Type' )), COMMETHOD([helpstring(u'TRUE if the workspace is a file system directory.')], HRESULT, 'IsDirectory', POINTER(VARIANT_BOOL), 'isdir' )), COMMETHOD([helpstring(u'Checks if the workspace exists.')], HRESULT, 'Exists', POINTER(VARIANT_BOOL), 'Exists' )), COMMETHOD([helpstring(u'Executes the specified SQL statement.')], HRESULT, 'ExecuteSQL', ( ['in'], BSTR, 'sqlstmt' )),] After weeks of experimentation, the integrity of the Python development environment began to decay. When running pythonwin, Windows Explorer and Notepad freeze and become unusable until pythonwin is exited. Python documentation states CoUnInitialize is not working correctly, and experience confirms it. About 30 seconds after the script completes execution, Windows presents an error message. Such behavior raised suspicion that critical Python system files were corrupt, so Python was completely uninstalled and re-installed. It unfortunately still showed the same undesirable behavior after reinstalling Python. It is entirely possible that the author s inexperience with Python caused some of the observed behavior, but it is evident that many of the problems identified are still valid problems regardless of the experience of the developer. Compiled VB and C++ Restated In the process of trying to use Python, portions of the code were successfully written in compiled VB and C++. It is therefore possible to implement the code in the compiled languages. This statement is important: C++ can implement any functionality, especially COM implementations. Compiled VB code is syntactically identical to the VBA code written within ArcMap, and therefore is equally able to implement the desired functionality. There was no need to prove these two languages were viable by completely implementing the solution demonstrated in VBA. Small programs that demonstrated various parts of the complete solution, along with the whole solution within ArcMap, were sufficient. Implement the Tool in C#.NET ESRI provides a wealth of documentation and code samples from both ESRI documentation and from the user community in the ESRI user forums. As stated in the introduction, the VBA implementation of ArcObjects is mature and well documented, and the number of C# code samples is steadily increasing. Therefore, it was relatively easy to continue the development paradigm using C#: find C# samples on the web, modify the samples to incorporate the desired functionality, and repeat. The resulting application was completely command line driven; a command line program, using parameters such as shapefile name, distance between points, and output 8
9 shapefile name, can be typed from the command line or invoked from ArcToolbox. Results Original expectations were that all languages would be equal and an organization could choose to use any language that best suited its IT staff. However, the manual stated that VB script was unable to support early binding COM objects. If a homogenous VB script solution is strongly desired, an IDispatch wrapper/shell for the required COM objects of the application at hand could be created. The drawback of this solution is that any future updates to the underlying objects could break the wrapper and need to be updated accordingly. Python was also disqualified. It was better than VBScript in that it supports early binding COM objects, but not without problems, and some of the objects were not able to be supported (Figure 4). There was also the question of ctypes s availability only in Python 2.3. VBA, integrated into ArcMap, was able to deliver all functionality without problem. Additionally, compiled VB and C++ demonstrated their abilities to support the functionality. C#, which implements the.net language specification, was able to deliver the desired functionality. Because all.net languages support the common language specification, all.net languages may be considered identical and are thus able to deliver the desired functionality. Development Time Because not all languages were able to deliver the final product, only VBA and C# will be discussed. Most development is an iterative process of find an example, modify the example to more closely match end result, and repeat. It may not be a fair comparison to redo the same exact application in all languages to see which one is easier to develop. Lessons learned in writing the program in one language can be exploited in the other languages. Each language should be used to write a different end product, of comparable complexity, in order to eliminate such learning experiences. There is also the unfair advantage of a language the developer has more experience in. All in all, the development time of VBA and C# were fairly equal. Part of the development time was learning the ArcObjects object model. The ArcObjects model is much larger and more complex than many developers encounter. Execution Time After the languages VBA and C# had been proven as viable languages, their execution times were compared. The first test was conducted on the original computer the applications were developed on: an HP Pavilion dv5000 with an AMD Turion 64 bit 1.8 GHz with 1 GB RAM, running 32 bit Windows XP Professional. The VBA application performed acceptably, taking less than a minute to create approximately 500 points and 200 hexagons over an area of 250,000 square miles. In comparison, the C# application took 37 times longer to perform the exact same thing. 9
10 This prompted a careful analysis of the source code, which revealed little room for improvement. The only questionable code, which followed the ESRI example of efficient creation of polygons, did the following within a function that was called repeatedly; once for each hexagon: IPoint ppointsring0 = new PointClass(); IPoint ppointsring1 = new PointClass(); IPoint ppointsring2 = new PointClass(); IPoint ppointsring3 = new PointClass(); IPoint ppointsring4 = new PointClass(); IPoint ppointsring5 = new PointClass(); IPoint ppointsring6 = new PointClass(); ESRI code samples provided with the ArcGIS install were described as the most efficient way to create polygons. Perhaps, in the case of this application, where many polygons were created, it is not the most efficient method. It may be efficient for the creation of a single polygon. The code was changed to declare and instantiate the PointClass objects once, outside the function, as member variables to avoid duplicate construction/destruction. This modification improved the performance by 4 minutes. Figure 6 shows the improvement between C# physical 1 and STA physical. Additional analysis of COM performance prompted comparison between apartment threading models to eliminate marshalling overhead. Again, Appendix A of the developer guide provides more information on COM, briefly outlining the meaning of apartment threading models (ESRI, 2004). All subsequent experiments compare the performance of the C# application using both threading models. Experiments shown on the bar graphs are designated as running the STA or MTA threading models. Additionally, the applications were compared on operating systems running on Microsoft Virtual PC and Microsoft Virtual Server Experiments shown on the bar graphs are designated as running physical or virtual. Knowing these facts about the experiments and environments, the names of the experiments on the graphs may be interpreted as follows: 1) VB physical: VBA app run on physical computer. 2) VB virtual: VBA app run on virtual image, run on that physical computer. 3) C# physical: C# app, default threading model, run on physical computer. 4) STA physical: C# app, explicitly coded to use STA threading model, run on physical computer. 5) STA virtual: C# app, explicitly coded to use STA threading model, run on virtual image, run on that physical computer. 6) MTA physical: C# app, explicitly coded to use MTA threading model, run on physical computer. 7) MTA virtual: C# app, explicitly coded to use MTA threading model, run on virtual image, run on that physical computer. The virtual system running on the HP dv5000 computer is Microsoft Virtual PC, running Microsoft XP Professional, using 660 MB RAM. To prove the performance issues are not an anomaly of a single machine, the same application was installed and run on other computers. The next experimental machine was a newly built Dell Dimension 4400 with a Pentium GHz with 750 MB RAM, running Windows XP 10
11 Professional. The OS was installed from scratch, ArcGIS 9.1 was installed, and the application was copied to the computer and run. This clean install removes any risk of system corruption from continued development, installation Experiment MTA virtual STA virtual VB virtual MTA physical STA physical C# physical 1 VB physical HP dv Seconds Figure 6. HP dv5000 experimental results. and uninstallation of various products. All subsequent experiments were completed in this way: clean install of Windows, ArcGIS, and the application. The virtual computer running on this system is Microsoft Virtual PC running an instance of Microsoft XP Professional with 555 MB RAM. Results of this machine are outlined in Figure 7. Computer time was acquired on an instance of Microsoft Windows Server 2003 Enterprise Edition, running on Microsoft Virtual Server 2003 at 1.33 GHz and 1.95 GB RAM, on a Dell 2950 host with dual Intel Xeon 5150 processors at 2.66 GHz with 16 GB RAM running Microsoft Server 2003 R2 Enterprise x64 Edition. Figure 8 shows the results on this virtual machine. It was observed that the applications run consistently faster on the virtual machines. It was observed that memory usage was low and the majority of delay in the C# app was because it was I/O bound, repeatedly accessing the registry. While running the slow C# app, regmon results were monitored. It could be seen that the app was continually recreating a COM object because it repeatedly got the same registry key in HKEY_CLASSES_ROOT. Experiment MTA virtual STA virtual C# virtual VB virtual Dell Experiment Dell 4400 MTA virtual 434 STA virtual 389 C# virtual 457 VB virtual 10 C# physical 416 VB physical Seconds Figure 7. Dell 4400 experimental results Seconds Figure 8. Dell 2950 experimental results. This behavior draws the conclusion that the.net classes are just COM interop wrapper classes. They are not doing anything more than adding extra overhead, as the following pseudo code outlines: Create instance of class Call class method 11
12 Class creates COM object Class calls COM object Class releases COM object Class goes out of scope; it is destructed. slow, in time ESRI will rewrite them in pure C# and vastly improve their performance. ESRI s ArcObjects is the single most extensive COM object model in the world. ESRI cannot simply rewrite everything overnight. They can, however, create several thousand wrapper classes with one line of code: Experiment catcaller cscaller caller COM interop for %i in (*.olb) do tlbimp %i /out:%i.dnet.olb In time, ESRI will rewrite all objects in pure C#. The COM interop overhead will then be eliminated. To demonstrate, a simple COM object [dogserver], that appends a single line containing date and time to a text file, was written in C++, and called with a C++ caller. Afterwards, a COM interop wrapper was created with tlbimp as demonstrated above, and called from a C# caller. It was understandably slower because of the added overhead of the wrapper class created by tlbimp. Next a pure C# implementation [catserver], which also appends date and time to a text file, saved as a callable C# class in a DLL assembly, was called from a C# caller. It turned out to be faster than the original COM program written in C++. Figure 9 shows the results. Caller is the C++ program that calls dogserver. CSCaller is a C# program that calls dogserver using COM interop. Catcaller is the C# program that calls catserver. All three programs call the method to write to the text file 5000 times. This gives strong evidence that although code written with today s C# class wrappers to ArcObjects may run Seconds Figure 9. COM interop experimental results. Hopefully in the interim, ESRI will rewrite the most heavily used COM objects first, so the benefits demonstated here can be reaped as soon as possible. Discussion It was proven that some languages are unable to deliver complete functionality. It was also found that the development time was roughly equal. The reason for this research topic was such that many organizations are faced with maintaining an obsolete, unsupported product. They must move forward to a more current technology. The agonizing question: which language is best for the future of the organization? With development time, maintainability, online support, and industry acceptance of VB, VBA, C++, VB.NET, and C# being equal, it appears that the longevity of the chosen language should be the deciding factor. Microsoft has announced the transition of Visual Studio 6 (VB, C++) from full support to end of lifetime support (Microsoft, 2006). Microsoft is also strongly recommending that organizations migrate their code to the new languages that support.net. ESRI 12
13 and Microsoft both show examples of web services, VB.NET, and C# to leverage the latest languages. Knowing this, it is quite evident that programs written in the more recent languages, such as Visual Basic 6, will soon need to be migrated to the newer.net compliant languages. Therefore, the strategic solution would be migration of Avenue directly to.net if possible, and thus prevent another costly round of refactoring. Some organizations convert their code in a reactionary way with little thought to consider the future. This study has shown what languages are viable, and provides evidence to help make a prudent choice regarding the future. Applications needing quick response time may need to be written in VBA in the interim until ESRI completes its C# rewrite of all ArcObjects. Environmental Systems Research Institute, Inc., Welcome to ArcObjects Online, Retrieved June 2006 from efault.asp. Hammond, M. and Robinson, A Python Programming on Win32, O Reilly & Associates, Sebastopol, CA. Marble, D. F Defining the Components of the Geospatial Workforce Who Are We? Arc News Vol. 27 No. 4, 1. Microsoft Corporation, Microsoft Support Lifecycle, Retrieved June 2006 from /lifecycle/?ln=en-us&p1=3003& x=15&y=10. Minnesota DNR DNR Sampling Tool (V2.8 Nov 09,2005), Minnesota DNR, Saint Paul, MN. Acknowledgments I would like to thank Tim Loesch of the Minnesota DNR and the Resource Analysis staff at Saint Mary s University of Minnesota for their help during this project. References Environmental Systems Research Institute, Inc ArcGIS Desktop Developer Guide, 139, Online manual provided with install of ArcGIS 9 software. Environmental Systems Research Institute, Inc., Product Lifecycle Support Policy: ArcView GIS (3.3), Retrieved June 2006 from duct%20life%20cycle/other_/589arcvi ewgis.pdf. 13
Introduction. Why (GIS) Programming? Streamline routine/repetitive procedures Implement new algorithms Customize user applications
Introduction Why (GIS) Programming? Streamline routine/repetitive procedures Implement new algorithms Customize user applications 1 Computer Software Architecture Application macros and scripting - AML,
ArcGIS 9. Installation Guide: Workgroup for Microsoft SQL Server Express
ArcGIS 9 Installation Guide: Workgroup for Microsoft SQL Server Express Copyright 2006 ESRI All Rights Reserved. Printed in the United States of America. The information contained in this document is the
DOCSVAULT Document Management System for everyone
Installation Guide DOCSVAULT Document Management System for everyone 9 v Desktop and Web Client v On Premises Solution v Intelligent Data Capture v Email Automation v Workflow & Record Retention Installing
Government 1009: Advanced Geographical Information Systems Workshop. LAB EXERCISE 3b: Network
Government 1009: Advanced Geographical Information Systems Workshop LAB EXERCISE 3b: Network Objective: Using the Network Analyst in ArcGIS Implementing a network functionality as a model In this exercise,
MrSID Plug-in for 3D Analyst
LizardTech MrSID Plug-in for 3D Analyst User Manual Copyrights Copyright 2009 2010 LizardTech. All rights reserved. Information in this document is subject to change without notice. The software described
e-config Data Migration Guidelines Version 1.1 Author: e-config Team Owner: e-config Team
Data Migration was a one-time optional activity to migrate the underlying portfolio database in e- config and was only needed during the e-config Upgrade that was rolled out on January 21, 2013. This document
Iron Speed Designer Installation Guide
Iron Speed Designer Installation Guide Version 1.6 Accelerated web application development Updated May 11, 2004 Iron Speed, Inc. 1953 Landings Drive Mountain View, CA 94043 650.215.2200 www.ironspeed.com
INTRODUCTION TO ARCGIS SOFTWARE
INTRODUCTION TO ARCGIS SOFTWARE I. History of Software Development a. Developer ESRI - Environmental Systems Research Institute, Inc., in 1969 as a privately held consulting firm that specialized in landuse
Enterprise Deployment: Laserfiche 8 in a Virtual Environment. White Paper
Enterprise Deployment: Laserfiche 8 in a Virtual Environment White Paper August 2008 The information contained in this document represents the current view of Compulink Management Center, Inc on the issues
V2.8.x Installation on a Database Server Note: This document is to be used on a new database server installation.
V2.8.x Installation on a Database Server Note: This document is to be used on a new database server installation. REVISION A DATE: 10/5/2011 CA3000 Software Installation Procedure Continental Access and
Getting Started With LP360
Getting Started With LP360 10/30/2014 1 Contents What is LP360?... 3 System Requirements... 3 Installing LP360... 4 How to Enable the LP360 Extension... 4 How to Display the LP360 Toolbar... 4 How to Import
FREQUENTLY ASKED QUESTIONS
FREQUENTLY ASKED QUESTIONS Secure Bytes, October 2011 This document is confidential and for the use of a Secure Bytes client only. The information contained herein is the property of Secure Bytes and may
V2.7.x Installation on a Database Server Note: This document is to be used on a new database server installation.
V2.7.x Installation on a Database Server Note: This document is to be used on a new database server installation. REVISION A DATE: 10/01/2009 CA3000 Software Installation Procedure Continental Access and
System Requirements Table of contents
Table of contents 1 Introduction... 2 2 Knoa Agent... 2 2.1 System Requirements...2 2.2 Environment Requirements...4 3 Knoa Server Architecture...4 3.1 Knoa Server Components... 4 3.2 Server Hardware Setup...5
SPEX for Windows Client Server Version 8.3. Pre-Requisite Document V1.0 16 th August 2006 SPEX CS 8.3
SPEX for Windows Client Server Version 8.3 Pre-Requisite Document V1.0 16 th August 2006 Please read carefully and take note of the applicable pre-requisites contained within this document. It is important
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
MAGENTO HOSTING Progressive Server Performance Improvements
MAGENTO HOSTING Progressive Server Performance Improvements Simple Helix, LLC 4092 Memorial Parkway Ste 202 Huntsville, AL 35802 [email protected] 1.866.963.0424 www.simplehelix.com 2 Table of Contents
Sage 100 Premium Version 2016 Supported Platform Matrix Created as of November 25, 2015
The information in this document applies to Sage 100 Premium Version 2016. Detailed product update information and support policies can be found on the Sage Support web site at: https://support.na.sage.com/.
Athena Knowledge Base
Athena Knowledge Base The Athena Visual Studio Knowledge Base contains a number of tips, suggestions and how to s that have been recommended by the users of the software. We will continue to enhance this
VMware Server 2.0 Essentials. Virtualization Deployment and Management
VMware Server 2.0 Essentials Virtualization Deployment and Management . This PDF is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.
Sage 100 Premium ERP Version 2015 Supported Platform Matrix Created as of April 6, 2015
The information in this document applies to Sage 100 Premium ERP Version 2015.Detailed product update information and support policies can be found on the Sage Support web site at: https://support.na.sage.com/
Print Audit 6 Technical Overview
Print Audit 6 Technical Overview Print Audit 6 is the most accurate and powerful suite of print tracking and print management products available. It is used to analyze, reduce and recover costs along with
Pcounter Web Report 3.x Installation Guide - v2014-11-30. Pcounter Web Report Installation Guide Version 3.4
Pcounter Web Report 3.x Installation Guide - v2014-11-30 Pcounter Web Report Installation Guide Version 3.4 Table of Contents Table of Contents... 2 Installation Overview... 3 Installation Prerequisites
INSTALLATION GUIDE ENTERPRISE DYNAMICS 9.0
INSTALLATION GUIDE ENTERPRISE DYNAMICS 9.0 PLEASE NOTE PRIOR TO INSTALLING On Windows 8, Windows 7 and Windows Vista you must have Administrator rights to install the software. Installing Enterprise Dynamics
Special Edition for FastTrack Software
08/14 The magazine for professional system and networkadministration Special Edition for FastTrack Software Tested: FastTrack Automation Studio www.it-administrator.com TESTS I FastTrack Automation Studio
7.x Upgrade Instructions. 2015 Software Pursuits, Inc.
7.x Upgrade Instructions 2015 Table of Contents INTRODUCTION...2 SYSTEM REQUIREMENTS FOR SURESYNC 7...2 CONSIDERATIONS BEFORE UPGRADING...3 TERMINOLOGY CHANGES... 4 Relation Renamed to Job... 4 SPIAgent
COM+ OVERVIEW OF MICROSOFTS COM, DCOM AND COM+ COMPONENT TECHNOLOGIES DCOM - COM+ Peter R. Egli INDIGOO.COM. indigoo.com. 1/20 Rev. 1.
COM, DCOM - COM+ DCOM, COM+ OVERVIEW OF MICROSOFTS COM, DCOM AND COM+ COMPONENT TECHNOLOGIES Peter R. Egli INDIGOO.COM 1/20 Contents 1. Evolution of COM 2. COM, DCOM, ActiveX, OLE, COM+ 3. Structure of
Hardware and Software Requirements. Release 7.5.x PowerSchool Student Information System
Release 7.5.x PowerSchool Student Information System Released October 2012 Document Owner: Documentation Services This edition applies to Release 7.5.x of the PowerSchool software and to all subsequent
Computer Requirements
Installing Pro64 Network Manager It is recommended that you quit all running Windows applications before starting the Aviom Pro64 Network Manager installation process. Check the Aviom website (www.aviom.com)
Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT
Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT AGENDA 1. Introduction to Web Applications and ASP.net 1.1 History of Web Development 1.2 Basic ASP.net processing (ASP
A Method Using ArcMap to Create a Hydrologically conditioned Digital Elevation Model
A Method Using ArcMap to Create a Hydrologically conditioned Digital Elevation Model High resolution topography derived from LiDAR data is becoming more readily available. This new data source of topography
An Esri White Paper June 2010 Tracking Server 10
An Esri White Paper June 2010 Tracking Server 10 Esri 380 New York St., Redlands, CA 92373-8100 USA TEL 909-793-2853 FAX 909-793-5953 E-MAIL [email protected] WEB www.esri.com Copyright 2010 Esri All rights
Publishing Geoprocessing Services Tutorial
Publishing Geoprocessing Services Tutorial Copyright 1995-2010 Esri All rights reserved. Table of Contents Tutorial: Publishing a geoprocessing service........................ 3 Copyright 1995-2010 ESRI,
Table of Contents. FleetSoft Installation Guide
FleetSoft Installation Guide Table of Contents FleetSoft Installation Guide... 1 Minimum System Requirements... 2 Installation Notes... 3 Frequently Asked Questions... 4 Deployment Overview... 6 Automating
INTRODUCTION to ESRI ARCGIS For Visualization, CPSC 178
INTRODUCTION to ESRI ARCGIS For Visualization, CPSC 178 1) Navigate to the C:/temp folder 2) Make a directory using your initials. 3) Use your web browser to navigate to www.library.yale.edu/mapcoll/ and
What is new in Switch 12
What is new in Switch 12 New features and functionality: Remote Designer From this version onwards, you are no longer obliged to use the Switch Designer on your Switch Server. Now that we implemented the
How to Prepare for the Upgrade to Microsoft Dynamics CRM 2013 (On-premises)
How to Prepare for the Upgrade to Microsoft Dynamics CRM 2013 (On-premises) COMPANY: Microsoft Corporation RELEASED: September 2013 VERSION: 1.0 Copyright This document is provided "as-is". Information
CE 504 Computational Hydrology Computational Environments and Tools Fritz R. Fiedler
CE 504 Computational Hydrology Computational Environments and Tools Fritz R. Fiedler 1) Operating systems a) Windows b) Unix and Linux c) Macintosh 2) Data manipulation tools a) Text Editors b) Spreadsheets
ArcGIS 10.1: The Installation and Authorization User Guide
ArcGIS 10.1: The Installation and Authorization User Guide This document outlines the steps needed to download, install, and authorize ArcGIS 10.1 as well as to transfer/upgrade existing ArcGIS 10.0/9.x
Sage ERP MAS 90 Sage ERP MAS 200 Sage ERP MAS 200 SQL. Installation and System Administrator's Guide 4MASIN450-08
Sage ERP MAS 90 Sage ERP MAS 200 Sage ERP MAS 200 SQL Installation and System Administrator's Guide 4MASIN450-08 2011 Sage Software, Inc. All rights reserved. Sage, the Sage logos and the Sage product
Backup Exec 15. Quick Installation Guide
Backup Exec 15 Quick Installation Guide 21344987 Documentation version: 15 PN: 21344987 Legal Notice Copyright 2015 Symantec Corporation. All rights reserved. Symantec, the Symantec Logo, the Checkmark
Speeding up PDF display in Acrobat
Speeding up PDF Display (Firefox 2) Speeding up PDF display in Acrobat WHY CHANGE THE PDF DISPLAY BEHAVIOUR?...1 FIREFOX 2...2 INTERNET EXPLORER 7...5 Why change the PDF display behaviour? Why? Because
MAS 90. Installation and System Administrator's Guide 4WIN1010-02/04
MAS 90 Installation and System Administrator's Guide 4WIN1010-02/04 Copyright 1998-2004 Best Software, Inc. All rights reserved. Rev 02 Contents Chapter 1 Introduction 1 How to Use This Manual 1 Graphic
Export Server Object Extension and Export Task Install guide. (V1.1) Author: Domenico Ciavarella ( http://www.studioat.it )
Export Server Object Extension and Export Task Install guide. (V1.1) Author: Domenico Ciavarella ( http://www.studioat.it ) The Export shapefile Task brings the relevant functionality into your web applications.
Installing and Administering VMware vsphere Update Manager
Installing and Administering VMware vsphere Update Manager Update 1 vsphere Update Manager 5.1 This document supports the version of each product listed and supports all subsequent versions until the document
VMware Virtualization and Software Development
VMware Virtualization and Software Development 1 VMware Virtualization and Software Development Mark Cloutier Undergraduate Student, Applied Math and Computer Science Keywords: Virtualization, VMware,
Analyzing and creating GIS data using Python programming. Josh Foery, JR Franks, Connor McMillan
Analyzing and creating GIS data using Python programming Josh Foery, JR Franks, Connor McMillan Introduction In the digital age, modern companies and organizations have acquired vast quantities of geospatial
Upgrading to Windows 8.1 A Guide for Windows 7 Users 2014-05-28 Version 1.2
Upgrading to Windows 8.1 A Guide for Windows 7 Users 2014-05-28 Version 1.2 TABLE OF CONTENTS Introduction... 1 Before You Upgrade... 1 Windows 8.1 System Requirements... 1 Upgrading to Windows 8.1 from
Studio 5.0 User s Guide
Studio 5.0 User s Guide wls-ug-administrator-20060728-05 Revised 8/8/06 ii Copyright 2006 by Wavelink Corporation All rights reserved. Wavelink Corporation 6985 South Union Park Avenue, Suite 335 Midvale,
webkpi SaaS ETL Connector Installation & Configuration Guide
webkpi SaaS ETL Connector Installation & Configuration Guide SaaS ETL Version 2.5.0.12 Version 1.6 September 2013 webkpi SaaS ETL Connector Version 2.5.0.12 V 1.6 Page 1 Table of Contents Table of Contents
Sage MAS 200 ERP Level 3.71 Version 4.30 Supported Platform Matrix
The information in this document applies to Sage MAS 200 ERP Level 3.71 through version 4.30. Sage generally supports only the current Sage MAS 200 level and one prior major level. As of the version 4.10
ArcGIS. Writing Geoprocessing Scripts With ArcGIS
ArcGIS 9 Writing Geoprocessing Scripts With ArcGIS PUBLISHED BY ESRI 380 New York Street Redlands, California 92373-8100 Copyright 2004 ESRI All Rights Reserved. Printed in the United States of America.
Troubleshooting Business Analyst Installation and Startup
Troubleshooting Business Analyst Installation and Startup Contents Installation Issues..Pg 1 Licensing Issues...Pg 6 Crystal Report Issues...Pg 9 Documentation Issue.. Pg 13 Installation Issues I 1. Question:
GAUSS 9.0. Quick-Start Guide
GAUSS TM 9.0 Quick-Start Guide Information in this document is subject to change without notice and does not represent a commitment on the part of Aptech Systems, Inc. The software described in this document
JAMF Software Server Installation Guide for Linux. Version 8.6
JAMF Software Server Installation Guide for Linux Version 8.6 JAMF Software, LLC 2012 JAMF Software, LLC. All rights reserved. JAMF Software has made all efforts to ensure that this guide is accurate.
User's Guide - Beta 1 Draft
IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft Hyper-V Server Agent vnext User's Guide - Beta 1 Draft SC27-2319-05 IBM Tivoli Composite Application Manager for Microsoft
Web Supervisor/Agent. System Requirements & Troubleshooting Guide. 989 Old Eagle School Road Wayne, PA 19087 (610) 964-8000. www.evolveip.
Web Supervisor/Agent System Requirements & Troubleshooting Guide 989 Old Eagle School Road Wayne, PA 19087 (610) 964-8000 www.evolveip.net Evolve IP Guide Copyright Notice Trademarks Copyright 2011 Evolve
Telelogic DASHBOARD Installation Guide Release 3.6
Telelogic DASHBOARD Installation Guide Release 3.6 1 This edition applies to 3.6.0, Telelogic Dashboard and to all subsequent releases and modifications until otherwise indicated in new editions. Copyright
GUARD1 PLUS SE Administrator's Manual
GUARD1 PLUS SE Administrator's Manual Version 4.4 30700 Bainbridge Road Solon, Ohio 44139 Phone 216-595-0890 Fax 216-595-0991 [email protected] www.guard1.com i 2010 TimeKeeping Systems, Inc. GUARD1 PLUS
Installation Guide: Migrating Report~Pro v18
Introduction... 2 Overview... 2 System Requirements... 3 Hardware Requirements... 3 Software Requirements... 3 Assumptions... 4 Notes... 4 Installation Package Download... 5 Package Contents... 5 Pre-Installation
Course Syllabus: RIA Programming for Magic xpa 2.x Developers
Course Syllabus: RIA Programming for Magic xpa 2.x Developers TABLE OF CONTENTS: 1. Course Objectives and Goals... 1 2. General Course Details... 2 3. Lesson Outline... 2 4. Technical Material... 3 5.
FileMaker 12. ODBC and JDBC Guide
FileMaker 12 ODBC and JDBC Guide 2004 2012 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker and Bento are trademarks of FileMaker, Inc.
This Deployment Guide is intended for administrators in charge of planning, implementing and
YOUR AUTOMATED EMPLOYEE Foxtrot Deployment Guide Enterprise Edition Introduction This Deployment Guide is intended for administrators in charge of planning, implementing and maintaining the deployment
FileMaker 11. ODBC and JDBC Guide
FileMaker 11 ODBC and JDBC Guide 2004 2010 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker, Inc. registered
A Path from Windows Desktop to HTML5
A Path from Windows Desktop to HTML5 GIZMOX TRANSPOSITION: The path to modern enterprise application code a Reduce Risk, Cost, and Time to Market for Legacy App Conversions GIZMOX TRANSPOSITION Introduction
x64 Servers: Do you want 64 or 32 bit apps with that server?
TMurgent Technologies x64 Servers: Do you want 64 or 32 bit apps with that server? White Paper by Tim Mangan TMurgent Technologies February, 2006 Introduction New servers based on what is generally called
Microsoft Dynamics CRM 2011 Guide to features and requirements
Guide to features and requirements New or existing Dynamics CRM Users, here s what you need to know about CRM 2011! This guide explains what new features are available and what hardware and software requirements
ScriptLogic Enterprise Security Reporter. VERSION 3 Installation Guide
ScriptLogic Enterprise Security Reporter VERSION 3 Installation Guide ENTERPRISE SECURITY REPORTER 3 INSTALLATION GUIDE II Copyright 2011 by ScriptLogic Corporation All rights reserved. This publication
Sage CRM Technical Specification
Sage CRM Technical Specification Client Software This document outlines the recommended minimum software and hardware requirements for running Sage CRM. Please note that while the document refers to Sage
ASP &.NET. Microsoft's Solution for Dynamic Web Development. Mohammad Ali Choudhry Milad Armeen Husain Zeerapurwala Campbell Ma Seul Kee Yoon
ASP &.NET Microsoft's Solution for Dynamic Web Development Mohammad Ali Choudhry Milad Armeen Husain Zeerapurwala Campbell Ma Seul Kee Yoon Introduction Microsoft's Server-side technology. Uses built-in
Course Syllabus: RIA Programming for unipaas V1.x Developers
TABLE OF CONTENTS: Course Syllabus: RIA Programming for unipaas V1.x Developers Course Objectives and Goals Course Objectives and Goals... 1 General Course Details... 1 Lesson Outline... 2 Technical Material...
Getting Started with STATISTICA Enterprise Programming
Getting Started with STATISTICA Enterprise Programming 2300 East 14th Street Tulsa, OK 74104 Phone: (918) 749 1119 Fax: (918) 749 2217 E mail: mailto:[email protected] Web: www.statsoft.com
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
Amadeus Selling Platform 3.1 P120
Amadeus Selling Platform 3.1 P120 Installation Guide Terminal Server and Citrix Index 1 Introduction... 3 1.1 About this guide... 3 1.2 Intended audience... 3 2 Limitations and requirements... 3 3 Technical
Planning a Successful Visual Basic 6.0 to.net Migration: 8 Proven Tips
Planning a Successful Visual Basic 6.0 to.net Migration: 8 Proven Tips Jose A. Aguilar January 2009 Introduction Companies currently using Visual Basic 6.0 for application development are faced with the
Centran Version 4 Getting Started Guide KABA MAS. Table Of Contents
Page 1 Centran Version 4 Getting Started Guide KABA MAS Kaba Mas Welcome Kaba Mas, part of the world-wide Kaba group, is the world's leading manufacturer and supplier of high security, electronic safe
Advanced reporting capability SQL Server Integration Services (SSIS)
Improves data retrieval and transaction processing Schedules and automates routine managements tasks, such as: Database consistency checks Index rebuilds and defragmentations Backups (Full, Differential,
PLEASE NOTE: The client data used in these manuals is purely fictional.
Welcome! CAREWare Quick Start guides will walk you through the basics of setting up, managing and using the main CAREWare functions. It is intended for non-technical users who just need to get basic information
The Development and Implementation of a GIS System for Sunde Land Surveying, LLC.
The Development and Implementation of a GIS System for Sunde Land Surveying, LLC. Ryan R. Bormann 1,2 1 Department of Resource Analysis, Saint Mary s University of Minnesota, Winona, MN 55987. 2 Sunde
Embedded Operating Systems in a Point of Sale Environment. White Paper
Embedded Operating Systems in a Point of Sale Environment White Paper December 2008 Contents Embedded Operating Systems in a POS Environment... 3 Overview... 3 POS Operating Systems... 3 Operating Systems
MAS 200 Supported Platform Matrix
The information in this document applies to MAS 200 Level 3.60 and higher. Best Software only supports the current MAS 200 level and one major level back. As of the Level 3.70 release, MAS 200 Levels 3.51
Table of Contents. Introduction...9. Installation...17. Program Tour...31. The Program Components...10 Main Program Features...11
2011 AdRem Software, Inc. This document is written by AdRem Software and represents the views and opinions of AdRem Software regarding its content, as of the date the document was issued. The information
Wise Package Studio 8.0 MR1 Release Notes
Wise Package Studio 8.0 MR1 Release Notes Wise Package Studio 8.0 MR1 Release Notes The software described in this book is furnished under a license agreement and may be used only in accordance with the
new Business Online Technical Troubleshooting Guide
new Business Online Technical Troubleshooting Guide TABLE OF CONTENTS How to install Java 1.6 Page 3 How to install Java 1.6 without ActiveX control Page 6 How to uninstall Java Runtime Environment Page
ATD NEWS SOFTWARE NETWORKING / DATABASE FAQs... 2 Database Issues:... 2 Q: What are the system requirements for installing MSDE server?...
ATD NEWS SOFTWARE NETWORKING / DATABASE FAQs... 2 Database Issues:... 2 Q: What are the system requirements for installing MSDE server?... 2 Q: What is networking support offered by MSDE?... 2 Q: What
IBM Tivoli Monitoring V6.2.3, how to debug issues with Windows performance objects issues - overview and tools.
IBM Tivoli Monitoring V6.2.3, how to debug issues with Windows performance objects issues - overview and tools. Page 1 of 13 The module developer assumes that you understand basic IBM Tivoli Monitoring
Data Sheets RMS infinity
Data Sheets RMS infinity Introduction RayManageSoft infinity provides a complete set of products for software and operating system (OS) deployment, vulnerability analysis and patch management for Microsoft
Visualisation in the Google Cloud
Visualisation in the Google Cloud by Kieran Barker, 1 School of Computing, Faculty of Engineering ABSTRACT Providing software as a service is an emerging trend in the computing world. This paper explores
Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix ABSTRACT INTRODUCTION Data Access
Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix Jennifer Clegg, SAS Institute Inc., Cary, NC Eric Hill, SAS Institute Inc., Cary, NC ABSTRACT Release 2.1 of SAS
Installation Guide for Workstations
Installation Guide for Workstations Copyright 1998-2005, E-Z Data, Inc. All Rights Reserved. No part of this documentation may be copied, reproduced, or translated in any form without the prior written
Network Analysis with ArcGIS for Server
Esri International User Conference San Diego, California Technical Workshops July 24, 2012 Network Analysis with ArcGIS for Server Deelesh Mandloi Dmitry Kudinov Introduction Who are we? - Network Analyst
Centricity EMR 9.8.6. Who should read these release notes? !!! Important! The installation process for this release has.
GE Healthcare Centricity EMR 9.8.6 Release Notes Contents What's new in EMR 9.8.6?... 2 Upgrade considerations... 6 Install the release... 7 Subscribe to Centricity Services mailing lists... 8 Who should
Terminal Server Software and Hardware Requirements. Terminal Server. Software and Hardware Requirements. Datacolor Match Pigment Datacolor Tools
Terminal Server Software and Hardware Requirements Datacolor Match Pigment Datacolor Tools January 21, 2011 Page 1 of 8 Introduction This document will provide preliminary information about the both the
Attix5 Pro Storage Platform
Attix5 Pro Storage Platform V6.0 User Manual Cover for Microsoft Windows Your guide to configuring the Attix5 Pro Storage Platform. SERVER EDITION V6.0 for MICROSOFT WINDOWS Copyright Notice and Proprietary
DELL. Virtual Desktop Infrastructure Study END-TO-END COMPUTING. Dell Enterprise Solutions Engineering
DELL Virtual Desktop Infrastructure Study END-TO-END COMPUTING Dell Enterprise Solutions Engineering 1 THIS WHITE PAPER IS FOR INFORMATIONAL PURPOSES ONLY, AND MAY CONTAIN TYPOGRAPHICAL ERRORS AND TECHNICAL
inforouter V8.0 Server & Client Requirements
inforouter V8.0 Server & Client Requirements Please review this document thoroughly before proceeding with the installation of inforouter Version 8. This document describes the minimum and recommended
Installing Crystal Reports XI. Installing Crystal Reports XI
Installing Crystal Reports XI Installing Crystal Reports XI Installing Crystal Reports XI The Crystal Reports Installation Wizard works with Microsoft Windows Installer to guide you through the installation
Sage 200 Online. System Requirements and Prerequisites
Sage 200 Online System Requirements and Prerequisites v2013 Copyright statement Sage (UK) Limited, 2013. All rights reserved. If this documentation includes advice or information relating to any matter
