Skip to content
Rachel-Alcraft edited this page Sep 13, 2022 · 19 revisions

#BMA Development

Overview

The BMA project is a .Net project written for Azure. It consists of Azure Functions and a client web server - 2 seperate components - both published to Azure through Ben Hall's lab's credentials.

It should be the case that .Net can be multi-platform, but many of the projects are tied to NetFramework which is windows only, so there is a bit of entanglement in the projects. Some projects have tried to remove framework, but then others require it. There can be problems.

Additionally, and adding complexity, is the standalone version of BMA. This forces the client and server to be linked as the standalone versions builds them both into one. To accomplish this, many of the code files have multiple projects building them, outputting different dlls and exes to different places. This adds to the complexity as mentioned above due to some inconsistent frameworks.

Ideally, there would be no projects building out the same files, but an organised structure of multi-platform static libraries and dlls, with only those elements that currently require framework to use it at the final stage.

The primary need for framework currently is the client as it uses a framework dependent http protocol. NetCore has replaced this with a cookie method - it could be reworked, but is is code work not just a #include change.

The other tie to windows is via some of the third party dlls used - specifically cudd and attractors. These are in the BioCheckConsole project and both explicitly #include <windows.h> the implications of not doing so are to be investigated. The linux project does not use these libraries so the functionality from these is not available there at the moment.

Visual Studio

The version currently being used is VS2019 and the scripts have been updated to reflect this.

Powershell Scripts

There are a set of powershell script to prepare the builds. One set are in the root directory and these should be run when a clone is first created to prepare all the files.

PrepareRepository.ps1

build.ps1

Then you can run the standalone version with:

run.ps1

The second set of scripts prepare the build for release. More info on this is in the ReleaseDocs

Standalone version

The standalone version hosts a client/server on local host 8224.

The solution is in sln/bmaclient.sln

The standalone can be run from project bma.selfhost

This packages together client code from src/bma.client and server code from src/BioCheckAnalyzer

Console version

Client

Backend

Regression tests

When things go wrong

The github version should be good and reproduceable. Sometimes circular and incompatible dependencies can cause some aspects of the build not to work: e.g. after buiilding the Azure functions server project sln/BackendFunctions the regression tests sometimes no longer work. Get a clean newly cloned build and try agian when such things happen. There is a ps1 script Clean.ps1 that tries to clean the build - it deletes all the obj directories - but there is something that it is missing so if you find it please update this script.

Clone this wiki locally