design – Architecture of a real-time collaboration application

I would like to create an application similar to Google Docs which allows collaboration and presentation of documents in real time. In Google docs, almost everything is in real time; from document creation to editing to deletion. I wonder what the architecture of an application like this looks like. Do they use web sockets on traditional REST APIs? What are the pros and cons of using a web socket API for the entire application with a custom JSON communication standard? Warnings? How would someone recommend approaching such an application?

c # – ASP.NET Core website architecture with mobile app

I plan to develop a large-scale website that will have mobile apps in the future (both for Android and iPhone). I haven't done a lot of web development (I'm still in school, but I'm going to graduate soon), but I'm planning to use ASP.NET (MVC or Razor pages and side Blazor customer). However, I do not know what is the best industry approach to the architecture of this application. Here are the options I am considering:

  • Use own architecture to implement the entire application
  • Develop a main ASP.NET REST API
  • Website and mobile apps will access and modify REST API data

However, I am not very sure if this approach could evolve, and especially if it is the best way to do it. Although I know my questions are very broad to ask, could you please share your experience on how I could achieve my goals? More precisely:

  • What is the most appropriate architecture used in the real world that I should use?
  • There are many approaches for developing mobile applications (native java and swift, many Javascript frameworks, xamarin vs native xamarin forms, etc.). Would you like to suggest, based on your experience, which approach is right for me? Suppose I have no experience but that I am willing and able to learn any technology.
  • Any other suggestion (for example, web resources, books, and blog posts) is welcome. Suppose I am willing (and I have the illusion that I am capable) to learn any technology in due course.

domain model – How to manage bad third-party APIs in a microservices architecture?

I am currently transforming a monolithic application into an architecture based on microservices. The monolith depends on third-party services (as in other departments) for its data. Most of these third-party services are accessible via SOAP while some use REST.

Some of these third-party services have terrible (or even unusable) IMO APIs. It adds a lot of unnecessary complexity and master key to our aggregator service (which is a monolithic atm). I'm trying to map the domain of one of these third party APIs to a usable domain in an ACL so I can offer a decent API to our aggregation service.

However, that got me thinking. Is it even the right way to do it? It's a lot of work, should I bite the bullet and use these awful APIs? How do you manage the terrible third-party APIs in a microservices architecture that makes your service less maintainable?

Thanks in advance!

architecture – Workflow for a data management game, almost like a spreadsheet

I am absolutely fascinated by management games, such as Football Manager, with dozens of spreadsheets and thousands of data.

Coding everything in Unity, especially for a prototype, looks like a lot of unnecessary user interface work. Trying to do it from scratch with React suffers at the same time from architectural problems …

What architecture or approaches could help solve this problem?

architecture – requests as a service for other applications (neo4j)

I am new to neo4j and the graph I am shaping will be used by third party applications for certain fixed requests (encryption) – we can think of the classic "Who is Alice's friend?" question.

I would like these requests to be easily requested from other applications – which can be developed in different languages ​​- without reimplementing each request or putting too many layers between the client application and the neo4j engine (which for me would slow down responses).

Of course, these questions are fully answered by Cypher queries or in any case using only the resources of the neo4j database itself.

The graphic should therefore serve as a service to other applications: what is the best way to provide such functionality? I have two objectives: a) centralize the content of requests; b) minimize overhead costs for diapers.

A few ideas came to my mind:

  1. add a service layer in front of the graphic database, written in a language, to which customers can send a request
    • so the path would be client (i.e. Node.js) -> (Maybe stay?) -> service layer (Python?) -> Cypher (on Bolt) -> neo4j
  2. neo4j UDF
    • therefore client (i.e. Node.js) -> function on Bolt -> neo4j
    • I did not understand if these functions would be similar to native functions
  3. client (for example Node.js) -> Cypher over Bol -> neo4j
    • of course this would duplicate the request logic in each client and potentially generate errors
  4. other options that I did not find / that I thought of

If it were a SQL database, I would have written stored functions for everything and clients could just do it SELECT fx(data) – but since this is neo4j, I would love to hear some advice.

Solution # 2 seems to be the best for me – it doesn’t matter if that leaves customers with the ability to make other requests; maybe i can block them with permissions.

Of course, if another graphics database now offers better support for my needs, I will also evaluate it.

microservices – The architecture of the project is a Micro Services architecture?

Is the architecture of my project a Micro Service architecture?

In my project, we start the day with a SOD script that does some early morning functionality. then it generates an event upon completion which triggers a few additional processes which begin loading the data. and such a chain process continues to run sometimes by generating events or sometimes by status updates in the database.

are all processes independent services developed in different languages? Is this type of architecture classified as micro-service architecture

information architecture – What is the correct terminology to describe a page / view representing a business concept?

In the context of an information system, what is the correct terminology to refer to the views of business concepts?

For example, given the StackExchange system, what is the correct name for pages on a question, topic, user, etc. Basically, the most important "information concepts" in the field. I consider them as the central elements of information architecture.

Possible names: "information unit", "display", "main page", simply "page"?

php – Architecture design of the Command & Control application center for screens

I am faced with a dilemma on how best to design the following features. What OOD design models and principles should I use?

For simplicity, here are the basic requirements:

  • the display type can be one of the following: PC Monitor, LG TV, Samsung TV or other manufacturer
  • the screens can have different functions, for example: turn on, turn off, sleep, etc.
  • there should be metadata available on the displays, like
    • is the CEC link available and does it work?
    • is the RS232 link available and does it work
    • is the HDMI cable connected
    • display is currently on or off
    • get / set display resolution, etc …
  • communication with screens can be done in one of the following ways
    • RS232 serial cable controls (manufacturer specific)
    • HDMI CEC controls
    • As an alternative (and for monitors), we use the EnergyStar, alias features. xset dpms force off

I am more familiar with php, but I will probably implement it in python because it is more of a system language and I also assume more suitable for this task.

In the end, it could be something simple as follows, I guess. It can manually determine the link it has for communication (cec | rs232) and the command it should send along that link depending on the manufacturer of the screen.

$display = new Display();
if ($display->isConnected() && $display->isOn()) {
    $display->turnOff();
}
$forfun = $display->getVendorName();

I was thinking of implementing something in this direction, but I can already encounter some problems with this:

/** DisplayFactory classes */
abstract class AbstractDisplayFactory {
    abstract function makeDisplay();
}

class LGDisplayFactory extends AbstractDisplayFactory {
    private $context = "LG";
    function makeDisplay() {
        return new LGDisplay;
    }
}

class SamsungDisplayFactory extends AbstractDisplayFactory {
    private $context = "Samsung";
    function makeDisplay() {
        return new SamsungDisplay;
    }
}

/** Display classes */
abstract class AbstractDisplay {

    abstract function turnOn();}
    abstract function turnOff();

    function hasCecLink() {
        //return status;
    }
    function hasSerialLink() {
        //return status;
    }
    function isHDMICableConnected() {
        // return status;
    }

    // ....
}

class LGDisplay extends AbstractDisplay {

    function turnOff() {
        if($this->hasCecLink()) {
            // turn off via HDMI CEC - vendor agnostic commands
            // implementation of this would be better placed in a more generic class since
            // is vendor agnostic command, and we would not need to repeat it for every display
        }
        else if($this->hasSerialLink()) {
            // turn off via rs232 - vendor specific commands
        }
        else {
            // shell_exec('xset dpms force off')
            // this also would be better placed in a more generic class
        }
    }

    // ...
}

class SamsungDisplay extends AbstractDisplay {
    // similar as for LGDisplay class
}

I would be very happy with any advice I could get on the best way to approach this.

Information Architecture – How To Differentiate Navigation Along The Hierarchy Of Cross References

You can confuse "Back" and "Up" when users expect it to work as usual.

The Back button is one of the oldest and most popular buttons in a web browser and users quickly learn that it takes them back to the page they just saw. While this is equivalent to leveling up if they navigate a hierarchy, this is just a coincidence. If a user clicks on a link to a completely independent page at the bottom of a different hierarchy, they still expect the Back button to bring them back to where they were. It is a kind of "escape hatch".

Your application should allow the user to use the browser's Back button as much as possible. If you need to provide your own Back button in your app, it should do the same and send users to the previous page in their history.

If navigating up in a hierarchy is a desired use case, consider a different interaction style. The Ariadne thread usually serves this purpose and would allow users to directly access the parent container (like projects / or users /).

Opening cross-reference links in a new tab may be an option to test. A new tab usually has its own browser history, which also breaks the Back button, but the original page is kept on the original tab, so the user has still its exhaust hatch, although in a different form. You can try it out and see how comfortable your users are with the tabs. They could be delighted or completely lost.

architecture – Is there a way to generate a dependency graph for my microservices?

I have a general question which is nothing specific.

I was wondering if there was a tool or method that we could use to recover (get) all the dependencies of a micro-service architecture. I did my research online, but some of the tools I find are strict for a particular setting, mainly Spring Boot.

Is there a general method (a means, a tool) that could do this regardless of your programming language or the framework used to create your micro-services. Something you would run on your back-end and it would generate a graph with all of your micro-services showing which micro-service is using which other local and remote services?