Shared Server Hosting to Mimic Client-Server Environment at Home??

Posted on 2009-04-16
Last Modified: 2012-05-06
I develop at home.  I'm just starting to build client server applications with a VB.Net front end on the desktop and a MS SQL Server back end on the server.  I have read that it is much better to push as much processing to the server as possible.  I'd like to see what kind of results I am having from doing that, but it's just me and the laptop right now.  Would paying for shared server hosting achieve what I'm looking for & is it affordable?  I would think there would be a lot of factors involved in how closely it would mimic potential user environments - the server equipment they are using, the amount of traffic on the server, etc.  Do you all have any suggestions for vendors?  Anything I should be considering?
Question by:humbleamateur
    LVL 35

    Accepted Solution

    So the point is, if you use your isolated environment, you may not notice any large difference between server and client side cursors. As slower the connection is, as large the difference between several method.

    A common corp net is more loaded as your private connection. Means an application, which runs in your enviroment performs good for you, but not in a real corp environment. On the other side, with public storages and servers, you have no chance to really see, what is going onto the server machine. it may be your application, but can have a lot of other issues.

    The most reliable way is to use stress tools on your server, which simulates a preset server load or produces net traffic. This way, you can see, how your applications performs under differnet conditions.

    Performance issues may not only determined by the cursor type (server based / cleint based) as the cleint is able to cache tables in its own RAM. It depends really from the kind of data your cleint requests. A cleint cursor maybe slower during the initial load, but maybe faster during subsequent queries as chaching is possible, especially under server load.
    But stressing the server gives you an idea, if you can just solve performance issues by the cursor type of if you have to think about your query construction or the technique, how to retrieve data from the server in gernal. I.e for slower connections or high network load, it may be a bigger performance gain to split a queries into several subqueries to reduce the data amount per request.

    Author Comment

    Thanks for replying!  I really appreciate it.
    I guess I'm hearing there are a few factors:
    - the power of the server;
    - the utilization of the server;
    - the connection (bandwidth) at the server;
    - the traffic over the server's connection;
    - the connection (bandwidth) at my laptop.
    I believe you said I could not stress test a shared server?  Therefore, I would not be able to simulate the environment of a customer with a share of a hosted server?  Did I understand that correctly?
    So, are you saying the only way to simulate it would be to buy my own server & stress test it?  That would probably be too expensive.
    Does that mean there is no cost effective way for a developer to test the performance of a client-server application?  That doesn't seem right....  
    Let me know if I understood all of that correctly.
    LVL 35

    Assisted Solution

    I guess I'm hearing...

    > I could not stress test a shared server...
    Usually not, with the exception of a root server, where you be able to run your own application and tools. Or a kindly provider, which support you a little bit with tools or some anylysis.

    Example: SQL server has an program called profiler, which allows you to make a deep analysis on queries and actions. Every step is logged with a lot of load values. This can help you to find out, where possible bottlenecks are. If you do not have access to such tools, you can only measure the subjective performance of your application. Of course, setting time points (measuring the time a method needs), you are able to find out, if one method is faster than another. But this is more try and error, nevertheless this can work arround.
    Using server based tools, it is easier, as you see both sides, the server and the clients. And this makes it easier to find a reason, why a method performs poor or not.

    > Therefore, I would not be able to simulate...
    You can use a hosted system for functional testing of course, why not. For load / performance testing, you should have an environment, which fits as far as possible to your customers.
    As I said before, you can work a little bit around by measurement of response times. Always assumed, that no other issues are happening on the server.

    Hosted systems are often virtual machines, which may loaded by other customers. Also they are using shared resources like memory and disk space. If you make any measurement on this machine, you never can be sure, if it is your application, which runs bad or any other customer is stressing the server. Dependend on the available memory, there may be larger performance differences.  

    I do not want to say, that you can not use hosted systems, but you should always keep in mind how hosted systems are working and what else may happening. Means to get a really reliable measurement, you have to test your application more often at several times to make a final decision to use the one or the other method.

    > That would probably be too expensive...
    Need not to be. SQL server in the developer version can be installed on a client system. Also as a developer you may register with MS Action Pack, it costs about 450 USD and you get everything you need.  Most of the server applications and most of the clients. Not for production use of course, only for development.

    Author Comment

    Cool.  Thanks!
    Sorry for not getting everything the first time - just a question on the last paragraph - which of these do you mean you say "client" system?  
    - Potential customer's system? - that won't work, b/c I'm developing at home and have no customers;  
    - Client hardware, aka a laptop? - don't think this would work.  If my goal is to see the impact of moving processing onto the more powerful server, how would a much less powerful laptop acting as a server suffice?
    I may have missed it in one of your comments, but it is looking to me like there is no way to achieve what I want.  That just doesn't make sense though, because isn't the speed of software one of the chief concerns of all involved?
    LVL 35

    Assisted Solution

    last paragraph = action pack?
    The action pack is a collection of software for developers for a very low price.

    I assumed, that you develop applications for any customer or that you want to sell your software in any way. So, most of the things I said was under this assumption.

    You talked about SQL Server. I assumed you have the database on SQL Server (wherever it is) = server, and a client program on any other machine (i.e. a PC or Laptop) which uses this data = client (= software + hardware). If your software will directly run onto the SQL server itself (like a web application) , all taks are done on the same machine. In that case, your local PC does not care.

    If the client program is used only by yourself, means you develop the software only for your own usage, then the only criteria for you is your personal feeling, that you application works fast enough for your needs. Only if you feel, that you application performs poor, you would have to do some speed tuning. The only thing you should keep in mind is, that internet connections have a limited bandwith, so you should take care about the amout of data, you will send via this slow connection.

    Server side performance tuning will only be a real issue, if your software is used with a larger amounts of clients, which are using the server at the same time. Or if you want to work which a very large database. Otherwise it is not quite easy to bring a server realy to its limits over an internet connection, what yould be the bottleneck.

    Hope I hit your last question...


    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Better Security Awareness With Threat Intelligence

    See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

    Remote Apps is a feature in server 2008 which allows users to run applications off Remote Desktop Servers without having to log into them to run the applications.  The user can either have a desktop shortcut installed or go through the web portal to…
    How to leverage one TLS certificate to encrypt Microsoft SQL traffic and Remote Desktop Services, versus creating multiple tickets for the same server.
    In this sixth video of the Xpdf series, we discuss and demonstrate the PDFtoPNG utility, which converts a multi-page PDF file to separate color, grayscale, or monochrome PNG files, creating one PNG file for each page in the PDF. It does this via a c…
    In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

    794 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    15 Experts available now in Live!

    Get 1:1 Help Now