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.
...
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,...
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, ...
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 ...
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 ...
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 ...
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
...
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 ...
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 ...
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 ...
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 ...
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 ...
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
...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
desktop-application × 100web-applications × 10
c# × 9
architecture × 9
c++ × 7
database × 7
web-development × 6
design × 5
.net × 5
cross-platform × 5
java × 4
security × 4
deployment × 4
mobile × 4
gui × 4
client-server × 4
desktop-development × 4
javascript × 3
licensing × 3
language-agnostic × 3
windows × 3
linux × 3
wpf × 3
application-design × 3
php × 2