Assembly Info Web Service API

Assembly Info Web Service Whitepaper

Overview

The assembly info web service delivers the versioning information for the current set of Simplicity application DLL’s.

This service is used by the Simplicity desktop application to determine whether the current sets of Simplicity DLL’s present are the correct release. If the event any of the DLLs are out of date the application will then request these DLL’s. The comparison is done on the version number returned from the service against those present on the clients PC.

This check is performed at the initial startup of the Simplicity desktop application.

The DLL version request to the web service passes through the applications CodeSet which the web service then looks up the DLL directory in the web.config file and then returns the DLL assemblies full name, date, file size and version for each DLL in the directory.

Simplicity assembly info web service is accessed via http on port 80 at the following primary url: http://services.simplicitycrm.net/assemblyinfo/assemblyinfosvc.asmx

Accessibility Diagrams

The web service and application DLL’s are accessed via standard web requests to the Simplicity SDLL server as illustrated. There are three typical setup options. Client in-house setup models may be available based on the Simplicity licensing subscription purchased by the client.

ASSEMBLY INFO SERVICE HOSTED AT SIMPLICITY

This model is the recommended setup for the Simplicity assembly info service and DLL delivery.

ASSEMBLY INFO SERVICE HOSTED BY CLIENT – INTRANET ACCESS ONLY

This model is available when the Simplicity licensing subscription purchased allows for in-house implementation of Simplicity.

ASSEMBLY INFO SERVICE HOSTED BY CLIENT – INTRANET & INTERNET ACCESS

This model is available when the Simplicity licensing subscription purchased allows for in-house implementation of Simplicity. A NAT or routing entry will need to be created to allow access from the external world to the SDLL server. The access required will be for TCP traffic on Port 80 from the external world IP address of the clients to the internal IP address of the SDLL server.

Web Service Method Definitions

The following methods are supported by this web service.

·GetAssemblyDetails

Web Service Method - GetAssemblyDetails

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /assemblyinfo/assemblyinfosvc.asmx HTTP/1.1

Host: services.simplicitycrm.net

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://services.simplicitycrm.net/AssemblyInfo/GetAssemblyDetails"

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<GetAssemblyDetails xmlns="http://services.simplicitycrm.net/AssemblyInfo">

<Key>string</Key>

<CodeSet>string</CodeSet>

</GetAssemblyDetails>

</soap:Body>

</soap:Envelope>

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<GetAssemblyDetailsResponse xmlns="http://services.simplicitycrm.net/AssemblyInfo">

<GetAssemblyDetailsResult>

<AssemblyInformation>

<FileName>string</FileName>

<AssemblyVersion>string</AssemblyVersion>

<FileVersion>string</FileVersion>

<FullAssemblyName>string</FullAssemblyName>

<FileSize>long</FileSize>

<URL>string</URL>

<LastModifiedUTC>dateTime</LastModifiedUTC>

</AssemblyInformation>

<AssemblyInformation>

<FileName>string</FileName>

<AssemblyVersion>string</AssemblyVersion>

<FileVersion>string</FileVersion>

<FullAssemblyName>string</FullAssemblyName>

<FileSize>long</FileSize>

<URL>string</URL>

<LastModifiedUTC>dateTime</LastModifiedUTC>

</AssemblyInformation>

</GetAssemblyDetailsResult>

</GetAssemblyDetailsResponse>

</soap:Body>

</soap:Envelope>

SOAP 1.2

POST /assemblyinfo/assemblyinfosvc.asmx HTTP/1.1

Host: services.simplicitycrm.net

Content-Type: application/soap+xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

<soap12:Body>

<GetAssemblyDetails xmlns="http://services.simplicitycrm.net/AssemblyInfo">

<Key>string</Key>

<CodeSet>string</CodeSet>

</GetAssemblyDetails>

</soap12:Body>

</soap12:Envelope>

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

<soap12:Body>

<GetAssemblyDetailsResponse xmlns="http://services.simplicitycrm.net/AssemblyInfo">

<GetAssemblyDetailsResult>

<AssemblyInformation>

<FileName>string</FileName>

<AssemblyVersion>string</AssemblyVersion>

<FileVersion>string</FileVersion>

<FullAssemblyName>string</FullAssemblyName>

<FileSize>long</FileSize>

<URL>string</URL>

<LastModifiedUTC>dateTime</LastModifiedUTC>

</AssemblyInformation>

<AssemblyInformation>

<FileName>string</FileName>

<AssemblyVersion>string</AssemblyVersion>

<FileVersion>string</FileVersion>

<FullAssemblyName>string</FullAssemblyName>

<FileSize>long</FileSize>

<URL>string</URL>

<LastModifiedUTC>dateTime</LastModifiedUTC>

</AssemblyInformation>

</GetAssemblyDetailsResult>

</GetAssemblyDetailsResponse>

</soap12:Body>

</soap12:Envelope>

Web Service Setup & Configuration

~\App_Data\SAMPLE.XML FILE

The following is a sample of the assembly info’s XML file. The placeholders shown need to be replaced with actual values. All XML configuration files are loaded. The %CLIENTBRANCH% placeholders refer to the “Client Branch” node illustrated at the start of the sample document below. The value “%CLIENTBRANCH% would be substituted with the value “Demo” in the example provided below.

<?xml version="1.0" encoding="utf-8" ?>

<AssemblyInfo>

<ClassName>AssemblyInfo.SAAssemblyInfoConfiguration,AssemblyInfo</ClassName>

<ClientID>ClientID</ClientID>

<ClientBranch>Demo</ClientBranch>

<AbsoluteRootPath>C:\Inetpub\simplicitycrmroot</AbsoluteRootPath>

<AbsoluteRootURL>http://www.simplicitycrm.net</AbsoluteRootURL>

<Locations>

<ClassName>AssemblyInfo.SAAssemblyInfoFileLocationCollection,AssemblyInfo</ClassName>

<ItemClassName>AssemblyInfo.SAAssemblyInfoFileLocation,AssemblyInfo</ItemClassName>

<Items>

<Item>

<CodeSet>ProductionCodeSet</CodeSet>

<RelativePath>\simplicityhost\%CLIENTBRANCH%\code\v2_5</RelativePath>

<AbsoluteRootPath></AbsoluteRootPath>

<AbsoluteRootURL></AbsoluteRootURL>

</Item>

<Item>

<CodeSet>TestCodeSet</CodeSet>

<RelativePath>\simplicityhost\test\%CLIENTBRANCH%\code\v2_5</RelativePath>

<AbsoluteRootPath></AbsoluteRootPath>

<AbsoluteRootURL></AbsoluteRootURL>

</Item>

</Items>

</Locations>

</AssemblyInfo>

Implementation Considerations

SYSTEM IMPACT & LOADING

The Assembly Info web service and DLL downloads have a very small impact on the web service in regards to processor load.

The primary consideration is not for the web service but the subsequent network traffic that would be generated with the release of a new version of the application DLL’s being available.

A full production release of DLL’s is approximately 12Mb. Whilst this is fairly small download by today’s standards if you have clients with in excess of 100 users then there will be benefit in a client side proxy server being used to remove client side internet traffic with new releases.

Internet traffic for a non proxy solution for 100 users with a 12Mb update is 1.2Gb of download traffic.

CLIENT PROXY DLL DOWNLOAD DATAFLOW

CLIENT NON-PROXY DLL DOWNLOAD DATAFLOW

Service Workflow

ASSEMBLY INFO SERVICE COMMUNICATION DATAFLOW

The assembly info service connection workflow is shown next. Results from this are stored locally in a cached file “AIWSCache.dat” which is encrypted multiple times to ensure its validity. When there is already an existing cache file present this is replaced with the new results from the successful communication.

ASSEMBLY INFO UNAVAILABILITY DATAFLOW

Should the assembly info service be temporarily unavailable application use can continue as shown below. This is only possible where a connection to an assembly info service as previously completed successfully.

Australia - New Zealand