The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
Distributive programming is not about a framework or a set of tools. Instead it is a paradigm in how you set up an application for multiple users to access concurrently.
Prior to the advent of the Internet, distributed systems were most commonly known as client-server systems, which to this day are still the best way to develop internalized systems for companies and organizations. Not being on the Internet, they are closed-loop systems that have a much greater degree of security just by their design and implementation.
Microsoft's Remoting package when it was first released with .NET 1.0 was and still is the best way to create a distributed system system since it allows for the transfer of data in binary form, which is very difficult to breach. Databases for such systems, as they are not available to the Internet just like the distributed applications they support, are much safer from breaches as well.
However, Remoting lost a lot of its potential as a result of its added complexities and the advent of stronger Internet development options such as web services. Nonetheless, Microsoft's Windows Communications Foundation (WCF) still supports Remoting with various protocols that allow for this form of secure, distributed development.
This is not to say client-server systems cannot be breached but the are significantly more difficult to do so and most often require an inside person to assist since outsiders cannot simply ride an Internet connection into them.
Client-Server systems have also been known as n-tiered systems as they are broken down among a set of tiers; the interface, the middle-tier (which can consist of several related tiers working with each other but separated as accessible sets of objects [ie: singleton or multiple threaded]), the database interface tier (ie: data access layer; ORM framework), and the database itself.
How these tiers are setup is up to the application\system designers and developers.
The Internet destroyed this more secure concept of distributed systems since it was not only new but promised tremendous levels of concurrency whereas the client-server systems, though could be scaled for high concurrency, required more sophisticated design techniques and were often limited to departmental or divisional scales of distribution.
Internet development also brought with it a less succinct form of implementation, though it was still called distributed systems development, in reality it has simply devolved to that of a thin (WebForms) or fat client (MVC) and the database access with the middle tier simply residing on the same server as the database, which is what also allowed for greater breaches of the databases.
Despite this, Internet development does allow for concurrency levels on a scale that client-server systems would require greater design sophistication to match.
This is a fallacy which is being born out by the increasing breaches of confidential data storage systems on a regular basis directly as a result of the additional complexities that developers are now forced to work with while ignoring other development options that may be far easier to implement while also being more inherently secure...
Sr. Software Engineer
Black Falcon Software, Inc.
Considering that I'm just trying to distribute the workload of a math program that I wrote and do not need anything fancy, your first sentence probably says it all. I was hoping for a bare-bones app or framework that has all that ready and allows you to add your own client or program with minimal effort. Unfortunately, I'm not seeing anything that simplistic. I may just do as you suggest and create my own program to do just that.
Of course, using an established program such as BOINC does allow me to tap their end-users potentially.
Both. Considering the numbers being generated and the quantity, I would like to distribute the workload across many users. I was hoping to use an existing framework and server that already had many users (e.g., BOINC).
What this sounds like is you want to distribute the internal processes among many machines in order to speed up the time it takes to complete a process.
If this is the case, than this is not a distributed system in the sense that I was talking about but more of a system in which you want to be able to implement distributed or parallel processing among the various internal tasks. As such, tasks a, b, and c would be sent to workstation-a, while tasks d, e, and f would be sent to workstation-b, for example.
This doesn't quite give me what I want. I was hoping for a framework with a base of users (e.g., BOINC) that I could tap into. My only issue with BOINC is that it does not have a bare-bones container that would require minimum customization and configuration of my program to distribute the work. I need to think about this some more.
Whiteboards are useless - the chalk doesn't show up at all like it did on the old blackboards. Why do they have to keep changing things just for the sake of it? I bet these whiteboards only exist to show new icons better.
- I would love to change the world, but they won’t give me the source code.