An Unrivaled Windows Hosting Experience
1-888-313-9421  | webteam@orcsweb.com
  1. Publishing from Visual Studio 2010

    Visual Studio 2010 has an extremely functional and easy-to-use publish feature built-in. I use it to push sample code and changes up to my free ASP.NET 4.0 RC trial account (sure, I can get a site free as the CEO, but with this beta program running through March, anyone can get a free test account!).

    When you get your account information for your hosting account it will contain all the information needed to quickly and easily set up VS2010 for 1-click-publishing. With those few pieces of information in hand, select the VS2010 Publish option then "<New...>" to add the connection.

    You then get a dialog box with fields for you to enter your account information.

    The service URL for our free beta program is already entered above, as is the name of my personal test site. I then just enter my username and password, and save the connection using the huge button at the top of the window. Note that if you click Close or Publish the settings will not get saved automatically.

    Once the connection is set up, all you need to do for your code to be uploaded to the site is to click the single Publish icon.

    If you need to edit the settings for any reason, there is a easy access edit icon right there next to the publish icon.

    Microsoft has made it super easy with Visual Studio 2010 to publish and maintain your ASP.NET applications. You should definitely set up and use this handy feature.

     

    Thursday, March 11 2010 by | 0 comment(s)
    Tagged as: , , , , , ,

  2. C# is Case-Sensitive

    C# is case-sensitive. C# is case-sensitive. C# is case-sensitive.

    I have to keep reminding myself of this.

    I'm not used to case-sensitivity yet and it continues to challenge me.

    Wednesday, March 10 2010 by | 0 comment(s)
    Tagged as: , , , , ,

  3. Visual Studio 2010 is awesome - check it out!

    Visual Studio 2010, the latest and greatest version of Microsoft's developer toolset, will be releasing soon. I've been around hundreds of users (OrcsWeb clients, MVPs, and industry Insiders) who have used it through the beta cycle (as I have too) and the comments are overwhelmingly positive. If you haven't tried it out yet, you might want to check it out for free during the current RC phase.

    Once you've got it downloaded and running, feel free to set up a free ASP.NET 4.0 RC test hosting account with us this month to try out the deployment related features and the general hosting experience.

    Monday, March 08 2010 by | 0 comment(s)
    Tagged as: , , , , , , ,

  4. Does your SQL Server machine have enough RAM?

    Microsoft's SQL Server tends to lock up as much RAM on a server as possible. If you have 2GB of RAM, you'll notice it uses most of it. If you increase the RAM to 4GB, you'll notice it immediately starts to use most of the new RAM too. This is by design and due to SQL Server's goal of caching as much data (and SQL statements) as possible to minimize disk load and performance bottlenecks.

    How do you know if your SQL Server machine has enough RAM? Or if it would benefit from adding more RAM?

    Open Performance Monitor on the server and add the counter: SQLServer:Buffer Manager:Buffer Cache Hit Ratio.

    SQL Server Performance Counters for Memory (Cache)

    You really want the average to be as close to 100% as possible. If your numbers are tracking less than 95% you should consider adding more RAM to the server.

    A 100% cache hit ratio means that SQL Server is currently pulling 100% of the data requests from RAM rather than disk. Reading from RAM is always faster than reading from disk - even the new super-fast solid-state disk drives - so this is of course the preferred scenario. If you are getting 99%+ on your cache hit ratio counter, the server would likely not benefit from additional RAM right now. If performance gains are desired, you'd be better off looking at other areas (perhaps CPU or general query optimization).

     

     

    Wednesday, March 03 2010 by | 0 comment(s)
    Tagged as: , , , ,

  5. FREE ASP.NET 4.0 RC & Visual Studio 2010 trial hosting

    Did you know we have free hosting accounts available to test out ASP.NET 4.0 RC and Visual Studio 2010 through the month of March 2010?

    http://vs2010host.com/

    This is a great way to test out the new features of ASP.NET 4.0 and Visual Studio. We also support WebDeploy, one-click-publishing, and the remote IIS 7 management tools. This is a great opportunity to check them out - for free!

    And of course if you need quality production hosting, we at OrcsWeb have managed dedicated hosting, Hyper-V based virtual dedicated hosting, and windows shared hosting options available.

     

    Tuesday, March 02 2010 by | 0 comment(s)
    Tagged as: , , , , ,

  6. How to list the size of the tables within your SQL Server database

    Here is a useful post by Mitchel Sellers that lists information about each of the tables within a specific database. The output lists the total number of rows, reserved data size, used data size, index size, and unused space in each table.

    http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/121/determing-sql-server-table-size.aspx
    This is very useful when performing maintenance such as data purges for size management or row analysis for performance improvements.
     
    He wrote this as a stored procedure but if you leave the top two lines off the SQL you can run it from within SQL Server Management Studio (or Query Analyzer) as desired without saving it as a stored procedure - though you might find it useful enough to store to run as needed in the future.
     
    Here is the SQL he wrote, without the top two lines, that you can copy/paste and run:
     

    DECLARE @TableName VARCHAR(100)    --For storing values in the cursor

    --Cursor to get the name of all user tables from the sysobjects listing
    DECLARE tableCursor CURSOR
    FOR 
    select 
    [name]
    from dbo.sysobjects 
    where  OBJECTPROPERTY(idN'IsUserTable'1
    FOR READ ONLY

    --A procedure level temp table to store the results
    CREATE TABLE #TempTable
    (
        tableName 
    varchar(100),
        numberofRows 
    varchar(100),
        reservedSize 
    varchar(50),
        dataSize 
    varchar(50),
        indexSize 
    varchar(50),
        unusedSize 
    varchar(50)
    )

    --Open the cursor
    OPEN tableCursor

    --Get the first table name from the cursor
    FETCH NEXT FROM tableCursor INTO @TableName

    --Loop until the cursor was not able to fetch
    WHILE (@@Fetch_Status >0)
    BEGIN
        
    --Dump the results of the sp_spaceused query to the temp table
        
    INSERT  #TempTable
            
    EXEC sp_spaceused @TableName

        
    --Get the next table name
        
    FETCH NEXT FROM tableCursor INTO @TableName
    END

    --Get rid of the cursor
    CLOSE tableCursor
    DEALLOCATE tableCursor

    --Select all records so we can use the reults
    SELECT 
    FROM #TempTable

    --Final cleanup!
    DROP TABLE #TempTable

    GO

    Monday, March 01 2010 by | 0 comment(s)
    Tagged as: , , ,

  7. .Net 4's new IsNullOrWhiteSpace method

    .Net 4 (still in beta right now) has a handy new method that can analye a string and return where it is null or just whitespace versus other text. Here's a quick sample:

    ScratchPage.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ScratchPage.aspx.cs" Inherits="ScratchPage" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="textBox" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
            <br />
            <asp:Label ID="Label1" runat="server"></asp:Label>
        </div>
        </form>
    </body>
    </html>

    ScratchPage.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class ScratchPage : System.Web.UI.Page
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(textBox.Text))
            {
                Label1.Text = "The text box is null or has only white space.";
            }
            else
            {
                Label1.Text = "There is a non-null, non-white-space value in the text box";
            }
     
        }
    }

     

    Tuesday, February 23 2010 by | 0 comment(s)
    Tagged as: , , , ,

  8. The CodePlex Foundation Accepts MVC Contrib project into ASP.Net Open Source Gallery

    The subject of this post speaks for itself. I'm not sure how long the "latest news" will sit on the homepage of this site, but it's there now. Let me know if it moves and I'll adjust the link. http://www.codeplex.org/

    Here is more information about the specific MVC project: http://www.codeplex.com/MVCContrib

     

    Friday, February 19 2010 by | 0 comment(s)
    Tagged as: , , ,

  9. ASP.Net Forums

    If you aren't already familiar with the ASP.Net forums, you should browse over and check them out. It's a great place to get answers to frequently asked questions, post your own custom questions for solution assistance, answer questions for people to provide peer support, and find information about new and upcoming solutions (like the ASP.Net 4 forum).

    Some of the general topic groupings include General ASP.Net, AJAX, Visual Studio, Data Access, Advanced ASP.Net, Migration, and a number of Starter Kits and Source Project discussions.

    Thursday, February 18 2010 by | 0 comment(s)
    Tagged as: , , , , ,

  10. How to enable .Net 3.5.1 on Windows Server 2008

    When Windows Server 2008 is installed and the IIS roles are enabled, it defaults to .Net 2.0.

    If you want to run .Net 3.5.1 on the server you might think the process is as easy as just downloading the bits from Microsoft and running the installation process. No, it isn't. It still isn't hard, but it can be frustrating for someone who isn't familiar with the required process.

    To enable .Net 3.5.1 on a Windows Server 2008 machine that already has the IIS role enabled...

    To get started, from within Server Manager you need to select Features in the left-hand tree and then Add Features in the right-hand pane.

    NOTE: I have the SMTP feature enabled on this test server but on your machine you likely won't see that listed.

    On the next screen select the ".Net Framework 3.5.1 Features" option from the list.

    As soon as you click that box, a pop-up window like the one below will be displayed.

    Clicking "Add Required Features" will then install the necessary dependencies and files required to support .Net 3.5.1 on the server.

     

    Wednesday, February 17 2010 by | 0 comment(s)
    Tagged as: , , , , ,

  11. Hard drive speed - dedicated hosting storage - RPMs - SAS, SCSI, SATA

    Hard drives have a few different metrics related to their performance statistics. One of those metrics is the drives revolutions per minute - or RPMs.

    Consumer systems, especially portable computers, often have hard drives that spin at 5,400 RPM.*

    Server systems often have a few different options, including SATA drives that commonly spin at 7,200 RPM, and SCSI or SAS options that spin at either 10,000 or 15,000 RPM.*

    (* The newest type of drive is a solid state drive (SSD), which does not spin at all, so doesn't fit into a discussion about revolutions per minute. These type drives are also still rather expensive and limited in system configuration options - especially at the enterprise/server level. They are insanely fast though and I'm sure will work their way into the mainstream over the next few years.)

    What do these numbers mean?
    Let's crunch the numbers a little bit to see if we can make them useful.

    One way to consider the data is to ponder how many revolutions each drive can make in one second - revolutions per second (RPS). Dividing the total RPM by 60 easily gives this number. Here is that number and also the percentage gain in RPS from one speed to the next faster rotational speed.

    Differences in revolutions per second

    Those are pretty large increases in spins per second. And of course jumping more than one rotational speed - for example from 7,200 RPM to 15,000 RPM - gives huge gains - an increase of 108% in the 7,200/15,000 example.

    Another way to consider the data is the inverse of this calculation. Rather than revolutions per second, let's look at how long it takes each drive to complete one revolution. We'll calculate this by dividing 60 by the RPM of each drive.That's obviously a very small number so let's take it a step further and multiply by 1,000 to reflect how many milliseconds each revolution takes.

    Hard drive millisecond revolution cycle speed

    As expected, those are fairly decent variances - a 52% faster revolution spin speed if considering the change from a 7,200 RPM SATA drive and a 15,000 RPM SCSI or SAS drive.

    Is RPM all that matters?: Let's get one clarification out of the way because I suspect this article will generate a criticism otherwise - the spin speed of a drive is only one of several factors determining individual drive performance. Two other factors are the data transfer rates and how fast the read/write head of the drive can move from one part of the disk to another. This post is specifically about RPM though, so perhaps I'll touch on those other two points another time.

    What do these numbers mean to me?
    It seems obvious that the RPM speed of drives has some impact on performance of the drives, but let's discuss it a bit further and consider the implications.

    To understand the impact of RPM speed specifically, let's assume other factors of the drive are the same.

    If the system - whether notebook, desktop, or server - requests data that is just behind the read/write head so that the drive needs to spin one complete revolution for the data to be accessed, this would be a maximum rotational delay. The numbers above reflect those potential rotational delays varying from 4 ms to 11 ms.

    Even 11 ms is very fast, so should you care? If your system has light usage or your primary disk operations are big sequential files then you might not care. If you run database services, a wiki, or other type of disk-intensive applications, those speed differences might add up to a substantial performance impact. The more random disk access your server performs, the bigger difference you'd notice.

    Consider the difference between SAS/SCSI and SATA in those rotational delay times - a SATA drive can potentially take twice as long to find a specific location (file) on disk. That adds up to substantial performance differences under anything but very light user load.

    With the cost differences between SATA and SAS/SCSI diminishing in recent years, I strongly believe it is worth considering a SAS/SCSI disk configuration for your server - for immediate benefit and to handle future growth smoothly.

    At ORCSWeb our managed dedicated hosting servers are all deployed with SAS or SCSI disk configurations (and RAID) for the best performance and growth options for our clients.

     

    Tuesday, February 16 2010 by | 0 comment(s)
    Tagged as: , , , ,

  12. Securing ASP.Net Pages - Forms Authentication - C# and .Net 4

    ASP.Net has a built-in feature named Forms Authentication that allows a developer to easily secure certain areas of a web site. In this post I'm going to build a simple authentication sample using C# and ASP.Net 4.0 (still in beta as of the posting date).

    Security settings with ASP.Net is configured from within the web.config file. This is a standard ASCII file, with an XML format, that is located in the root of your web application. Here is a sample web.config file: 
    <configuration>
        <system.web>
            <authenticationmode="Forms">
                <formsname="TestAuthCookie"loginUrl="login.aspx"timeout="30">
                    <credentialspasswordFormat="Clear">
                        <username="user1"password="pass1"/>
                        <username="user2"password="pass2"/>
                    </credentials>
                </forms>
            </authentication>
            <authorization>
                <denyusers="?"/>
            </authorization>
            <compilationtargetFramework="4.0"/>
            <pagescontrolRenderingCompatibilityVersion="3.5"clientIDMode="AutoID"/>
        </system.web>
    </configuration>
     
    The very first line is standard for a web.config file and has no bearing on the security.
     
    The next section specifies that you are configuring the security for this web application. First we set the authentication mode to use a cookie in this specific example. You can specify a unique name for your cookie. This section also specifies the page or URL that will contain the authentication code (login.aspx in this case) and how long the authentication cookie should be persisted.
     
    The next two lines specify valid usernames and passwords for this web application. As far as I know there is no limit to the number of user accounts you can place in the web.config, but if there were a large number - or if they change frequently - it might be better to place this information in an external file like a database or an XML file instead (I'll show this in a future article).
     
    Now that we have specified some valid logon accounts, we need to actually specify that we want to password protect. For this example I have decided to password protect the entire web site starting at the root, so the optional <location> attribute will not be used. We set the authorization to deny all non-authenticated users (deny users="?").
     
    That's all that is needed for the config.web file. If someone tries to access the site and the user has not already authenticated, they will be redirected to the login.aspx page.
     
    This is only half the required process though. We now need to create the login.aspx page to actually allow the user to authenticate to our application.
     
    Here is the complete source of the sample login.aspx page
     
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            Username:
            <asp:TextBox ID="username" runat="server"></asp:TextBox>
            <br />
            Password:
            <asp:TextBox ID="password" runat="server"></asp:TextBox>
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Login" />
            <br />
            <br />
            <asp:Label ID="status" runat="server" Text="Please login"></asp:Label>
        </div>
        </form>
    </body>
    </html>
     
    And here is the complete source of the login.aspx.cs file:
    using System;
    using System.Web.UI.WebControls;
    using System.Web.Security;
     
    public partial class Default3 : System.Web.UI.Page
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FormsAuthentication.Authenticate(username.Text, password.Text))
            {
                status.Text = ("Welcome " + username.Text);
                FormsAuthentication.RedirectFromLoginPage(username.Text, true);
            }
            else
            {
                status.Text = "Invalid login!";
            }
     
        }
    }
     
    Let's look at the login.aspx page first. This is fairly straight-forward HTML format. These aren't actually straight HTML tags, but rather ASP.Net HTML controls that will render HTML page to the client browser (you can tell the difference because the runat="server" tag at on the control). This is a form that accepts a username and password. When the submit button is clicked, this page executes the code within the login.aspx.cs page located in the subroutine named "Button1_Click".
    Inside the Button1_Click method we use the FormsAuthentication object. The first line of the sub actually passes the entered username and password over to the object, which in turn compares this information to the values in the web.config file. If the values match, then the next line changes the label (just so we can see visually that it worked) then writes a cookie to the browser and redirects the user back to the original URL which was requested. The second value listed ("true") tells the browser to persist the cookie. So if this user authenticates, closes their browser, opens it again, and tries the secure URL - they will still be authenticated.
    If the username and password entered did not match, an error message is displayed to the screen and the visitor is allowed to enter a new username and password to try again.
    This is a simple example and I don't cover any of the advanced configurations or options, but with this sample code, you should have a basis to work with if you want to implement security in ASP.Net
     

    Monday, February 15 2010 by | 0 comment(s)
    Tagged as: , , , ,

  13. Design Guidelines for Developing Class Libraries

    Someone pointed out my old-school VB naming conventions in a recent C# sample code post and provided some pointers and some suggested reading. I've named objects the same way for so long that I'm sure I'll struggle with the changes, but I took the pointers to heart and will work to adjust my naming conventions moving forward. I haven't read through the link provided yet, but figured I'd share it here (its from MSDN).

    He also mentioned that the comments button isn't currently working, which explains why comments have totally dropped off - someone here is looking into that issue to see why it broke and will hopefully have it working again shortly.

    Update: Here is another link I was just reading about Pascal Case and Camel Case use in C# programming:
    http://cplus.about.com/od/learnc/ss/csharpclasses_5.htm

     

    Wednesday, February 10 2010 by | 0 comment(s)
    Tagged as: , , , ,

  14. FREE eBook: .NET Performance Testing and Optimization

    Paul Glavich and Chris Farrell have written a book on performance testing and optimization for .Net and it's available as a free eBook download from the Red Gate website. The price cannot be beat - FREE! You should go check it out.

     

    Tuesday, February 09 2010 by | 0 comment(s)
    Tagged as: , , , ,

  15. Sending email from ASP.Net 4 - C# sample code

    (I updated the code sample based on feedback about C# naming standards and leveraging iDisposable - which I'm sure I'll forget many times until I get comfortable more with C#.)

    Below is sample code showing how to send email from ASP.Net 4 (currently in beta as of this posting) using C#. With this code I am assuming that the server already has a local SMTP service installed, so I use "localhost" to relay the email.

    Here is the SendMail.aspx page:

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="SendMail.aspx.cs" Inherits="SendMail" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

        <title></title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

            Message to:

            <asp:TextBox ID="to" runat="server"></asp:TextBox>

            <br />

            Message from:

            <asp:TextBox ID="from" runat="server"></asp:TextBox>

            <br />

            Subject:

            <asp:TextBox ID="subject" runat="server"></asp:TextBox>

            <br />

            Message Body:

            <br />

            <asp:TextBox ID="body" runat="server" Height="171px" TextMode="MultiLine"

                Width="270px"></asp:TextBox>

            <br />

            <asp:Button ID="sendMail" runat="server" onclick="SendMail_Click"

                Text="Send Email" />

            <br />

            <br />

            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

        </div>

        </form>

    </body>

    </html>

     

    Here is the source code of the SendMail.aspx.cs page:

    using System;

    using System.Web.UI.WebControls;

    using System.Net.Mail;

     

    public partial class SendMail : System.Web.UI.Page

    {

        protected void SendMail_Click(object sender, EventArgs e)

        {

            using (MailMessage mailItem = new MailMessage(

                from.Text, to.Text, subject.Text, body.Text))

            {

                SmtpClient smtpServer = new SmtpClient("localhost");

                try

                {

                    smtpServer.Send(mailItem);

                }

                catch (Exception ex)

                {

                    Label1.Text = ex.ToString();

                }

            }

        }

    }

     

     

    Monday, February 08 2010 by | 0 comment(s)
    Tagged as: , , , , , ,

  16. The System Center Team Blog

    If you have interest in system configuration, monitoring, and management solutions, you might want to follow the Microsoft System Center team's blog.

    Friday, February 05 2010 by | 0 comment(s)
    Tagged as: , ,

  17. How to install SMTP on Windows Server 2008

    The SMTP services are not installed by default on Windows Server 2008. To install that service, follow these steps...

    First go to the Features Summary section of the Server Manager and click Add Features.

    Server Manager Features Summary

    Then scroll down and select the SMTP Server option from the list.

    Once you click the SMTP Server option, you'll get a dialog box showing the other roles and features required for the SMTP service to work.

    Click Add Required Role Services then Next on the three subsequent dialog boxes. You're then presented with a summary and an Install button. Click Install and all the required services will be installed to support SMTP on the server.

     

    Thursday, February 04 2010 by | 0 comment(s)
    Tagged as: , , , ,

  18. Installing Visual Web Developer 2010 Express Beta 2

    First things first, you can download the Visual Web Developer 2010 Express Edition Beta 2 (wow, that sure is a mouth-full!) for free from Microsoft's site here.

    On the initial welcome screen there is nothing to do but click next. No option to opt-out from sending your information to Microsoft. Hey, it is a beta, and a major goal with beta programs is to get feedback, so I certainly don't blame them for locking that in.

    Next, agree to the license (read it first of course).

    After that you get an optional install screen. There is only one option presented to me, and it's SQL Server 2008 Express SP1. I'm going to select it and highly suggest you do to. After all, what fun is a web application without a SQL source?

    The next screen lets you select a specific install folder - or accept the default.

    I'm going to leave the defaults alone. Space requirement shows as 3.2GB, which isn't horribly large. Well, yeah, it's big for sure, but just wait until you see everything included - then you'll likely agree that 3.2GB of space is not a bad trade-off.

    Click install from there and a download and install process starts. I show 18 items for a total of 292MB being downloaded, which matches what the install screen earlier showed. What takes up the additional 3GB?? I guess I'll have to wait and see.

    Well, the install is done now. That was painless. I have no idea why the space requirements were 3.2GB though. I've clicked around the folders and did a quick estimate around 400MB of new files. Either the install needs a ton of temporary installation space (3GB) or maybe that's a small bug on the install screen.

     

     

    Wednesday, February 03 2010 by | 0 comment(s)
    Tagged as: , , , , ,

  19. Google Trends

    I recently became aware of the Google Trends tool. This is a really neat way to review traffic volumes over time for certain specific search words and phrases.

    You can check the trends of anything, but as an example, let's look at search volume of "windows hosting" and "linux hosting" overlapped for the past twelve months...

    What's the value? Well, certainly from a marketing and SEO standpoint there are some fairly obvious values. It's also just satisfies a curiosity. I found it interesting to see that search volume for both terms has dropped slightly over the past year; and interesting that almost twice as many people search for "windows hosting" than "linux hosting".

    Friday, January 29 2010 by | 0 comment(s)
    Tagged as: , , ,

  20. Managed Dedicated Hosting - Hard Drive Redundancy / RAID

    When working with client prospects to understand the differences between ORCS Web's dedicated solutions and cheap host options, many things come to light preventing an easy initial apples-to-apples comparison.

    One of the common differences we see is that most hosts include a single hard drive with their standard server packages. Every dedicated solution that ORCS Web deploys has a hardware based RAID solution though. If the term RAID is unfamiliar to you, please see "What is RAID" for some background information.

    Having multiple hard drives setup in a RAID configuration benefits both performance and redundancy. Server hard drives spin at a tremendous speeds and are the most likely hardware components of a server system to fail. With a RAID solution, the server stays online with no interruption and the failed hard drive can be hot-swapped while the server is online - no disruption to the hosting at all.

    Personally, I would not deploy a production application to a server that did not have a RAID hard drive configuration. But, admittedly, not everyone shares this viewpoint. I've had some interesting dialog with a couple of people who say "who cares?". Their thought is that if their server drive fails, they'll just get the host to pull out the drive, put in a new one, restore the data, and get the server back online.

    Well, let's consider some points for a non-RAID drive failure in a production server...

    Do you have backups? I'm a HUGE believer in backups for all systems. I'll craft a future post about this point. But, if you are going to consider deploying to server with a single hard drive, you better be sure you have backups. Either manually export all your data to your personal PC on a regular basis, or be sure that your host is backing up your server.

    When was the last backup? Any data written or changed on the drive between the most recent backup and the failure is going to be lost. In some situations this can be a huge deal. Lost orders; lost user accounts; lost records - all gone and never to be seen again.

    How easy is the restore? If the drive that fails is just hosting standard web content only, or image files, or some other simple file type, the restore process might be fairly quick and easy. If the drive is holding the OS, or data files, or dozens of other types of complex or transactional data, it's a totally different situation. The time to actually run the restore process (getting the data back onto a new hard drive) is only part of the work. There is often a decent amount of manual work still required to get the system fully functioning again with the data current.

    Swap the drives... Depending on the type of server you are running, the hard drive swap process can be really simple - pull a drive from the front of the system and slide in a new drive. Or it could be rather cumbersome - un-rack the server, open it up, pull the drive, put in a new one, close everything back up, re-rack the server. Also, if considering this option, best be sure the host can assure you they have the exact physical size, data size, and speed hard drive that you'll need, or you could be stuck without a quick replacement.

    Considering those points - If the server was being backed up, and if there are spare drives sitting around, and if the restore process goes smoothly... you would still be looking at a few hours of downtime - maybe many hours depending on the specifics of the situation. And even after the server is restored you could be dealing with the potential fallout of data loss and the impact to your organization. How will your clients react? How about site visitors that stopped by and couldn't access the server?

    Is it worth the risk to save a negligible amount of money on your hosting cost each month? Maybe in some situations where the users are extremely tolerant of downtime and data loss is not a concern. In the reality of today's world though, fewer and fewer Internet sites or applications have users that would tolerate such a situation when it could be so easily avoided.

    I say go RAID and be safeguarded against hard drive failure.

     

     

    Tuesday, January 26 2010 by | 0 comment(s)
    Tagged as: , , , , ,

  21. Webfarms: The Only Way To Host!

    With all the chatter about "clouds" in the past two years, I thought I'd repost an article I wrote back in 2004. Cloud is a further continuation of the webfarm concept, and the information contained below should be helpful in understanding those general concepts.

    Networks and power can be configured to be so incredibly redundant now - for reasonable prices - that there is no excuse for a data center not to achieve five nines (99.999%) of availability.

    But what about the servers and applications? Why spend so much time up front configuring the network to make sure it doesn't fail, and then deploy an application to a single server?

    Sure, there are ways to make sure individual servers have some redundancy to minimize failures -- things like RAID1, RAID5, or RAID10 (redundant array of inexpensive disks) which will protect against a disk drive failure (and I highly recommend this type of configuration for all production servers - and preferably the use of hardware RAID vs. software RAID). But what happens if a file gets corrupt on the RAID array? Or a recent configuration change brings the application down? Or a newly released patch conflicts with other settings and causes problems? Well, in these situations the server will go down and the application(s) hosted on that server will be offline.

    A good monitoring and alerting process will allow the system administrator to detect and address these issues quickly, but still there will be some level of downtime associated with the issue. And depending on the type of issue, even the best system administrator might not be able to immediately resolve the issue - it may take time. Time during which your application is unavailable and you may be losing business due to the site interruption.

    So, what can you do?

    A great option - and one that has recently become more affordable - is to host your application on a webfarm. A webfarm consists of two or more web servers with the same configuration, and that serve up the same content. There are special switches and processes involved that allow each of these servers to respond to a request to a single location. For example, say we have two servers - svr1.orcsweb.com and svr2.orcsweb.com - that have 100% the same configuration and content. We could configure a special switch* to handle traffic that is sent to www.orcsweb.com and redirect the traffic to either of these nodes depending on some routing logic. All clients visiting the main URL (in this case www.orcsweb.com) have no idea whether this is a single server - or ten servers! The balancing between nodes is seamless and transparent.

    [*note: There is also software that could handle the routing process but experience and test have shown that these types of solutions are generally not as scalable, fast, or efficient as the hardware switch solutions] [2010 Update: Our thorough testing of Microsoft's ARR product has shown it to be an excellent load-balancing appliance option.]

    The routing logic can be a number of different options - most common are:

    • Round-robin: Each node gets a request sent to it "in turn". So, node1 gets a request, then node2 again, then node1, then node2 again.
    • Least Active: Whichever node shows to have the lowest number of current connects gets new connects sent to it. This is good to help keep the load balanced between the server nodes.
    • Fastest Reply: Whichever node replies faster is the one that gets new requests. This is also a good option - especially if there are nodes that might not be "equal" in performance. If one performs much better than the other, why not send more requests there?

    In any of these scenarios the switch will also detect if a node were to fail. So, if svr1.orcsweb.com was taken offline for maintenance - or it had a critical failure - the switch would detect that and only send traffic to svr2.orcsweb.com. And since the clients always access the site via the main URL (not the node names) they have no idea that one of the nodes is down - the application continues to serve client requests seamlessly.

    Besides high-availability (continuing to satisfy requests during a failure), a webfarm also gives an application a higher level of scalability - the ability to handle more and more load. If load increased on the application to the point where performance started to degrade, more nodes could be added to the webfarm (again, without clients noticing), giving the ability to handle potentially unlimited levels of traffic (just keep adding nodes!).

    Of course there are a lot of factors surrounding the proper support of a webfarm - the switches, fail over between switches (don't let the switch be a single point-of-failure!), replication of content, synchronization of server changes, synchronization of application changes, etc, etc.. But a good system administrator (or experienced hosting company) can help address all of these issues for you.

    Hopefully this has been a good introduction to webfarms for you, and hopefully I've properly communicated enough of the benefits for you to consider this as a hosting option for yourself. With the rates now down to affordable levels - why not get this additional layer of protection?

    Happy hosting!

    ~Brad

    Thursday, January 21 2010 by | 0 comment(s)
    Tagged as: , , , , , ,

  22. Use WCAT To Load-Test Your Web Application

    Here is a useful post giving an introduction to Microsoft's WCAT - which can be used to generate load against a web application.

    http://blogs.msdn.com/alikl/archive/2008/03/09/stress-test-asp-net-web-application-with-free-wcat-tool.aspx

     

    Wednesday, January 20 2010 by | 0 comment(s)
    Tagged as: , , ,

  23. Managed Dedicated Hosting - Network Speed - Bandwidth

    "What's your server's uplink speed?"

    "What?"

    "How fast is your server's network connection?"

    "OC3 I think."

    That's not an actual discussion but I could see it being a common one with many people getting started in dedicated hosting. Non-administrators just assume the server is "connected to the Internet" and can perform at whatever speed the host advertises for network bandwidth. That is of course not quite accurate.

    When reviewing differences between our standard managed dedicated hosting options and some cheap competitor options, something that shows up (much more often than many would believe) is the server's uplink speed. This is the speed of the server's connection to the web host's network core. It amazes me that some hosts have default uplink speeds of 10 Mbps then charge for an increase to 100 Mbps and charge further for an increase to 1000 Mbps (gigE).

    Now, I can understand why the host would do that because the lower the uplink speed, the lower the total impact on their overall bandwidth. It would also allow them to use older network equipment (10 Mbps wasn't bad 10 years ago).

    But how does that impact the hosting client? Well, it can actually have a rather large impact on the client.

    Time Warner Road Runner is the ISP I use at home and when things are running well I get about 6 Mbps of download speed. How many concurrent users at 6 Mbps would it take to saturate a 10 Mbps uplink? Not many. It is more than just 1.5 because visitors don't all click at exactly the same second, but still, anything busier than just the smallest of sites is likely to see a performance impact if their server's connection is only 10 Mbps.

    100 Mbps is a lot better and might be fine for small sites at an average time during the day. We host servers for many clients though who burst past 100 Mbps on the servers and who would notice performance impact at these levels.

    I mention "might" because there are additional factors. Like what happens if your site is medium sized and justifies running web and database services on two different machines? That means that not only do you have visitor traffic using the uplink port, but also the communication and data being transferred between the web and database server... and you want that connection to be fast because applications can slow down quickly if the database becomes a bottleneck.

    At ORCS Web all of our servers have 1000 Mbps (gigE) uplink connections to our network core. This provides for excellent burst speeds as traffic increases on the servers, great low-latency connections between the web and database servers, and no network impact when our managed backups are running. Could we save some bandwidth costs with slower uplink speeds? Sure. Could we save some network costs with older equipment? Sure. But our focus is not on providing a "cheap" solution with potentially client-impacting shortcuts just to make more money. Our focus is on providing quality solutions at competitive rates. Our focus is on maximizing value for our clients and providing solutions that best meet their needs both short and long term as their businesses, and therefore their web sites and applications, grow over time.

    What's your server's uplink speed?

    This is a follow-up to a recent blog post titled "Managed Web Hosting - Compare Features and Services".

    Tuesday, January 19 2010 by | 0 comment(s)
    Tagged as: , , , ,

  24. Saving Snapshots to PNG in Silverlight 4 and the WebCam

    John Papa has a cool blog post about capturing images from a webcam using Silverlight. Check it out.

    http://johnpapa.net/silverlight/saving-snapshots-to-png-in-silverlight-4-and-the-webcam/

     

    Wednesday, January 13 2010 by | 0 comment(s)
    Tagged as: , ,

  25. Managed Web Hosting - Compare Features and Services

    Something we do frequently is work with client prospects to understand the difference between our managed dedicated hosting and other options they might have found. Through these exercises we've grown confident, and the hosting prospects largely agree, that when comparing our solutions to another quality hosting provider apples-to-apples, the rates are comparable or often lower here at ORCS Web.

    The potentially tricky part for someone who is looking for hosting is to notice the differences then understand how those differences might impact them. Especially in today's economy it is tempting to see a lower priced option and select it on price alone. Sometimes that cheap pricing isn't such a great deal though if additional services need to be added on to the base, or if the lack of certain services put the solution at risk of failure, poor performance, or even data loss.

    Follow my blog for some near-term future posts on specific areas to note and compare when reviewing hosting package differences

    Thursday, January 07 2010 by | 0 comment(s)
    Tagged as: ,

  26. Gigabit WiFi - Juices are flowing now!

    The announcement of a future release of Wifi supporting gigabit speeds has sparked some very interesting discussions here at ORCSWeb. Topics like this are constant reminders of just how technically geeky our team is. :-)

    So, gig-wifi... what can we do? Well, maybe there is a future enterprise level implementation scenario? Imagine when speeds reach 10 gig - or more! Imagine a data center with no network cables! Imagine the built-in redundancy rather than physical multi-path switch deployments. Imagine the ease of deployment, changes, and other network maintenance items. Nice.

    Also though imagine the Wifi band congestion. There would need to be a solution to allow a ton more traffic and data flow than current standards support. There would also need to be a solution to allow many more private networks to be supported in reasonable proximity without stepping all over each other and generating interference.

    Security would be another topic to dig deeply into and address. I can picture a future enterprise Wifi feature though that combines current-day security like WEP or WPA with some built-in VPN-type features... sort of like VLAN'ing and encrypting the wireless connections.

    Of course if we are eliminating cables, how about those pesky power cables. There are already some very interesting advancements in wireless power - just check out some of the results from searching "wireless power" in Google.

    Well, you heard it here first folks. The data center of the future - cable-free.

    Monday, December 21 2009 by | 0 comment(s)
    Tagged as: , , , , ,

  27. Five years ago I had my head in the clouds...

    Five years ago I had my head in the clouds and wrote a short introductory article about highly-available and highly-scalable hosting.

     http://www.orcsweb.com/articles/web_cluster.aspx

    Yes, in February of 2004 I was trying to help people understand and appreciate the benefit of cloud hosting. I didn't have the marketing powerhouse of Microsoft or Google, nor was the term "cloud" being used in the industry, but the technology was available and at ORCS Web we had already been supporting clients of various sizes on cloud platforms with great success.

    I continue to be a huge fan of cloud hosting and believe it deserves consideration from anyone who takes their web application hosting seriously. Success on the platform takes a lot more than just throwing a few servers online though so clients should be looking for a host with years of experience and proven successes. There is also more to hosting than just the infrastructure. Strong technical support and excellence in customer service are also key to successful hosting solutions so clients should read reviews and check references before entering into a hosting relationship.

    We'd love to help your web solutions be successful so let us know if you have any questions or if there is anything we can do for you.

    Happy hosting!

    Brad

     

     

    Sunday, February 01 2009 by | 0 comment(s)
    Tagged as: , , , , , , ,

  28. Dedicated Cloud Solutions

    I've noticed that a few hosting companies are now advertising that they have "dedicated cloud" solutions. That's an interesting bit of marketing. A dedicated cloud, as I understand it (and confirmed by details on competitor sites) is basically a webfarm front-end with possibly a database cluster on the backend (though often the term "cloud" is targeted toward the front-end solution).

    Either these companies are new to the webfarm / cloud space, or they're just putting a marketing twist on existing services.

    At ORCS Web we have been hosting highly-available and highly-scalable webfarm solutions for clients for over ten years. Here's a short case-study about a webfarm solution we manage for Lake Quincy Media. We also host webfarm / cloud solutions for http://www.asp.net/, http://www.zagat.com/, http://aspalliance.com/, and many other clients.

    I guess I need to start getting comfrotable with using the term cloud now since it seems to be the new buzzword. Whether you call it a cloud, webfarm, server farm, or anything else - I'm all for HA/HS solutions and believe that anyone who relies heavily on their web site/application being online should go this route. It's the best way to avoid costly downtime that might otherwise occur with hardware failure or resource overload.

    Happy Hosting!

    ~Brad

     

    Tuesday, December 23 2008 by | 0 comment(s)
    Tagged as: , , , , , , , , ,

  29. Oxite: New Microsoft CMS Package

    Jeff Sandquist announced on his blog that his team has released Oxite, a new open-source content management "sample" (I'm not sure what makes it a sample, but that is the word used on the site) for people to use when adding blog and wiki functionality to their websites.

    Check it out:
    http://www.jeffsandquist.com/supporting-web-standards-with-microsoft/
    http://visitmix.com/Lab/Oxite

    Brad

    Wednesday, December 10 2008 by | 0 comment(s)
    Tagged as: ,

  30. Generation 4 Modular Data Center

    If you are interested in data center advancements, and have a lot of time on your hands to read and digest a lot of content, you might want to check out this recent long blog post by someone in Microsoft's Global Foundation Services department.

    http://loosebolts.wordpress.com/2008/12/02/our-vision-for-generation-4-modular-data-centers-one-way-of-getting-it-just-right/

     

    Friday, December 05 2008 by | 0 comment(s)
    Tagged as: ,

  31. Recent Spam Levels

    So much for the demise of McColo causing SPAM levels to drop by 75%. The level of spam as tracked by our devices for the most recent week ran right around 96%. That's right - only 4% of the email was legitimate email.

    Wednesday, December 03 2008 by | 0 comment(s)
    Tagged as: ,