c# render pdf : Reverse pdf page order online SDK Library service wpf asp.net azure dnn vb_dot_net_developers_guide58-part613

548
Chapter 11 • Optimizing, Debugging, and Testing
Regression Testing
Another fact of software development is that what the client wants now is not
going to be the same thing that the client wants six weeks from now. Needless to
say, change requests will occur after the product goes live.When these changes are
implemented (at a premium, of course!), some other aspects of the system will
probably be affected.This is the purpose of regression testing. As changes are imple-
mented, we must retest all areas of the system that may have been affected by the
changes.
Stress Testing
It is good practice, before applications are released, to determine how much they
can take.This is called stress testing. An example of this is an application where
you allow people to update their address information online.At any one time, the
average number of users might be 5,000. But, what if 25,000 people try to use
your application at one time? How would your application react? And, what if
there were now 75,000 concurrent users? This is the concept behind stress
testing.You push your application beyond logical limits to see what it can handle
before grinding to a halt.This gives you a very good picture as to how scalable
your application is. If you do anticipate that as time goes on there will be more
clients and the potential for more concurrent users, this testing will tell you how
far you can go before you either have to throw more hardware at it or rearchitect
your application.
Monitoring Performance
The ability to monitor performance has come a long way.With Windows 2000
(and Windows NT 4.0), we can use the Performance Monitor (see Figure 11.7)
to help us track the performance of our applications.To launch the performance
monitor, simply type perfmon on the command line.
From this dialog box, if you select System Monitor you will see a chart that
will display the current performance of the machine. Each item that the monitor
is tracking is called a counter.To add counters to the chart, you can right-click in
the empty grid at the bottom and select Add Counters.You will see a dialog
box such as the one shown in Figure 11.8, where you can select the performance
object that you would like to monitor.Take a look at the list. Of particular
interest is Memory and Processor. By watching counters for these two items, you
can see exactly what type of stress your application is putting on the system. In
www.syngress.com
Reverse pdf page order online - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
rearrange pages in pdf document; rearrange pdf pages reader
Reverse pdf page order online - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
change pdf page order online; pdf rearrange pages online
Optimizing, Debugging, and Testing • Chapter 11
549
order to get clarification on what exactly any one counter is, you can select it
from the list of counters and then select Explain.A box will appear at the
bottom of the dialog box with an explanation of what the counter is doing.
www.syngress.com
Figure 11.7
Windows Performance Monitor
Figure 11.8
Add Counters Dialog
C# Word: How to Use C# Code to Print Word Document for .NET
document pages in original or reverse order within entire C# Class Code to Print Certain Page(s) of powerful & profession imaging controls, PDF document, image
switch page order pdf; how to rearrange pages in a pdf reader
550
Chapter 11 • Optimizing, Debugging, and Testing
Summary
A lot of competition exists in the world of software development. Not only for
products on the market but for the bragging rights of who can put out the most
robust application available. By mastering the concepts outlined in this chapter,
your development team can be well on its way to achieving those rights. By
reducing the amount of time it takes to locate bugs and fix them, you can signifi-
cantly reduce the amount of time it takes to get your application out.Visual Basic
.NET provides us with some strong tools to help make that possible.We covered
these tools, and they are worth mentioning again here. By becoming proficient
with the tools on the Debug menu and their associated shortcuts, combined with
the effective use of watches, breakpoints, traces, conditional compilation, and
assertions, we can become very proficient developers.
In addition to enhancing debugging techniques in order to decrease overall
development time, it is equally important to ensure that ample time is allotted for
a concise and complete testing strategy. By doing this, we make sure that we
catch all of our bugs (or at least as many as is humanly possible) before the
product goes out to paying customers.After paying customers receive a product
with mistakes in it, reputations begin to dwindle. Developers need to do thor-
ough unit testing during development and integration testing as the different
components are brought together.Then, you need to beta test your application
with people who are independent of the entire development process. From the
beta testing, changes will likely have to be made. In order to be thorough in
applying these changes, you should be sure to conduct regression testing in order
to ensure that all affected components still function the way they are supposed to.
Finally, before shipping your application to paying customers, put it through an
exhaustive stress test.This will help you target weaknesses in the code and appli-
cation that may become obstacles when you require your application to scale.
After stress testing your application, you may notice areas of weakness.This is
a good time to go through the code and identify any areas where you can further
optimize it.As we mentioned, you might be able to do this by passing arguments
by value wherever possible, reducing the amount of transitions required, using the
StringBuilder object whenever possible for string manipulation, and finalizing
your objects properly without counting on the Garbage Collector to sweep by at
any specific point in time.After all this is verified, you can monitor your applica-
tion’s performance by using tools such as the Windows Performance Monitor.
When you are satisfied with these results, look into what kind of compiler
options are available in order to make your executable smaller and faster.
www.syngress.com
Optimizing, Debugging, and Testing • Chapter 11
551
Solutions Fast Track
Debugging Concepts
;
Debugging is one of the most important aspects of development that we
should attempt to master.
;
The Visual Basic .NET IDE provides a very rich set of features that
enable us to become effective debuggers.
;
The most useful debugging techniques involve using watches, break-
points, conditional compilation, and traces.
Code Optimization
;
Passing arguments by value will have less overhead.
;
Reducing the number of transitions in our code will increase 
performance.
;
Properly cleaning up our objects when they are destroyed will prevent
abandoning resources such as database connections that are not managed
by the Garbage Collector.
Testing Phases and Strategies
;
Testing consumes the largest portion of the time allocated for software
development projects.
;
Ensure that testing is done by others outside the development team in
order to ensure that the maximum number of bugs are caught before
delivery of the product.
;
A solid testing strategy comprised of all of the different phases of testing
will help you deliver quality, robust software.
www.syngress.com
552
Chapter 11 • Optimizing, Debugging, and Testing
Q:
Can I use Run To Cursor to set the next executable line of code to be in a
different method than the one that the yellow arrow indicator is currently in?
A:
No, you can use the Set Next Statement and Run To Cursor commands
only within the current method. If you wish, you may use the Step Into
command in order to place execution into the method and then use Run To
Cursor.
Q:
Can I change the settings for the TraceSwitch at runtime?
A:
Yes, you can provide the user with menu options to change the level of Trace
at runtime.You can do this in reflection of the type of problem you may be
troubleshooting.
Q:
Are all the compiler options available from the Visual Studio IDE?
A:
Unfortunately, no.A large number of the compiler options are available only
on the command line.
Q:
Can the debugger be attached only to processes developed in .NET?
A:
No, you can attach the debugger to any process (even MS Office applica-
tions). But, the value of the debugging that you are able to do will depend on
how the application was compiled. It would be necessary for the application
to be compiled with debug information, or you would need to have access to
the source code.
www.syngress.com
Frequently Asked Questions
The following Frequently Asked Questions, answered by the authors of this book,
are designed to both measure your understanding of the concepts presented in 
this chapter and to assist you with real-life implementation of these concepts. To
have  your  questions  about  this  chapter  answered  by  the  author,  browse  to
www.syngress.com/solutions and click on the “Ask the Author” form.
554
Chapter 12 • Security
Introduction
Security is already an increasing concern for businesses.The .NET Framework is
designed to allow for distributed applications across the Internet.This concept
introduces a slew of security risks. Microsoft realizes these risks and has intro-
duced new security functionality that is incorporated in the .NET Framework.
This chapter is not meant to completely cover implementing security but rather
to show you the functionality that is available and how to use it.
Some of the security concepts are the same as before.You will still authen-
ticate users prior to allowing them on the system.You will continue to use 
permissions and rights for user access to specific objects on the system and
authentication of users are always required.This type of security is fine for sys-
tems that are physically disconnected from the Internet.With connections to the
Internet, one of the concerns is for mobile code. Mobile code is code that can be
executed and can come from sources outside your network.This could come
from e-mail attachments, from code embedded in documents, or from code that
you download from Web sites.As many of you have seen, sometimes this code
can be malicious. One important mechanism that is introduced with .NET can
help with this type of problem is code access security (CAS), which prevents mobile
code from accessing sensitive resources by allowing permissions to be granted to
code, or code demanding certain permissions from the caller of the code.This
means that a group of code cannot access the resource unless it has the proper
permissions.Another security feature is role-based security. Roles are generally
established for types of functionality.This does not always map to typical network
user accounts. Roles can be created for specific applications and their require-
ments.This allows threads to execute with the permissions of a designated role.
This was available in the past, but .NET has extended this to both the client and
the server.
The Common Language Runtime (CLR) also has security features.You can
create security policies that determine what code is allowed to do.This allows
administrators to restrict access to resources and the rules are enforced at runtime.
Some security features are included in the Security namespace of the System
object.The Cryptography namespace allows you to encode and decode data as well
as other functions to support data encryption.This allows for the development of
data encryption with an easy to use, object-based methodology. Security will
increasingly become an important part of application development, and this chapter
will help you understand the features that are available and when to use them.
www.syngress.com
Documents you may be interested
Documents you may be interested