Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <blockquote> <p>How many services should run on the local server?</p> </blockquote> <p>It depends on many factors, but I would generally go for as less services as possible, because maintaining and surveilling one service is less work for the admin than having many services.</p> <blockquote> <p>How many services should run on the workstations?</p> </blockquote> <p>I would use just one, because this will make it a single point of failure. The user will notice if the service on the workstation is down. If this is the case only one service needs to be started.</p> <blockquote> <p>Since some services will need to query the local SQL database, where should the services read the connection string from? registry? Config file? Any other location?</p> </blockquote> <p>I would generally put the connection string in the app.config. The .NET framework also offers facilities to encrypt the connection string.</p> <blockquote> <p>If one service is alotted to do multiple tasks, e.g. like a scheduler service, what should be the best/optimal way with respect to performance for managing the scheduled tasks a. Build .NET class Library assemblies for the scheduled tasks and spin them up on separate threads b. Build .NET executable assemblies for the scheduled tasks and fire the executables</p> </blockquote> <p>b. is easier to design and implement. It gives you the possibility to use the windows scheduler. In this case you will need to think of the problem, when the windows scheduler starts the executable, when the previous start has not finished yet. This results to two processes, which may do the same. If this is not a problem then stay at that design. If it is a problem, consider solution a.</p> <p>For solution a. have a look on <a href="http://quartznet.sourceforge.net/" rel="nofollow noreferrer">Quartz.NET</a> which offers you a lot of advanced scheduling capabilities. Also considering using <a href="http://codebetter.com/blogs/raymond.lewallen/archive/2005/04/03/61190.aspx" rel="nofollow noreferrer">application domains</a> instead of threads to make the service more robust.</p> <p>If you don't get admin rights on the local server, think about means to restart the service without the service control manager. Give some priviledged user the possibility to re-initialize the service from a client machine.</p> <p>Also think about ways to restart just one part of a serivce, if one service is doing mulitple tasks. For instance the service is behaving strangely, because the update task is running wrong. If you need to restart the whole service to repair this, all users may become aware of it. Provide some means to re-intialize only the update task.</p> <p>Most important: <strong>Don't follow any of my advices if you find an easier way to achieve your goals. Start with a simple design. Don't overengineer! Solutions with (multiple) services and scheduling tend to explode in their complexity with each added feature. Especially when you need to let the services talk to each other.</strong></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload