markneustadt.com

Pausing to catch your breath in C#

time-371226_640

Sometimes in your code, you find the need to try an operation that’s dependent upon some other system.  That other system might be a little laggy.  As such, you want to try your operation and then pause a moment or two before you try again.  A simple way to do this is with

Thread.Sleep(1000);

That little snippet of code will wait for one second and then continue.  There’s a better way though…

Read more

WebAPI – Accepting both form data and query string parameters

Recently, I had to write a WebAPI method in C# that would be an HTTP POST.  Basically, I wanted to hit

http://localhost:99/api-demo/samplemethod/myIdString

and pass a bunch of data in the body of the request. Simple, no?

In our project, we make heavy use of the Route attribute to decouple the method name from the URL.  My method looked okay.

    [RoutePrefix("api-demo")]
    [SetUser]
    public class DemoController : ApiController
    {
        [HttpPost]
        [Route("samplemethod")]
        public IHttpActionResult Sample([FromBody] string requestBody, string id)
        {
            return Ok(String.Format("Request with ID {0} body has a length of {1}", id, requestBody.Length));
        }
    }

This sample code is clearly very simple.  I have decoupled the controller to api-demo and the method to samplemethod. It appears like everything would work as expected, however when I would test it via POSTMAN, I get the following response:

{
  "$id": "1",
  "Message": "No HTTP resource was found that matches the request URI 'http://localhost:99/api-demo/samplemethod/1134630'.",
  "MessageDetail": "No type was found that matches the controller named 'api-demo'."
}

Read more

Performance – Using Try/Catch

I just wrote the stupidest program ever.  It is inefficient by design.  If anyone did this thinking “hey… this is great code” they should be fired.

Anyway… generally speaking, using try/catch blocks is not a great idea.  There are a myriad of reasons but it’s usually something along the lines of:

If you truly have an unexpected error it’s better to let the program crash and then fix the bug.

If you do have to use the try/catch exception handling block, you should only catch explicit exceptions.  For example catch a file access exception or a database invalid primary key exception.  Just catching the generic exception is poor practice.

There’s another reason to avoid try/catch though… it is a performance hog.

Read more

Performance – Inline SQL vs Parameterized Queries

In the search for better and better performance, there are many techniques developers can use.  A technique used early on by some entry level or “still learning” developers is to build inline SQL.  That looks something like this:

string name = "Mark";
string query = "SELECT * FROM users WHERE FirstName='" + name + "'";
OleDbCommand cmd = new OleDbCommand(query);
OleDbDataReader reader = cmd.ExecuteReader();

There are steps missing… this is just example code

 

This is something more seasoned developers learn to avoid almost immediately.  There’s a variety of reasons why inline SQL is bad.  The most important reason is security.

However, there’s another reason to avoid it.  Performance.

Read more

How much cellular data does a Speedtest.net test use?

Screen_Shot_2015-11-08_at_7_46_11_AM

Speedtest.net is a great tool.  It’s used by millions of people all the time when their internet connections slow down.  It’s used by internet service providers when people call up and complain.

I decided to use the mobile version of the tool and see how fast my LTE data connection was.  That’s a different post though.  I wondered just how much data running a speedtest.net test would use.  Well here are the results.

Read more

What was a challenge you had to overcome at your last job?

Challenges-ahead

I have recently started a new job.  Well… it’s been a little over four months, but that’s still pretty recent.  It’s recent enough to still remember the job search and the questions I would get asked.  I never had to answer the “If you were a starving hot dog, would you eat yourself?” type of question, but I did get some interesting ones.  But then there are the standards that you’re asked all the time.  Among those is “What was a challenge you had to overcome at your last job?  How did you overcome it?”

Read more

Scroll To Top