<p>With a distributed application, where you have lots of clients and one main server, should you:</p>

<ul>
<li>Make the clients dumb and the server smart: clients are fast and non-invasive. Business rules are needed in only 1 place</li>
<li>Make the clients smart and the server dumb: take as much load as possible off of the server</li>
</ul>

<p>Additional info:</p>

<ul>
<li>Clients collect tons of data about the computer they are on. The server must analyze all of this info to determine the health of these computers</li>
<li>The owners of the client computers are temperamental and will shut down the clients if the client starts to consume too many resources (thus negating the purpose of the distributed app in helping diagnose problems)</li>
</ul>

[{'answer_id': 35710, 'author': 'Kyle Cronin', 'author_id': 658, 'author_profile': 'https://Stackoverflow.com/users/658', 'pm_score': 3, 'selected': True, 'text': "<p>You should do as much client-side processing as possible. This will enable your application to scale better than doing processing server-side. To solve your temperamental user problem, you could look into making your client processes run at a very low priority so there's no noticeable decrease in performance on the part of the user.</p>\n"}, {'answer_id': 35878, 'author': 'icelava', 'author_id': 2663, 'author_profile': 'https://Stackoverflow.com/users/2663', 'pm_score': 0, 'selected': False, 'text': '<blockquote>\n  <p>The server must analyze all of this\n  info to determine the health of these\n  computers</p>\n</blockquote>\n\n<p>That is probably the biggest clue so far explaning what your application is kinda about. Are you able to provide a more elaborate briefing on what this application is seeking to achieve in this distributed environment? We do not even know if the client-side processing is disk I/O or processor intensive. How you design the solution is dependent on the nature of what needs to be done to help the users/business accomplish their jobs and objectives.</p>\n'}, {'answer_id': 35933, 'author': 'Marcus Downing', 'author_id': 1000, 'author_profile': 'https://Stackoverflow.com/users/1000', 'pm_score': 2, 'selected': False, 'text': '<p>In a client-server setting, if you care about security, you should always program on the assumption that the client may have been compromised. Even if it hasn\'t, there is always the risk of somebody using an old version of the client, using a competing or modified version of the client, or just of the net connection being a bit screwy.</p>\n\n<p>So while you do as much work on the client as possible, processing and marshalling information into the right form, the server then needs to do a thorough sanity check on anything the client gives it.</p>\n\n<p>So the answer I guess is "both".</p>\n'}]
['https://Stackoverflow.com/questions/35707', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/356/']