pdf viewer in c# code project : How to paste a picture into pdf Library application class asp.net html web page ajax software-architecture-practice112-part1341

The tactics for modifiability are summarized in Figure 5.5
Figure 5.5. Summary of modifiability tactics
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
120 / 463
How to paste a picture into pdf - copy, paste, cut PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed tutorial for copying, pasting, and cutting image in PDF page using C# class code
cut and paste pdf images; how to copy image from pdf to word document
How to paste a picture into pdf - VB.NET PDF copy, paste image library: copy, paste, cut PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Tutorial for How to Cut or Copy an Image from One Page and Paste to Another
paste picture into pdf; how to cut picture from pdf file
[ Team LiB ]
5.4 Performance Tactics
Recall from Chapter 4
that the goal of performance tactics is to generate a response to an event arriving
at the system within some time constraint. The event can be single or a stream and is the trigger for a
request to perform computation. It can be the arrival of a message, the expiration of a time interval, the
detection of a significant change of state in the system's environment, and so forth. The system
processes the events and generates a response. Performance tactics control the time within which a
response is generated. This is shown in Figure 5.6
. Latency is the time between the arrival of an event
and the generation of a response to it.
Figure 5.6. Goal of performance tactics
After an event arrives, either the system is processing on that event or the processing is blocked for some
reason. This leads to the two basic contributors to the response time: resource consumption and blocked
Resource consumption.
Resources include CPU, data stores, network communication bandwidth,
and memory, but it can also include entities defined by the particular system under design. For
example, buffers must be managed and access to critical sections must be made sequential. Events
can be of varying types (as just enumerated), and each type goes through a processing sequence.
For example, a message is generated by one component, is placed on the network, and arrives at
another component. It is then placed in a buffer; transformed in some fashion (
is the
term the Object Management Group uses for this transformation); processed according to some
algorithm; transformed for output; placed in an output buffer; and sent onward to another component,
another system, or the user. Each of these phases contributes to the overall latency of the
processing of that event.
Blocked time.
A computation can be blocked from using a resource because of contention for it,
because the resource is unavailable, or because the computation depends on the result of other
computations that are not yet available.
Contention for resources.
Figure 5.6
shows events arriving at the system. These events may
be in a single stream or in multiple streams. Multiple streams vying for the same resource or
different events in the same stream vying for the same resource contribute to latency. In
general, the more contention for a resource, the more likelihood of latency being introduced.
However, this depends on how the contention is arbitrated and how individual requests are
treated by the arbitration mechanism.
Availability of resources.
Even in the absence of contention, computation cannot proceed if a
resource is unavailable. Unavailability may be caused by the resource being offline or by failure
of the component or for some other reason. In any case, the architect must identify places
where resource unavailability might cause a significant contribution to overall latency.
Dependency on other computation.
A computation may have to wait because it must
synchronize with the results of another computation or because it is waiting for the results of a
computation that it initiated. For example, it may be reading information from two different
sources, if these two sources are read sequentially, the latency will be higher than if they are
read in parallel.
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
121 / 463
C# PDF insert image Library: insert images into PDF in C#.net, ASP
vector images to PDF file. Import graphic picture, digital photo, signature and logo into PDF document. Ability to put image into
paste image in pdf file; copy picture to pdf
VB.NET PDF insert image library: insert images into PDF in vb.net
project. Import graphic picture, digital photo, signature and logo into PDF document. Add images to any selected PDF page in VB.NET.
paste image into preview pdf; how to cut an image out of a pdf file
With this background, we turn to our three tactic categories: resource demand, resource management,
and resource arbitration.
Event streams are the source of resource demand. Two characteristics of demand are the time between
events in a resource stream (how often a request is made in a stream) and how much of a resource is
consumed by each request.
One tactic for reducing latency is to reduce the resources required for processing an event stream. Ways
to do this include the following.
Increase computational efficiency.
One step in the processing of an event or a message is applying
some algorithm. Improving the algorithms used in critical areas will decrease latency. Sometimes one
resource can be traded for another. For example, intermediate data may be kept in a repository or it
may be regenerated depending on time and space resource availability. This tactic is usually applied
to the processor but is also effective when applied to other resources such as a disk.
Reduce computational overhead.
If there is no request for a resource, processing needs are
reduced. In Chapter 17
, we will see an example of using Java classes rather than Remote Method
Invocation (RMI) because the former reduces communication requirements. The use of
intermediaries (so important for modifiability) increases the resources consumed in processing an
event stream, and so removing them improves latency. This is a classic modifiability/performance
Another tactic for reducing latency is to reduce the number of events processed. This can be done in one
of two fashions.
Manage event rate.
If it is possible to reduce the sampling frequency at which environmental
variables are monitored, demand can be reduced. Sometimes this is possible if the system was
overengineered. Other times an unnecessarily high sampling rate is used to establish harmonic
periods between multiple streams. That is, some stream or streams of events are oversampled so
that they can be synchronized.
Control frequency of sampling.
If there is no control over the arrival of externally generated events,
queued requests can be sampled at a lower frequency, possibly resulting in the loss of requests.
Other tactics for reducing or managing demand involve controlling the use of resources.
Bound execution times.
Place a limit on how much execution time is used to respond to an event.
Sometimes this makes sense and sometimes it does not. For iterative, data-dependent algorithms,
limiting the number of iterations is a method for bounding execution times.
Bound queue sizes.
This controls the maximum number of queued arrivals and consequently the
resources used to process the arrivals.
Even though the demand for resources may not be controllable, the management of these resources
affects response times. Some resource management tactics are:
Introduce concurrency.
If requests can be processed in parallel, the blocked time can be reduced.
Concurrency can be introduced by processing different streams of events on different threads or by
creating additional threads to process different sets of activities. Once concurrency has been
introduced, appropriately allocating the threads to resources (load balancing) is important in order to
maximally exploit the concurrency.
Maintain multiple copies of either data or computations.
Clients in a client-server pattern are
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
122 / 463
C# PDF remove image library: remove, delete images from PDF in C#.
Support removing vector image, graphic picture, digital photo, scanned signature, logo, etc. Able to cut and paste image into another PDF file.
paste image on pdf preview; paste picture to pdf
VB.NET PDF remove image library: remove, delete images from PDF in
PDF Image Extract; VB.NET Write: Insert text into PDF; C#.NET PDF pages extract, copy, paste, C#.NET Support removing vector image, graphic picture, digital photo
copy image from pdf preview; cut image from pdf online
replicas of the computation. The purpose of replicas is to reduce the contention that would occur if
all computations took place on a central server. Caching is a tactic in which data is replicated, either
on different speed repositories or on separate repositories, to reduce contention. Since the data
being cached is usually a copy of existing data, keeping the copies consistent and synchronized
becomes a responsibility that the system must assume.
Increase available resources.
Faster processors, additional processors, additional memory, and
faster networks all have the potential for reducing latency. Cost is usually a consideration in the
choice of resources, but increasing the resources is definitely a tactic to reduce latency. This kind of
cost/performance tradeoff is analyzed in Chapter 12
Whenever there is contention for a resource, the resource must be scheduled. Processors are scheduled,
buffers are scheduled, and networks are scheduled. The architect's goal is to understand the
characteristics of each resource's use and choose the scheduling strategy that is compatible with it.
A scheduling policy conceptually has two parts: a priority assignment and dispatching. All scheduling
policies assign priorities. In some cases the assignment is as simple as first-in/first-out. In other cases, it
can be tied to the deadline of the request or its semantic importance. Competing criteria for scheduling
include optimal resource usage, request importance, minimizing the number of resources used, minimizing
latency, maximizing throughput, preventing starvation to ensure fairness, and so forth. The architect
needs to be aware of these possibly conflicting criteria and the effect that the chosen tactic has on
meeting them.
A high-priority event stream can be dispatched only if the resource to which it is being assigned is
available. Sometimes this depends on pre-empting the current user of the resource. Possible preemption
options are as follows: can occur anytime; can occur only at specific pre-emption points; and executing
processes cannot be pre-empted. Some common scheduling policies are:
FIFO queues treat all requests for resources as equals and satisfy them in turn.
One possibility with a FIFO queue is that one request will be stuck behind another one that takes a
long time to generate a response. As long as all of the requests are truly equal, this is not a problem,
but if some requests are of higher priority than others, it is problematic.
Fixed-priority scheduling.
Fixed-priority scheduling assigns each source of resource requests a
particular priority and assigns the resources in that priority order. This strategy insures better service
for higher-priority requests but admits the possibility of a low-priority, but important, request taking an
arbitrarily long time to be serviced because it is stuck behind a series of higher-priority requests.
Three common prioritization strategies are
semantic importance.
Each stream is assigned a priority statically according to some domain
characteristic of the task that generates it. This type of scheduling is used in mainframe
systems where the domain characteristic is the time of task initiation.
deadline monotonic.
Deadline monotonic is a static priority assignment that assigns higher
priority to streams with shorter deadlines. This scheduling policy is used when streams of
different priorities with real-time deadlines are to be scheduled.
rate monotonic.
Rate monotonic is a static priority assignment for periodic streams that
assigns higher priority to streams with shorter periods. This scheduling policy is a special case
of deadline monotonic but is better known and more likely to be supported by the operating
Dynamic priority scheduling:
round robin.
Round robin is a scheduling strategy that orders the requests and then, at every
assignment possibility, assigns the resource to the next request in that order. A special form of
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
123 / 463
C# HTML5 Viewer: Deployment on ASP.NET MVC
the size of SDK package, all dlls are put into RasterEdge.DocImagSDK a Home folder under Views according to config in picture above. RasterEdge.XDoc.PDF.dll.
copy a picture from pdf to word; how to cut and paste image from pdf
C# HTML5 Viewer: Deployment on IIS
reduce the size of SDK package, dlls are not put into Xdoc.HTML5 dll files listed below under RasterEdge.DocImagSDK/Bin directory and paste to Xdoc see picture).
copy a picture from pdf; how to copy pdf image to word document
round robin is a cyclic executive where assignment possibilities are at fixed time intervals.
earliest deadline first.
Earliest deadline first assigns priorities based on the pending requests
with the earliest deadline.
Static scheduling.
A cyclic executive schedule is a scheduling strategy where the pre-emption points
and the sequence of assignment to the resource are determined offline.
For Further Reading at the end of this chapter lists books on scheduling theory.
The tactics for performance are summarized in Figure 5.7
Figure 5.7. Summary of performance tactics
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
124 / 463
C# Raster - Modify Image Palette in C#.NET
Read: PDF Image Extract; VB.NET Write: Insert text into PDF; edit, C#.NET PDF pages extract, copy, paste, C#.NET to reduce the size of the picture, especially in
how to paste picture on pdf; copying image from pdf to powerpoint
C# Word - Document Processing in C#.NET
Open(docFilePath); //Get the main ducument IDocument doc = document.GetDocument(); //Document clone IDocument doc0 = doc.Clone(); //Get all picture in document
how to copy pictures from a pdf; copy paste picture pdf
[ Team LiB ]
5.5 Security Tactics
Tactics for achieving security can be divided into those concerned with resisting attacks, those concerned
with detecting attacks, and those concerned with recovering from attacks. All three categories are
important. Using a familiar analogy, putting a lock on your door is a form of resisting an attack, having a
motion sensor inside of your house is a form of detecting an attack, and having insurance is a form of
recovering from an attack. Figure 5.8
shows the goals of the security tactics.
Figure 5.8. Goal of security tactics
In Chapter 4
, we identified nonrepudiation, confidentiality, integrity, and assurance as goals in our security
characterization. The following tactics can be used in combination to achieve these goals.
Authenticate users.
Authentication is ensuring that a user or remote computer is actually who it
purports to be. Passwords, one-time passwords, digital certificates, and biometric identifications
provide authentication.
Authorize users.
Authorization is ensuring that an authenticated user has the rights to access and
modify either data or services. This is usually managed by providing some access control patterns
within a system. Access control can be by user or by user class. Classes of users can be defined by
user groups, by user roles, or by lists of individuals.
Maintain data confidentiality.
Data should be protected from unauthorized access. Confidentiality is
usually achieved by applying some form of encryption to data and to communication links.
Encryption provides extra protection to persistently maintained data beyond that available from
authorization. Communication links, on the other hand, typically do not have authorization controls.
Encryption is the only protection for passing data over publicly accessible communication links. The
link can be implemented by a virtual private network (VPN) or by a Secure Sockets Layer (SSL) for a
Web-based link. Encryption can be symmetric (both parties use the same key) or asymmetric (public
and private keys).
Maintain integrity.
Data should be delivered as intended. It can have redundant information encoded
in it, such as checksums or hash results, which can be encrypted either along with or independently
from the original data.
Limit exposure.
Attacks typically depend on exploiting a single weakness to attack all data and
services on a host. The architect can design the allocation of services to hosts so that limited
services are available on each host.
Limit access.
Firewalls restrict access based on message source or destination port. Messages from
unknown sources may be a form of an attack. It is not always possible to limit access to known
sources. A public Web site, for example, can expect to get requests from unknown sources. One
configuration used in this case is the so-called demilitarized zone (DMZ). A DMZ is used when
access must be provided to Internet services but not to a private network. It sits between the Internet
and a firewall in front of the internal network. The DMZ contains devices expected to receive
messages from arbitrary sources such as Web services, e-mail, and domain name services.
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
125 / 463
The detection of an attack is usually through an 
intrusion detection
system. Such systems work by
comparing network traffic patterns to a database. In the case of misuse detection, the traffic pattern is
compared to historic patterns of known attacks. In the case of anomaly detection, the traffic pattern is
compared to a historical baseline of itself. Frequently, the packets must be filtered in order to make
comparisons. Filtering can be on the basis of protocol, TCP flags, payload sizes, source or destination
address, or port number.
Intrusion detectors must have some sort of sensor to detect attacks, managers to do sensor fusion,
databases for storing events for later analysis, tools for offline reporting and analysis, and a control
console so that the analyst can modify intrusion detection actions.
Tactics involved in recovering from an attack can be divided into those concerned with restoring state and
those concerned with attacker identification (for either preventive or punitive purposes).
The tactics used in restoring the system or data to a correct state overlap with those used for availability
since they are both concerned with recovering a consistent state from an inconsistent state. One
difference is that special attention is paid to maintaining redundant copies of system administrative data
such as passwords, access control lists, domain name services, and user profile data.
The tactic for identifying an attacker is to 
maintain an audit trail
. An audit trail is a copy of each
transaction applied to the data in the system together with identifying information. Audit information can be
used to trace the actions of an attacker, support nonrepudiation (it provides evidence that a particular
request was made), and support system recovery. Audit trails are often attack targets themselves and
therefore should be maintained in a trusted fashion.
Figure 5.9
provides a summary of the tactics for security.
Figure 5.9. Summary of tactics for security
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
126 / 463
[ Team LiB ]
5.6 Testability Tactics
The goal of tactics for testability is to allow for easier testing when an increment of software development
is completed. Figure 5.10
displays the use of tactics for testability. Architectural techniques for enhancing
the software testability have not received as much attention as more mature fields such as modifiability,
performance, and availability, but, as we stated in Chapter 4
, since testing consumes such a high
percentage of system development cost, anything the architect can do to reduce this cost will yield a
significant benefit.
Figure 5.10. Goal of testability tactics
Although in Chapter 4
we included design reviews as a testing technique, in this chapter we are
concerned only with testing a running system. The goal of a testing regimen is to discover faults. This
requires that input be provided to the software being tested and that the output be captured.
Executing the test procedures requires some software to provide input to the software being tested and to
capture the output. This is called a test harness. A question we do not consider here is the design and
generation of the test harness. In some systems, this takes substantial time and expense.
We discuss two categories of tactics for testing: providing input and capturing output, and internal
There are three tactics for managing input and output for testing.
Record/playback refers to both capturing information crossing an interface and
using it as input into the test harness. The information crossing an interface during normal operation
is saved in some repository and represents output from one component and input to another.
Recording this information allows test input for one of the components to be generated and test
output for later comparison to be saved.
Separate interface from implementation.
Separating the interface from the implementation allows
substitution of implementations for various testing purposes. Stubbing implementations allows the
remainder of the system to be tested in the absence of the component being stubbed. Substituting a
specialized component allows the component being replaced to act as a test harness for the
remainder of the system.
Specialize access routes/interfaces.
Having specialized testing interfaces allows the capturing or
specification of variable values for a component through a test harness as well as independently
from its normal execution. For example, metadata might be made available through a specialized
interface that a test harness would use to drive its activities. Specialized access routes and
interfaces should be kept separate from the access routes and interfaces for required functionality.
Having a hierarchy of test interfaces in the architecture means that test cases can be applied at any
level in the architecture and that the testing functionality is in place to observe the response.
A component can implement tactics based on internal state to support the testing process.
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
127 / 463
Built-in monitors.
The component can maintain state, performance load, capacity, security, or other
information accessible through an interface. This interface can be a permanent interface of the
component or it can be introduced temporarily via an instrumentation technique such as aspect-
oriented programming or preprocessor macros. A common technique is to record events when
monitoring states have been activated. Monitoring states can actually increase the testing effort
since tests may have to be repeated with the monitoring turned off. Increased visibility into the
activities of the component usually more than outweigh the cost of the additional testing.
Figure 5.11
provides a summary of the tactics used for testability.
Figure 5.11. Summary of testability tactics
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
128 / 463
[ Team LiB ]
5.7 Usability Tactics
Recall from Chapter 4
that usability is concerned with how easy it is for the user to accomplish a desired
task and the kind of support the system provides to the user. Two types of tactics support usability, each
intended for two categories of "users." The first category, runtime, includes those that support the user
during system execution. The second category is based on the iterative nature of user interface design
and supports the interface developer at design time. It is strongly related to the modifiability tactics
already presented.
Figure 5.12
shows the goal of the runtime tactics.
Figure 5.12. Goal of runtime usability tactics
Once a system is executing, usability is enhanced by giving the user feedback as to what the system is
doing and by providing the user with the ability to issue usability-based commands such as those we saw
in Chapter 4
. For example, 
cancel, undo, aggregate
, and 
show multiple views
support the user in either
error correction or more efficient operations.
Researchers in human–computer interaction have used the terms "user intiative," "system initiative," and
"mixed initiative" to describe which of the human–computer pair takes the initiative in performing certain
actions and how the interaction proceeds. The usability scenarios we enumerated in Chapter 4
Understanding Quality Attributes, combine initiatives from both perspectives. For example, when
canceling a command the user issues a cancel—"user initiative"—and the system responds. During the
cancel, however, the system may put up a progress indicator—"system initiative." Thus, cancel
demonstrates "mixed initiative." We use this distinction between user and system initiative to discuss the
tactics that the architect uses to achieve the various scenarios.
When the user takes the initiative, the architect designs a response as if for any other piece of
functionality. The architect must enumerate the responsibilities of the system to respond to the user
command. To use the cancel example again: When the user issues a cancel command, the system must
be listening for it (thus, there is the responsibility to have a constant listener that is not blocked by the
actions of whatever is being canceled); the command to cancel must be killed; any resources being used
by the canceled command must be freed; and components that are collaborating with the canceled
command must be informed so that they can also take appropriate action.
When the system takes the initiative, it must rely on some information—a model—about the user, the task
being undertaken by the user, or the system state itself. Each model requires various types of input to
accomplish its initiative. The system initiative tactics are those that identify the models the system uses to
predict either its own behavior or the user's intention. Encapsulating this information will enable an
architect to more easily tailor and modify those models. Tailoring and modification can be either
dynamically based on past user behavior or offline during development.
Maintain a model of the task.
In this case, the model maintained is that of the task. The task model
is used to determine context so the system can have some idea of what the user is attempting and
provide various kinds of assistance. For example, knowing that sentences usually start with capital
letters would allow an application to correct a lower-case letter in that position.
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
129 / 463
Documents you may be interested
Documents you may be interested