Building a User Interface by Using BasicTechniques Choose the most appropriate control class. This objective may include but is not limited to: evaluating design requirements and then selecting the most appropriate control based on those requirements; recognizing when none of the standard controls meet requirements; item controls, menu controls, content controls This objective does not include: designing a custom control Implement screen layout by using nested control hierarchies. This objective may include but is not limited to: using panel-derived controls, attaching properties This objective does not include: items controls, control customization
Enhancing a User Interface by Using Advanced Techniques Manage routed events in WPF. This objective may include but is not limited to: tunneling vs. bubbling events, handling and cancelling events This objective does not include: simple event handling; creating custom events Configure WPF commanding. This objective may include but is not limited to: defining WPF commands based on RoutedCommand; associating commands to controls; handling commands; command bindings; input gestures This objective does not include: creating custom commands by implementing ICommand Implement user-defined controls. This objective may include but is not limited to: deciding whether to use a user/composite, extended, or custom control ; creating a user/composite control; extending from an existing control This objective does not include: creating a custom control by inheriting directly from the Control class and writing code
Managing Data at the User Interface Layer Implement data binding. This objective may include but is not limited to: binding options, static and dynamic resources, element bindings, setting the correct binding mode and update mode; binding to nullable values This objective does not include: binding to a specific data source Implement data validation. This objective may include but is not limited to: handling validation and providing user feedback via the error provider (WinForms) or data templates (WPF), IDataErrorInfo, validation control, form validation and control validation Prepare collections of data for display. This objective may include but is not limited to: filtering, sorting, and grouping data; LINQ; CollectionView (WPF), BindingSource object (WinForms) Implement data-bound controls. This objective may include but is not limited to: using the DataGridView (WinForms) or DataGrid (WPF) control to display and update the data contained in a data source, implementing complex data binding to integrate data from multiple sources; ItemsControl-derived controls (WPF)
Enhancing the Functionality and Usability of a Solution Implement asynchronous processes and threading. This objective may include but is not limited to: implementing asynchronous programming patterns; marshalling between threads; freezing UI elements; using timers; Task Parallel Library; parallel LINQ; using the dispatcher; BackgroundWorker component Implement security features of an application. This objective may include but is not limited to: configuring Software Restriction Policy (SRP); full trust and partially trusted security; interoperability with legacy CAS policy; User Account Control (UAC) Manage user and application settings. This objective may include but is not limited to: creating application settings; creating user settings; loading and saving settings This objective does not include: persisting to database Implement dependency properties. This objective may include but is not limited to: enabling data binding and animation, property metadata, property change callbacks
Stabilizing and Releasing a Solution Implement a WPF test strategy. This objective may include but is not limited to: automation peer, UI automation, IntelliTrace Debug XAML by using the WPF Visualizer. This objective may include but is not limited to: accessing the Visualizer, drilling down into the visual tree, viewing and changing properties This objective does not include: setting a breakpoint and stepping through code Create and configure a Windows Installer project. This objective may include but is not limited to: configuring a setup project to add icons during setup, setting deployment project properties, configuring conditional installation based on operating system versions, setting appropriate Launch Conditions based on the .NET Framework version, adding custom actions to a setup project, adding error-handling code to a setup project Configure deployment security settings. This objective may include but is not limited to: configuring and integrating UAC by using ClickOnce deployments; setting appropriate security permissions to deploy the application
Creating Services Create service and operation contracts. This objective may include but is not limited to: one-way, duplex, and request reply; creating and specifying fault contracts; configuration-based contracts; exposing service metadata; selecting serialization (e.g., data contract serializer vs. XML serializer)
This objective does not include: designing service and operation contracts; transactions, instantiation, security-related attributes Create data contracts. This objective may include but is not limited to: managing Known Types; controlling data serialization; using required and order attributes on data members; implementing versioning using IExtensibleDataObject; POCOs
This objective does not include: using custom serializer (ISerializationSurrogate)
Implement RESTful services. This objective may include but is not limited to: accessing HTTP context; WebGet/WebInvoke, UriTemplates; JSON/POX
Hosting and Configuring Services Create and configure endpoints. This objective may include but is not limited to: default and standard bindings; custom bindings created from standard binding elements; standard endpoints; transports including HTTP, TCP, named pipes, UDP, MSMQ code-based service configuration; message encoding
This objective does not include: creating a custom binding element; creating new standard endpoints, loading configuration from a location other than the default application configuration file, security, transaction, reliable sessions
Configure Behaviors. This objective may include but is not limited to: applying service, endpoint, and operation behaviors in configuration and code
This objective does not include: creating a custom behavior; creating and using dispatch behaviors, loading configuration from a location other than the default application configuration file
Consuming Services Create a service proxy. This objective may include but is not limited to: using a proxy class or channel factory to create a proxy; creating a proxy for an asynchronous communication; creating a proxy for a duplex communication
This objective does not include: SvcUtil command-line switches Consume RESTful services This objective may include but is not limited to: access HTTP context; JSON/POX
Securing Services Configure secure Bindings. This objective may include but is not limited to: transport, message, mixed mode
Configure message security. This objective may include but is not limited to: specifying protection levels on different message parts
Managing the Service Instance Life Cycle Manage sessions. This objective may include but is not limited to: code and configuration; session management attributes; throttling; reliable sessions; transport-level and application-level sessions; invoking a callback contract
Manage concurrency. This objective may include but is not limited to: single, multiple, and reentrant concurrency modes; SynchronizationContext and CallbackBehavior
This objective does not include: deadlocks and other multithreading issues
Monitoring and Troubleshooting Distributed Systems Configure message logging. This objective may include but is not limited to: configuring message listeners; logging level; message filters; configuring logging known PII
This objective does not include: secure message logs Configure diagnostics. This objective may include but is not limited to: WMI; performance counters; event logging
Modeling Data Map entities and relationships by using the Entity Data Model. This objective may include but is not limited to: using the Visual Designer, building an entity data model from an existing database, managing complex entity mappings in EDMX, editing EDM XML, mapping to stored procedures, creating user-defined associations between entities, generating classes with inheritance and mapping them to tables
This objective does not include: using MetadataWorkspace Create and customize entity objects. This objective may include but is not limited to: configuring changes to an Entity Framework entity, using the ADO.NET EntityObject Generator (T4), extending, self-tracking entities, snapshot change tracking, ObjectStateManager, partial classes, partial methods in the Entity Framework
Managing Connections and Context Create and manage a data connection. This objective may include but is not limited to: connecting to a data source, closing connections, maintaining the life cycle of a connection
Configure ADO.NET Data Services. This objective may include but is not limited to: creating access rules for entities, configuring authorization and authentication, configuring HTTP verbs
Querying Data Execute a SQL query. This objective may include but is not limited to: DBCommand, DataReader, DataAdapters, DataSets, managing data retrieval by using stored procedures, using parameters, System.Data.Common namespace classes
Create a LINQ query. This objective may include but is not limited to: syntax-based and method-based queries, joining, filtering, sorting, grouping, aggregation, lambda expressions, paging, projection
This objective does not include: compiling queries Query data by using ADO.NET Data Services. This objective may include but is not limited to: implementing filtering and entitlement in ADO.NET Data Services, addressing resources, creating a query expression, accessing payload formats, Data Services interceptors
Manipulating Data Create, update, or delete data by using SQL statements. This objective may include but is not limited to: Create/Update/Delete (CUD), using DataSets, calling stored procedures, using parameters
Create, update, or delete data by using DataContext. This objective may include but is not limited to: CUD, calling stored procedures, using parameters
This objective does not include: ObjectTrackingEnabled Create, update, or delete data by using ObjectContext. This objective may include but is not limited to: CUD, calling stored procedures, using parameters, setting SaveOptions
Developing and Deploying Reliable Applications Monitor and collect performance data. This objective may include but is not limited to: logging generated SQL (ToTraceString), collecting response times, implementing performance counters, implementing logging, implementing instrumentation
Handle exceptions. This objective may include but is not limited to: resolving data concurrency issues (handling OptimisticConcurrency exception, Refresh method), handling errors, transaction exceptions, connection exceptions, timeout exceptions, handling an exception from the Entity Framework disconnected object, security exceptions
Protect data. This objective may include but is not limited to: encryption, digital signature, hashing, salting, least privilege
Synchronize data. This objective may include but is not limited to: online/offline Entity Framework, synchronization services, saving locally
Designing the Layers of a Solution Design a loosely coupled layered architecture. This objective may include but is not limited to: separation of concerns including presentation, business logic, and data; minimizing logical dependencies; deciding how layers connect (e.g., content-based vs. context-based filtered routing)
Design service interaction. This objective may include but is not limited to: service granularity (cohesiveness); interface granularity (responsibilities of an operation), versioning, data and service contracts (using a message contract rather than a data contract); hosting and protocol; managing data integrity (re-validating data across trust boundaries); evaluating use of RESTful interface (URI/resource structure); choosing a message exchange pattern; choosing synchronous vs. asynchronous operation invocation; deciding whether to use custom SOAP headers
This objective does not include: interacting with existing/external systems Design the security implementation. This objective may include but is not limited to: protecting data during transmission (encryption/hashing algorithm), authentication (client/proxy credential) and authorization (groups, built-in or custom role provider, claims, federated security), designing for least privilege (impersonation and/or delegation), planning for User Access Control (UAC) environments; auditing
Design for globalization and localization. This objective may include but is not limited to: multi-locale services; designing for time zone, sorting, UI considerations; database design considerations
Designing the Presentation Layer Choose the appropriate Windows Client technology. This objective may include but is not limited to: choosing between Windows Forms, WPF, or a combination; choosing an appropriate presentation pattern (Model View Presenter [MVP], Model View/View Model [MV-VM]); identifying areas for possible migration/interoperability from Windows Forms to WPF Design application workflow. This objective may include but is not limited to: user navigation, designing wizards, modal vs. non-modal; dependencies among UI elements; designing for input types based on environment and audience (kiosk, very large display, small display, indoors and outdoors)
Design data presentation and input. This objective may include but is not limited to: designing data validation; designing a data-binding strategy; designing a reporting strategy; choosing media services (audio, video, images, animation); managing data shared between forms
Designing the Data Access Layer Choose the appropriate data access strategy. This objective may include but is not limited to: choosing the appropriate data access technology (Entity Framework, LINQ to SQL, Microsoft ADO.NET); supporting data sources such as XML data, flat files, and relational databases
Design data caching. This objective may include but is not limited to: managing data cache (lifetime, targets, size, scope), managing data state (change notification, cache invalidation/synchronization)
Design for a concurrent multi-user environment. This objective may include but is not limited to: planning for concurrency and collision avoidance, optimistic vs. pessimistic locking, cross-tier distributed transactions
Planning a Solution Deployment Define a client deployment strategy. This objective may include but is not limited to: recommending an installation method (Xcopy, ClickOnce, MSI, third party); identifying prerequisites (target framework and bootstrap requirements), deploying COM components
Plan a database deployment.
This objective may include but is not limited to: existing or shared instance; remote server; embedded database; deploying new objects (such as tables, stored procedures, and views) to a new or existing database; recognizing database security concerns (such as shared instances and access); remote vs. local database
This objective does not include: DLL deployment; shared GAC deployment Design a solution update strategy. This objective may include but is not limited to: preserving shared components, data integrity, and user customizations; designing an update delivery method (e.g., automated update detection from the client), version mismatch (both local binaries and service interfaces)
Plan for n-tier deployment. This objective may include but is not limited to: mapping the solution to the topology (required hardware such as servers, routers, and RAM and required software such as OS); determining component installation order; reviewing security requirements
Designing for Stability and Maintenance Design for error handling.
This objective may include but is not limited to: collecting user feedback when errors occur, handling exceptions across tiers
This objective does not include: try/catch blocks Evaluate and recommend a test strategy.
This objective may include but is not limited to: recommending functional testing, recommending reliability testing (performance testing, stress testing, scalability testing, duration testing)
This objective does not include: unit testing Design a diagnostics and monitoring strategy. This objective may include but is not limited to: profiling, tracing, performance counters, audit trails (events and information); usage reporting; deciding where to log events (local vs.centralized reporting)
|