Giter Site home page Giter Site logo

crosshmi's People

Contributors

drutol avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

crosshmi's Issues

InternalsVisibleTo usage

It contributes to #7.

It is an assembly scoped attribute and must not be used inside a class.
It refers to DynamicProxyGenAssembly2,

Azure update time is common for all repositoryGroup

repositoryGroup is a collection of variables that are used to create an Azure device. The following problems must be distinguished:

  • there are hardcoded update time for all repositoryGroup - in production environment it is useless
  • there is mopping between the class representing selected repositoryGroup and device capabilities model used by Azure.
  • the solution simulates a set of parallel independent devices connected to Azure - consider implementing it as a real gateway.
  • cannot find a possibility to read the communication parameters from the application configuration.

Azure reference in the CrossHMI.AzureGatewayService

This project should not have references to the Azure SDK but it has in

  1. CrossHMI.AzureGatewayService.Devices.Boiler
  2. CrossHMI.AzureGatewayService.Infrastructure.Configuration.BoilerRepositoryDetails

Note: The project doesn't have references to Azure SDK ?!

The only Azure related functionality (including but not limiting to configuration) shall be located in the CrossHMI.LibraryIntegration.AzureGateway

NetworkEventsManager dependency on the ILogger limits posibility to use it elsewhere

According to the architecture (description covered by the https://commsvr.gitbook.io/ooi/reactive-communication/semanticdata) implementation of the DataRepository provides it own logging infrastructure. The presented implementation requires ILogger{t}. It limits the possibility to reuse this library in case the main application doesn't implement this particular interface. It raises a question:

  • if the end-user program should be adopted to use this implementation as an external apart
  • if the library should be adopted to meet the base library requirements.

The library requirements are defined in the document Getting Started Tutorial and this implementation doesn't follow this description. It raises typical "chicken/egg - which one was the first" problem and therefore must be recognized as a critical error.

NetworkDeviceBase - wrong implementation of the Dictionary

In the code

 Dictionary<Type, Dictionary<string, (ProcessVariableAttribute Attribute, PropertyInfo Property)>>
            _propertyMappings =
                new Dictionary<Type, Dictionary<string, (ProcessVariableAttribute Attribute, PropertyInfo Property)>>(); //TODO #MP Type cannot be used as the Key

according to the requirements defined for the Dictionary Type cannot be used as the TKey

Change the Repository name

OPCUA is too broad and it is recognized as the Client/Server interoperability - I call it interactive networking.

This project must target reactive networking. OPC UA ( 20+ specifications) defines it only in Part 14.
My proposals:

DataManagementSetup implementation must be self-contained

According to the concept described in the documentation https://commsvr.gitbook.io/ooi/reactive-communication/semanticdata the DataManagementSetup is an entry point to a part expanding DataRepository class. Therefore it must be self-contained and use ONLY types defined in the assembly. Following this rule, all instances must be created inside this class, and there no reason to provide an implementation of selected interfaces as the parameters. According to all examples, this class is parameterless and this patterns should be followed.

Problem with Package 'EnterpriseLibrary.TransientFaultHandling 6.0.1304'

Severity Code Description Project File Line Suppression State
Warning NU1701 Package 'EnterpriseLibrary.TransientFaultHandling 6.0.1304' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. CrossHMI.LibraryIntegration.AzureGateway C:\Users\mpostol\source\VS\CrossHMI\CrossHMI\CrossHMI.LibraryIntegration.AzureGateway\CrossHMI.LibraryIntegration.AzureGateway.csproj 1

Cannot load `CrossHMI.Android` project

After reloading I am getting the message:
Severity Code Description Project File Line Suppression State
Error The project CrossHMI.Android is missing Android SDKs required for building. Double-click on this message and follow the prompts to install them.

Provide Getting started documentation related to VS configuration.

Inconsistent implementation of the `DataManagementSetup`

It contributes to #7

  1. The implementation of the DataManagementSetup is provided by the NetworkEventsManager class. According to the separation of concerns rules, it is a placeholder to gather all external injection points used to compose the application, initialize the communication and bind to local resources. Therefore it should be used to implement ViewModel for the View layer.
  2. The NetworkEventsManager has wrong namespace - not consistent with the location in the project hierarchy.
  3. NetworkEventsManager is a partial class - what is the reason. Ther is no autogenerated code.

Review the project

Home:

It is in Node.JS but...
Look at data binding - how to interconnect source data with the widget active parts.

`NetworkEventsManager` is tightly coupled with ConfigurationData

This approach is not compliant with the architecture proposed in:

Reactive Networking Application Architecture

It has very serious consequences:

  1. It is against the separation of concerns paradigm
  2. Configuration cannot be changed separately - it is very difficult to analyze the impact scope of these changes.
    You said Unfortunately the library does not provide any easy way to map data onto properties which will be later used for displaying the data to the user. - my concern is if it is true. RferenceApplication contains an example of how to do it.

You said: For this reason I had to build some sort of proxy which will allow to manage the process much more easily. - my concern is how to prove it, how to measure the effort required to (not sure) to implement or to understand or both.

DataManagementSetup implementation should be independent

From the description, I can guess that the project provides two independent implementations of the DataRepository, According to the ReferenceApplication example and the architecture presented in https://commsvr.gitbook.io/ooi/reactive-communication/semanticdata#reactive-networking-application-architecture both need independent implementation of the DataManagementSetup. It promotes separation of concerns and reusability. Unfortunately, I can find only one implementation of this class, namely NetworkEventsManager.

It must be recognized as a data error, so some comments are required.

Generate GitHub Pages to improve visibility

Read more about GitHub Pages Basics.

GitHub Pages sites are publicly available on the internet, even if their repositories are private.

Therefore, GitHub Pages can be referenced by a link and available to the public community. Be careful to avoid publishing sensitive information.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.