Skip to main content
24 votes
Accepted

How do desktop applications get notified of events over the internet?

Be aware that to be able to send an information, the sender needs to know the target. Normally the client knows the server. But the server has no clue about the clients until they try to connect. ...
JanRecker's user avatar
  • 1,584
19 votes
Accepted

Should I lock rows in my cloud DB while they're being edited by a user

One thing that will help you here is terminology. What you are describing here is called 'pessimistic locking'. The main alternative to this approach is 'optimistic locking'. In pessimistic locking,...
JimmyJames's user avatar
  • 30.9k
17 votes

Writing a language agnostic API?

The accepted answer is more or less correct, but doesn't offer you anywhere to go if language independence is actually a burning issue for you. C++ is fairly callable from other languages (C#, Python, ...
Nathan's user avatar
  • 1,309
9 votes

Writing a language agnostic API?

Although none is literally 100% universal, there are a number of ways to make the API easily usable from a fairly wide variety of languages (more than most people usually care about, anyway). The ...
Jerry Coffin's user avatar
  • 44.8k
8 votes

How do you design applications with client-based DBs?

The premise of this question seems to imply that some standard application architecture exists that the rest of us know about, but the original designers of this system ignored with wanton disregard ...
Greg Burghardt's user avatar
7 votes

Making a language agnostic Plugin system

Process-boundary plugins are a great fit where the compromises you have to make for them (discussed below) are acceptable. I work on a project with many different types of plugins and for our ...
Blrfl's user avatar
  • 20.5k
6 votes

Writing a language agnostic API?

While I agree with the other answers in principle, I think the OP is expecting at least some starting points which can help OP's further search for an answer. In-process Important consideration ...
rwong's user avatar
  • 17.2k
6 votes
Accepted

Working with a poorly written piece of software as an entry-level developer with no support or documentation

I was not provided with any tests, therefore I need to find out what output the datalogger gives, see what the original software produces, and then use that as tests for when I start making changes to ...
l0b0's user avatar
  • 11.6k
5 votes

Does it make sense to reuse microservices in a desktop application with an "offline" mode?

Architecture Architecturally speaking, this is in fact a good system. When you zoom out a microservice architecture to the platform level what you have is (hopefully) a very modular and resilient ...
Kain0_0's user avatar
  • 16.6k
5 votes

Direct Database Access for Desktop GUI or via Application Server?

It is almost always simpler to create a central server. Normally the argument here focuses on security, that a central server makes it possible to implement fine-grained access control without having ...
amon's user avatar
  • 136k
4 votes

Writing a language agnostic API?

To bring an "old-fashioned", but quite mature technology into the discussion: CORBA allows you to define object-oriented APIs in a language-independent way (defines its own IDL = interface definition ...
Ralf Kleberhoff's user avatar
4 votes
Accepted

What is the best practice for monolithic desktop frontend-backend communication?

For reporting back from the backend to the frontend, you can use events in C#. In that way, the backend defines the methods that are available to make changes and the events it will fire to inform ...
Bart van Ingen Schenau's user avatar
4 votes

how to recover from power shutdown while auto update my application

You can't. The way such things are handled on program start is this: If not exists updating.file Backup important files into temporary subfolder Create updating.file Continue normally with update ...
Neil's user avatar
  • 22.9k
4 votes

Is it worth supporting big-endian for a desktop-only application?

Note that 'network byte order' is big endian, so if you are transmitting any standardized structures, you will need to do that conversion. Generally, most people avoid this issue by transmitting data ...
Lewis Pringle's user avatar
4 votes

How do desktop applications get notified of events over the internet?

The client can simply connect to the server, identify itself, and leave the connection open without doing anything special. When something happens, the server can send some data to the client. Nothing ...
Stack Exchange Broke The Law's user avatar
4 votes
Accepted

Is it a bad practice to use cookies for a Desktop Application?

In principle, there's no problem with using HTTP/REST to communicate between a desktop app and a backend. In that context, it can also be a great idea to use various HTTP features. This might include ...
amon's user avatar
  • 136k
4 votes
Accepted

Best way to handle versioning between a desktop product and a cloud product when one depends on the other

The most "user friendly" solution is to establish a mostly stable interface between A and B and keep B as backwards compatible as possible over longer periods of time with any new version ...
Doc Brown's user avatar
  • 220k
4 votes

Architecture review for desktop application with distributed components

Running a distributed application on one machine does not make it "less stable", as long as the different components don't require too much CPU and memory resources available on the single ...
Doc Brown's user avatar
  • 220k
4 votes
Accepted

Saving and reading files in user specific application data in C or C++

I would heavily avoid any solution which uses chdir, since it is way too errorprone. It might interfer with other places in a codebase assuming the current directory wasn't changed (or worse - change ...
Doc Brown's user avatar
  • 220k
4 votes

How do you design applications with client-based DBs?

It sounds to me that original designers tried to make the Application "generic" - so that it would work with any backend database - by adding a "translation" layer: The App asks ...
Phill  W.'s user avatar
  • 13.1k
3 votes

What is the best practice for monolithic desktop frontend-backend communication?

The most simple approach I can think of is to make your backend functions expect a delegate, probably of type Action<int> call this delegate inside the backend code, for example, with some ...
Doc Brown's user avatar
  • 220k
3 votes

Is it good practice to have applications remove old AppData files when they're no longer needed?

You can schedule a scan and delete old files after a transient time to avoid potential backward incompatible issues. So in your current version you handle the case where new file does not work then ...
spisk's user avatar
  • 41
3 votes

How to develop a desktop software with components based on several different technologies

Multi-language development is easier if the different language components use a common runtime environment (e.g. Microsoft's CLI or Java's JVM/JRE). In this case, you just have to define APIs of your ...
Christophe's user avatar
  • 82.2k
2 votes
Accepted

Is it good practice to have applications remove old AppData files when they're no longer needed?

IMHO chances are high it is not worth it - at least in this particular case. Why? First, the typical desktop machine gets either a complete reinstall of the operating system and installed software ...
Doc Brown's user avatar
  • 220k
2 votes
Accepted

How do you implement an app autoupdate feature from scratch?

You've already figured out the general idea of how auto-update works, so I'll just answer your specific questions. Is this against Apple's terms of service? Very likely yes, because allowing apps to ...
casablanca's user avatar
  • 5,004
2 votes
Accepted

Exception handling with failure atomicity in desktop applications

Different applications have different boundaries where failures can be contained. In a web app backend this is typically fairly simple because each request can be handled separately. If there's an ...
amon's user avatar
  • 136k
2 votes

In an MVC desktop application, is there a canonical solution to share an immutable value class between multiple components?

This sounds a lot like the class of problems that Dependency Injection intends to solve. If you want to avoid depending on a DI framework, you could create and keep the settings and style objects in ...
Hans-Martin Mosner's user avatar
2 votes

Automatically update info on Desktop Client when there are changes in the server

There's several options available to you, but first we need to discuss what the requirements are for updates on screen. As far as human perception is concerned, there's a nice write up by the Nielson ...
Berin Loritsch's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible