Global Address Object:Technical Details
64-bit DLLs
- Default Location
address\windows\dll_64bit
mdAddr.dll, mdGeo.dll, mdRightFielder.dll – These are helper libraries used by mdGlobalAddr.dll in certain cases. These libraries are not to be used directly.
mdGlobalAddr.dll – This is the main global address engine that the application program will be accessing.
.NET wrappers
- Default Location
\address\windows\samples\NET
mdGlobalAddrCS.dll, mdGlobalAddrNET.dll – These are the .NET wrappers. They are built on the method definitions of mdGlobalAddr.dll and allows .NET to communicate with a C++ object. As long as the method signatures of mdGlobalAddr.dll does not change or get deleted, this does not need to be recompiled. If there is a new method, the old wrapper will still work but will need to be recompiled to see and use the new method.
Data Files
- Default Location
\address\data
The files in this directory are the data files.
Redistributables
- Default Location
\extras\redist
vcredist_x64 – This is the Visual Studio 2012 C++ Redistributable that is required for the dll’s to run. This is installed automatically by the installer, and your system should already have it if you have Visual Studio 2012 or later. It must be installed at least once on host server.
Dependencies
- .NET Program references mdGlobalAddrNET.dll and mdGlobalAddrCS.NET. This is a compile time link, which means any changes to these files would require a recompile.
- mdGlobalAddrNET.dll and mdGlobalAddrCS.NET loads mdGlobalAddr.dll. This is a run-time link, which means it does not look for mdGlobalAddr.dll until the program runs. If it is not found or unable to be loaded (like if the redistributable is not installed), you will get a runtime error.
- mdGlobalAddr.dll loads mdAddr.dll, mdGeo.dll, mdRightFielder.dll on demand. This is a run-time link. They must be there when mdGlobalAddr.dll looks for them or you will get a runtime error.
- The run-time links mean that the host is looking at method signatures. As long as the ones it is looking for are there are unchanged, everything should be fine. Additions do not affect them.
Updates
For each update, the two items that are likely to have changed are the dll’s and the data files. Those are the files that must be updated, and should be updated in conjunction. Once the redistributable is installed, you can simply copy and paste these files to your production environment. Here is the recommended update process.
- Direct traffic to another application or server. The update will require the dll’s and data files be unloaded.
- Copy over all the dll’s from address\windows\dll_64bit and replace the current ones.
- Copy over all the data files from \address\data and override your current data files.
- An alternate strategy is to copy the new data files to a new location. You can have the application look for the data files using a symbolic link. When you update, simply move the symbolic link to the new location instantly.
- Restart your application and test.
Points to keep in mind
- mdGlobalAddrCS.dll is not to be referenced directly by visual studio. It is called by mdGlobalAddrNET.dll but both dll’s need to be in sync.
- By default, a dll will look for a dependency in the same directory.
- Make sure all the dll’s are present in the same directory as the mdGlobalAddrCS.dll, mdGlobalAddrNET.dll, and mdGlobalAddr.dll. If any are missing, it would result in an error.