Understanding Web-Service Performance

Primarily because of their distributed nature, web services provide advantages to developers, the most important of which is ease of code reuse. The cost of a web service’s distributed processing is performance. Because the web services require network operations, the web service will be considerable slower than a program’s call to a function that resides on the same computer. Consider, for example, the following C# program that determines the square root of the values 1 to 1000:

The program reads as follows: Line 1: using System semi colon. Line 2: name space Console Application 1. Line 3: open brace. Line 4: class Program. Line 5: open brace. Line 6: static void Main open parenthesis string open bracket close bracket args close parenthesis. Line 7: open brace. Line 8: long Starting Ticks equals Date Time dot Now dot Ticks semicolon. Line 9: for open parenthesis double i equals 0.0 semicolon i less than 1000.0 semicolon i equals i plus 1.0 close parenthesis. Line 10: open brace. Line 11: double Discard equals Math dot S q r t open parenthesis i close parenthesis semicolon. Line 12: close brace. Line 13: long Ending Ticks equals Date Time dot Now dot Ticks semicolon. Line 14: long Ticks Required equals open parenthesis Ending Ticks minus Starting Ticks close parenthesis semicolon. Line 15: Console dot Out dot Write Line open parenthesis double quotes Ticks required colon double quote plus Ticks Required dot. Line 16: To String open parenthesis close parenthesis close parenthesis semicolon. Line 17: Console dot Read Line open parenthesis close parenthesis semicolon. Line 18: close brace. Line 19: close brace. Line 20: close brace.

The program, in this case, simply tracks how long it takes to perform its processing and then displays output similar to the following:

The program reads as follows: Line 1: using System semi colon. Line 2: name space Console Application 1. Line 3: open brace. Line 4: class Program. Line 5: open brace. Line 6: static void Main open parenthesis string open bracket close bracket args close parenthesis. Line 7: open brace. Line 8: long Starting Ticks equals Date Time dot Now dot Ticks semicolon. Line 9: for open parenthesis double i equals 0.0 semicolon i less than 1000.0 semicolon i equals i plus 1.0 close parenthesis. Line 10: open brace. Line 11: double Discard equals Math dot S q r t open parenthesis i close parenthesis semicolon. Line 12: close brace. Line 13: long Ending Ticks equals Date Time dot Now dot Ticks semicolon. Line 14: long Ticks Required equals open parenthesis Ending Ticks minus Starting Ticks close parenthesis semicolon. Line 15: Console dot Out dot Write Line open parenthesis double quotes Ticks required colon double quote plus Ticks Required dot. Line 16: To String open parenthesis close parenthesis close parenthesis semicolon. Line 17: Console dot Read Line open parenthesis close parenthesis semicolon. Line 18: close brace. Line 19: close brace. Line 20: close brace.

In this case, the square root processing took 5 ticks (100 nanosecond intervals) to complete.

In contrast, consider the following C# program that uses a remote web service to calculate the square-root values:

The program reads as follows: Line 1: using System semicolon. Line 2: namespace Console Application 1. Line 3: open brace. Line 4: class Program. Line 5: open brace. Line 6: static void Main open parenthesis string open bracket close bracket args close parenthesis. Line 7: open brace. Line 8: Service Reference dot Service Soap Client Square Root Report equals new. Line 9: Service Reference dot Service Soap Client open parenthesis close parenthesis semicolon. Line 10: long Starting Ticks equals Date Time dot Now dot Ticks semicolon. Line 11: for open parenthesis double i equals 0.0 semicolon i less than 1000.0 semicolon i equals i plus 1.0 close parenthesis. Line 12: open brace. Line 13: double Discard equals Square Root Report dot Square Root open parenthesis i close parenthesis semicolon. Line 14: close brace. Line 15: long Ending Ticks equals Date Time dot Now dot Ticks semicolon. Line 16: long Ticks Required equals open parenthesis Ending Ticks minus Starting Ticks close parenthesis semicolon. Line 17: Console dot Write Line open parenthesis double quote Ticks Required colon double quote plus Ticks Required close parenthesis semicolon. Line 18: Console dot Read Line open parenthesis close parenthesis semicolon. Line 19: close brace. Line 20: close brace. Line 21: close brace.
The program reads as follows: Line 1: using System semicolon. Line 2: namespace Console Application 1. Line 3: open brace. Line 4: class Program. Line 5: open brace. Line 6: static void Main open parenthesis string open bracket close bracket args close parenthesis. Line 7: open brace. Line 8: Service Reference dot Service Soap Client Square Root Report equals new. Line 9: Service Reference dot Service Soap Client open parenthesis close parenthesis semicolon. Line 10: long Starting Ticks equals Date Time dot Now dot Ticks semicolon. Line 11: for open parenthesis double i equals 0.0 semicolon i less than 1000.0 semicolon i equals i plus 1.0 close parenthesis. Line 12: open brace. Line 13: double Discard equals Square Root Report dot Square Root open parenthesis i close parenthesis semicolon. Line 14: close brace. Line 15: long Ending Ticks equals Date Time dot Now dot Ticks semicolon. Line 16: long Ticks Required equals open parenthesis Ending Ticks minus Starting Ticks close parenthesis semicolon. Line 17: Console dot Write Line open parenthesis double quote Ticks Required colon double quote plus Ticks Required close parenthesis semicolon. Line 18: Console dot Read Line open parenthesis close parenthesis semicolon. Line 19: close brace. Line 20: close brace. Line 21: close brace.

In this case, the program would display output similar to:

The program reads as follows: Line 1: using System semicolon. Line 2: namespace Console Application 1. Line 3: open brace. Line 4: class Program. Line 5: open brace. Line 6: static void Main open parenthesis string open bracket close bracket args close parenthesis. Line 7: open brace. Line 8: Service Reference dot Service Soap Client Square Root Report equals new. Line 9: Service Reference dot Service Soap Client open parenthesis close parenthesis semicolon. Line 10: long Starting Ticks equals Date Time dot Now dot Ticks semicolon. Line 11: for open parenthesis double i equals 0.0 semicolon i less than 1000.0 semicolon i equals i plus 1.0 close parenthesis. Line 12: open brace. Line 13: double Discard equals Square Root Report dot Square Root open parenthesis i close parenthesis semicolon. Line 14: close brace. Line 15: long Ending Ticks equals Date Time dot Now dot Ticks semicolon. Line 16: long Ticks Required equals open parenthesis Ending Ticks minus Starting Ticks close parenthesis semicolon. Line 17: Console dot Write Line open parenthesis double quote Ticks Required colon double quote plus Ticks Required close parenthesis semicolon. Line 18: Console dot Read Line open parenthesis close parenthesis semicolon. Line 19: close brace. Line 20: close brace. Line 21: close brace.

As you can see, the message-passing overhead associated with the calling the remote web service increased the processing to over 10,000,000 ticks. The point of these two examples is to illustrate that because of network overhead, a web service, despite the increased reuse of code, is not always the best solution to a problem.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.125.169