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 consits of Azure Functions and a client web server, 2 seperate components, both published to Azure through Ben Hall's lab.

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 substantial 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 different projects to build 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 a more organised structure of multi-platform static libraries and dlls, with only those elemtns that currently require framework to use it at the final stage.

The promary need for framework currently is the client as it uses a framework dependednt http protocal. NETCORE has replaced this with a cookie method - it could be done 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.

Powershell Scripts

There are a set of powershell script to prepare the builds. One set are i 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

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