Introduction |
|
xv | |
Microsoft Certified Professional Program |
|
xv | |
Acknowledgments |
|
xvi | |
Support and Feedback |
|
xvi | |
Preparing for the Exam |
|
xviii | |
|
Chapter 1 Designing the Layers of a Solution |
|
|
1 | (88) |
|
Objective 1.1 Design a Loosely Coupled Layered Architecture |
|
|
2 | (11) |
|
Designing Service-Oriented Architectures |
|
|
2 | (2) |
|
Providing Separation of Concern |
|
|
4 | (1) |
|
Designing a System Topology |
|
|
4 | (2) |
|
Choosing Between Presentation and Business Logic |
|
|
6 | (2) |
|
|
8 | (2) |
|
Understanding BizTalk Server |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
11 | (2) |
|
Objective 1.2 Design Service Interaction |
|
|
13 | (17) |
|
Designing Service and Method Granularity |
|
|
14 | (2) |
|
Choosing Protocols and Binding Types |
|
|
16 | (2) |
|
|
18 | (1) |
|
Using Message and Data Contracts |
|
|
19 | (3) |
|
Using Custom SOAP Headers |
|
|
22 | (2) |
|
|
24 | (1) |
|
Choosing Synchronous vs. Asynchronous |
|
|
24 | (1) |
|
Choosing a Message Exchange Pattern |
|
|
25 | (1) |
|
|
25 | (2) |
|
|
27 | (1) |
|
|
28 | (1) |
|
|
28 | (2) |
|
Objective 1.3 Design the Security Implementation |
|
|
30 | (22) |
|
Planning for User Account Control |
|
|
31 | (1) |
|
Designing for Least Privilege |
|
|
31 | (4) |
|
Understanding Process Identity |
|
|
35 | (1) |
|
Understanding Impersonation and Delegation |
|
|
36 | (5) |
|
Implementing Authorization |
|
|
41 | (3) |
|
|
44 | (1) |
|
|
45 | (4) |
|
|
49 | (1) |
|
|
50 | (2) |
|
Objective 1.4 Design for Interoperability with External Systems |
|
|
52 | (4) |
|
Accessing Assemblies from Unmanaged Code |
|
|
52 | (1) |
|
|
53 | (1) |
|
|
54 | (1) |
|
|
54 | (2) |
|
Objective 1.5 Design for Optimal Processing |
|
|
56 | (13) |
|
Planning for Long-Running Processes |
|
|
56 | (4) |
|
|
60 | (3) |
|
|
63 | (1) |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
65 | (1) |
|
|
66 | (1) |
|
|
66 | (3) |
|
Objective 1.6 Design for Globalization and Localization |
|
|
69 | (20) |
|
Choosing Between CurrentCulture and CurrentUICulture |
|
|
70 | (1) |
|
Format Text for Differing Cultures |
|
|
71 | (1) |
|
|
72 | (1) |
|
|
72 | (1) |
|
|
73 | (1) |
|
Designing Databases for Globalization |
|
|
74 | (1) |
|
|
75 | (1) |
|
|
75 | (3) |
|
|
78 | (2) |
|
|
80 | (1) |
|
|
80 | (1) |
|
Objective 1.1 Thought Experiment |
|
|
81 | (1) |
|
|
81 | (1) |
|
Objective 1.2 Thought Experiment |
|
|
82 | (1) |
|
|
82 | (1) |
|
Objective 1.3 Thought Experiment |
|
|
83 | (1) |
|
|
84 | (1) |
|
Objective 1.4 Thought Experiment |
|
|
84 | (1) |
|
|
85 | (1) |
|
Objective 1.5 Thought Experiment |
|
|
86 | (1) |
|
|
86 | (1) |
|
Objective 1.6 Thought Experiment |
|
|
87 | (2) |
|
Chapter 2 Designing the Presentation Layer |
|
|
89 | (84) |
|
Objective 2.1 Choose the Appropriate Windows Technology |
|
|
90 | (10) |
|
|
90 | (1) |
|
|
90 | (2) |
|
Choosing Between Windows Forms and WPF |
|
|
92 | (1) |
|
Interoperating Between Windows Forms and WPF |
|
|
92 | (5) |
|
Choosing a Presentation Pattern |
|
|
97 | (2) |
|
|
99 | (1) |
|
|
99 | (1) |
|
Objective 2.2 Design the UI Layout and Structure |
|
|
100 | (13) |
|
Evaluate the Conceptual Design |
|
|
100 | (1) |
|
Designing for Inheritance and the Reuse of Visual Elements |
|
|
101 | (7) |
|
Creating a Resource Dictionary |
|
|
108 | (1) |
|
Designing for Accessibility |
|
|
109 | (2) |
|
Deciding When Custom Controls Are Needed |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
112 | (1) |
|
Objective 2.3 Design Application Workflow |
|
|
113 | (16) |
|
Implementing User Navigation |
|
|
114 | (3) |
|
Navigation Applications in WPF |
|
|
117 | (7) |
|
Using PageFunction Objects |
|
|
124 | (1) |
|
Simple Navigation and Structured Navigation |
|
|
125 | (1) |
|
Designing for Different Input Types |
|
|
126 | (1) |
|
|
127 | (1) |
|
|
127 | (2) |
|
Objective 2.4 Design Data Presentation and Input |
|
|
129 | (14) |
|
Designing Data Validation |
|
|
129 | (5) |
|
Design a Data Binding Strategy |
|
|
134 | (5) |
|
Managing Data Shared Between Forms |
|
|
139 | (1) |
|
|
140 | (1) |
|
|
140 | (1) |
|
|
141 | (2) |
|
Objective 2.5 Design Presentation Behavior |
|
|
143 | (12) |
|
Determine Which Behaviors Will be Implemented and How |
|
|
143 | (4) |
|
Creating Attached Behaviors |
|
|
147 | (1) |
|
Implementing Drag-and-Drop Functionality |
|
|
148 | (6) |
|
|
154 | (1) |
|
|
154 | (1) |
|
Objective 2.6 Design for UI Responsiveness |
|
|
155 | (18) |
|
Offloading Operations from the UI Thread and Reporting Progress |
|
|
156 | (5) |
|
Using Dispatcher to Access Controls Safely on Another Thread in WPF |
|
|
161 | (1) |
|
Avoiding Unnecessary Screen Refreshes |
|
|
162 | (1) |
|
Determining Whether to Sort and Filter Data on the Client or Server |
|
|
163 | (1) |
|
Addressing UI Memory Issues |
|
|
164 | (1) |
|
|
165 | (1) |
|
|
165 | (2) |
|
|
167 | (1) |
|
|
168 | (1) |
|
|
168 | (1) |
|
Objective 2.1 Thought Experiment |
|
|
168 | (1) |
|
|
168 | (1) |
|
Objective 2.2 Thought Experiment |
|
|
169 | (1) |
|
|
169 | (1) |
|
Objective 2.3 Thought Experiment |
|
|
170 | (1) |
|
|
170 | (1) |
|
Objective 2.4 Thought Experiment |
|
|
171 | (1) |
|
|
171 | (1) |
|
Objective 2.5 Thought Experiment |
|
|
171 | (1) |
|
|
172 | (1) |
|
Objective 2.6 Thought Experiment |
|
|
172 | (1) |
|
Chapter 3 Designing the Data Access Layer |
|
|
173 | (52) |
|
Objective 3.1 Choose the Appropriate Data Access Strategy |
|
|
174 | (7) |
|
Understanding .NET Data Access Technologies |
|
|
174 | (3) |
|
Supporting Different Data Sources |
|
|
177 | (1) |
|
Choosing a Data Access Strategy |
|
|
178 | (1) |
|
|
179 | (1) |
|
|
179 | (2) |
|
Objective 3.2 Design the Data Object Model |
|
|
181 | (8) |
|
Mapping to Persistent Storage |
|
|
182 | (2) |
|
Designing a Schema Change Management Strategy |
|
|
184 | (1) |
|
Abstracting from the Service Layer |
|
|
185 | (2) |
|
|
187 | (1) |
|
|
187 | (2) |
|
Objective 3.3 Design Data Caching |
|
|
189 | (5) |
|
|
189 | (1) |
|
|
190 | (1) |
|
|
190 | (1) |
|
|
191 | (1) |
|
|
192 | (2) |
|
Objective 3.4 Design Offline Storage and Data Synchronization |
|
|
194 | (9) |
|
Determining the Need for Offline Data Storage |
|
|
194 | (1) |
|
|
195 | (3) |
|
Designing Synchronization |
|
|
198 | (3) |
|
|
201 | (1) |
|
|
201 | (2) |
|
Objective 3.5 Design for a Concurrent Multiuser Environment |
|
|
203 | (7) |
|
Planning for Multiuser Conflicts |
|
|
203 | (2) |
|
Understanding Deadlock Conflicts |
|
|
205 | (1) |
|
Designing Concurrency for Web Services |
|
|
206 | (1) |
|
Using Cross-Tier Distributed Transactions |
|
|
207 | (1) |
|
|
208 | (1) |
|
|
208 | (2) |
|
Objective 3.6 Analyze Data Services for Optimization |
|
|
210 | (15) |
|
Understanding ORM Performance |
|
|
211 | (1) |
|
Understanding Lazy and Eager Loading |
|
|
211 | (2) |
|
|
213 | (1) |
|
|
214 | (1) |
|
|
214 | (2) |
|
|
216 | (1) |
|
|
217 | (1) |
|
|
217 | (1) |
|
Objective 3.1 Thought Experiment |
|
|
218 | (1) |
|
|
218 | (1) |
|
Objective 3.2 Thought Experiment |
|
|
219 | (1) |
|
|
219 | (1) |
|
Objective 3.3 Thought Experiment |
|
|
220 | (1) |
|
|
220 | (1) |
|
Objective 3.4 Thought Experiment |
|
|
221 | (1) |
|
|
221 | (1) |
|
Objective 3.5 Thought Experiment |
|
|
222 | (1) |
|
|
222 | (1) |
|
Objective 3.6 Thought Experiment |
|
|
223 | (2) |
|
Chapter 4 Planning a Solution Deployment |
|
|
225 | (40) |
|
Objective 4.1 Define a Client Deployment Strategy |
|
|
226 | (11) |
|
Understanding Installation Methods |
|
|
226 | (5) |
|
Choosing an Installation Method |
|
|
231 | (1) |
|
Deploying the .NET Framework |
|
|
232 | (2) |
|
|
234 | (1) |
|
|
235 | (1) |
|
|
235 | (2) |
|
Objective 4.2 Plan a Database Deployment |
|
|
237 | (9) |
|
Understanding Database Deployment Files |
|
|
237 | (1) |
|
|
237 | (1) |
|
Using the Vsdbcmd.exe Tool |
|
|
238 | (1) |
|
|
239 | (1) |
|
Using SQL Server Database Projects |
|
|
239 | (1) |
|
Publishing Databases from Server Explorer |
|
|
240 | (1) |
|
Publishing Databases with a WCF Web Service |
|
|
241 | (1) |
|
Understanding Deployment Conflicts |
|
|
242 | (1) |
|
Deploying an Embedded Database Privately |
|
|
242 | (2) |
|
|
244 | (1) |
|
|
244 | (2) |
|
Objective 4.3 Design a Solution Update Strategy |
|
|
246 | (7) |
|
Updating ClickOnce Applications |
|
|
247 | (1) |
|
Updating with Windows Installer |
|
|
248 | (1) |
|
Packaging Shared Components |
|
|
248 | (1) |
|
Checking for Windows Installer Updates |
|
|
249 | (1) |
|
Updating Shared Components |
|
|
249 | (1) |
|
Designing Web Services for Updates |
|
|
249 | (2) |
|
|
251 | (1) |
|
|
251 | (2) |
|
Objective 4.4 Plan for N-Tier Deployment |
|
|
253 | (12) |
|
Designing a Physical Topology |
|
|
254 | (2) |
|
Determining Component Installation Order |
|
|
256 | (1) |
|
|
256 | (1) |
|
|
257 | (2) |
|
|
259 | (1) |
|
|
260 | (1) |
|
|
260 | (1) |
|
Objective 4.1 Thought Experiment |
|
|
260 | (1) |
|
|
261 | (1) |
|
Objective 4.2 Thought Experiment |
|
|
262 | (1) |
|
|
262 | (1) |
|
Objective 4.3 Thought Experiment |
|
|
263 | (1) |
|
|
263 | (1) |
|
Objective 4.4 Thought Experiment |
|
|
264 | (1) |
|
Chapter 5 Designing for Stability and Maintenance |
|
|
265 | (38) |
|
Objective 5.1 Design for Error Handling |
|
|
265 | (10) |
|
Designing an Exception Handling Strategy |
|
|
266 | (1) |
|
Handling Exceptions Across Tiers |
|
|
267 | (3) |
|
|
270 | (2) |
|
Creating Custom Exception Classes |
|
|
272 | (1) |
|
Processing Unhandled Exceptions |
|
|
272 | (1) |
|
|
273 | (1) |
|
|
274 | (1) |
|
Objective 5.2 Evaluate and Recommend a Test Strategy |
|
|
275 | (10) |
|
Understanding Black Box and White Box Testing |
|
|
276 | (1) |
|
Understanding Functional Tests |
|
|
277 | (2) |
|
|
279 | (2) |
|
Understanding Performance Tests |
|
|
281 | (1) |
|
Understanding Code Coverage |
|
|
282 | (1) |
|
|
283 | (1) |
|
|
283 | (2) |
|
Objective 5.3 Design a Diagnostics and Monitoring Strategy |
|
|
285 | (18) |
|
Providing Monitoring Information |
|
|
285 | (6) |
|
Providing Usage Reporting |
|
|
291 | (1) |
|
Choosing Distributed or Centralized Logging |
|
|
292 | (1) |
|
Designing a Diagnostics and Monitoring Strategy |
|
|
293 | (1) |
|
Profiling .NET Applications |
|
|
294 | (1) |
|
|
295 | (1) |
|
|
295 | (3) |
|
|
298 | (1) |
|
|
299 | (1) |
|
|
299 | (1) |
|
Objective 5.1 Thought Experiment |
|
|
299 | (1) |
|
|
300 | (1) |
|
Objective 5.2 Thought Experiment |
|
|
300 | (1) |
|
|
301 | (1) |
|
Objective 5.3 Thought Experiment |
|
|
302 | (1) |
Index |
|
303 | |