Preparing For and Investigating Application Issues (15%)
Choose a testing methodology
This objetive may include but is not limited to: black box, integration, regression, coverage, API testing, performance testing, security testing
Black Box
Black box testing. This approach tests all possible combinations of end-user actions. Black box testing assumes no knowledge of code and is intended to simulate the end-user experience. You can use sample applications to integrate and test the application block for black box testing. You can begin planning for black box testing immediately after the requirements and the functional specifications are available.
http://en.wikipedia.org/wiki/Black-box_testing
Integration
http://en.wikipedia.org/wiki/Integration_testing
http://msdn.microsoft.com/en-us/library/aa292128(VS.71).aspx
Regression
http://en.wikipedia.org/wiki/Regression_testing
http://msdn.microsoft.com/en-us/library/aa292167(VS.71).aspx
Coverage
http://en.wikipedia.org/wiki/Code_coverage
http://msdn.microsoft.com/en-us/library/ms182496(VS.100).aspx
API testing
http://msdn.microsoft.com/en-us/library/cc300143.aspx
Performance testing
http://en.wikipedia.org/wiki/Software_performance_testing
http://msdn.microsoft.com/en-us/library/bb924375.aspx
Security testing
http://msdn.microsoft.com/en-us/magazine/cc507646.aspx
This objective does not include: load testing, Web testing, unit testing
Design an exception handling strategy
This objetive may include but is not limited to: HandleError attibute in MVC, common error pages, post-error processing, global vs page level.
HandleError attibute in MVC
The HandleError attribute (which appears on the default controllers in an MVC project) tells the framework that if an unhandled exception occurs in your controller that rather than showing the default Yellow Screen of Death it should instead serve up a view called Error. The controller-specific View folder will be checked first (eg. Views/Home/Error.aspx) and if it's not found, the Shared folder (Views/Home/Error.aspx) will be used.
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
Common error pages
http://aspalliance.com/1008_Working_with_Custom_Error_Pages_Using_ASPNET.5
Post-error processing
Global vs. page level
http://www.15seconds.com/issue/030102.htm
Recommend and approach to debugging
This objetive may include but is not limited to: tools and approaches for a given scenario (for example, memory dumps, DebuggingAttributes, crashes vs hangs, deadlocks, assembly binding), when to attack a process (visual Studio Development Server vs. IIS vs. Internet Explorer), root cause analisys.
The objetive doesn’t include: basic breakpoints
Memory dumps
DebuggingAttributes
Crashes vs. hangs
Deadlocks
Asembly bindings
Root cause analisys
Recommend an approach to performace issues.
This objetive may include but is not limited to: wich instrumentation to watch or create, (including performance counters and event tracking) to analyze performance issues, page and fragment caching.
Designing Security Achitecture and Implementation (17%)
Plan for operational security
This objetive may include but is not limited to: approaches for process; and resource-level security, including local and remote resources; Code-Access Security (CAS), including trust level, process identity, application pool, and identity tag.
Approaches for process
http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
Resource-level security
Code-Access Security (CAS)
http://en.wikipedia.org/wiki/Code_Access_Security
http://msdn.microsoft.com/en-us/library/930b76w0.aspx
Important!! Security changes in .Net 4
http://msdn.microsoft.com/en-us/library/dd233103(VS.100).aspx
Design and authentication and authorization model
This objetive may include but is not limited to: authentication providers, including WindowsForms, and custom user identity flowthrough (for example, trusted subsystem), role management, membership providers, URL authorization (for example, AuthorizationAttribute), file authorization, Authorization Manager (AzMan)
Authentication providers
http://msdn.microsoft.com/en-us/library/9wff0kyh(VS.100).aspx
Role management
http://msdn.microsoft.com/en-us/library/5k850zwb(VS.100).aspx
Membership provider
http://msdn.microsoft.com/en-us/library/tw292whz(VS.100).aspx
URL Athorization
http://msdn.microsoft.com/en-us/library/wce3kxhd(VS.100).aspx
AzMan
http://msdn.microsoft.com/en-us/library/ms998336.aspx
Plan for minimizing attack surfaces
This objetive may include but is not limited to: input validation, throttling inputs, request filtering, where to use Secure Sockets Layer (SSL)
Input validation (buscar material mas moderno)
http://msdn.microsoft.com/en-us/library/ms972961.aspx
Throttling inputs
Request filtering
http://msdn.microsoft.com/en-us/library/system.web.httprequest.filter(VS.100).aspx
SSL
http://en.wikipedia.org/wiki/HTTP_Secure
Designing Data Strategies and Structures (18%)
Index
Parte 0 | Parte 1 | Parte 2 | Parte 3a | Parte 3b
Design data access
This objetive may include but is not limited to: choosing data access technologies such as ADO.Net Data Services, Entity Framework, Windows Communications Foundation (WCF), and ASP.NET Web Services.ADO.NET Data ServicesEntity FrameworkWindows Communication Fourndation (WCF)ASP.Net Web Services
Design data presentation and interaction
This objetive may include but is not limited to: pulling data from data layer and binding into views, pages and controls, and poulling data back to data layer by using ModelBinders, data source controls, and HtmlHelper extensions, or programmatically.
Bindings
http://msdn.microsoft.com/en-us/magazine/ee819084.aspx
ModelBinders
http://msdn.microsoft.com/en-us/library/dd410405(VS.100).aspx
http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=798
Data source controls
http://aspnet.4guysfromrolla.com/articles/011106-1.aspx
HtmlHelper extensions
http://blogs.microsoft.co.il/blogs/gilf/archive/2009/01/13/extending-asp-net-mvc-htmlhelper-class.aspx
Plan for data validation
This objetive may include but is not limited to: contextual validation vs. data integrity, where to validate data, synchronisation between UI and data layer, data annotations.
Synchro between UI and data layer
|
Ya van cinco post, creo que tengo posibilidades de llegar a preparar el examen. Lo que me he dado cuenta que los post se van convirtiendo mas en una especie de wiki que vuelvo y los updateo constantemente que en un blog en si. por lo que si existe una propuesta de armar esto de alguna otra forma es bienvenido.
Index
Parte 0 | Parte 1 | Parte 2 | Parte 3a | Parte 3b
Designing the User Experience (17%)
Index
Parte 0 | Parte 1 | Parte 2 | Parte 3a
Plan for cross-browser and/or form factors
This objective may include but is not limited to: evaluating the impact on client side behaviors, themes, bandwidth, style sheets (including application design - task based or scaled rendering of existing page), when to apply Browsers file, structural approaches, user agents, different platforms (mobile vs. desktop)
Evaluating the impact on
- client side behaviors
- themes
- bandwidht
- style sheets
Plan for globalization
This objective may include but is not limited to: designing to support local, regional, language, or cultural preferences, including UI vs. data localization (for example, implementing at database level or resource level), when to use CurrentCulture vs. CurrentUICulture, globalization rollout plan (for example, setting base default language, planning localization), handling Unicode data (for example, what fields to include, request encoding), right-to-left support, vertical text and non-Latin topographies, calendars, data formatting, sorting
UI Localization
Data Localization
Resources
CurrentCulture vs. CurrentUICulture
Planning localization
Unicode
righ-to-left support
Vertical text Non-Latin typos
Calendars / Data formatting
Sorting
Designing the User Experience (17%)
Index
Parte 0 | Parte 1 | Parte 2
Design the site structure.
This objective may include but is not limited to: designing application segmentation for manageability and security (for example, using areas, shared views, master pages, and nested master pages), appropriate use of style sheets, client-side scripting, themes, client ID generation, rendering element modes, routing engine
Una digresión, leamos un poco sobre UX http://en.wikipedia.org/wiki/User_experience
Materiales
Una pagina interesante para ver los cambios de Asp.Net 4 y que nos va a ayudar a entender un poco mas estos puntos http://www.asp.net/LEARN/whitepapers/aspnet4/default.aspx
Ahora yendo punto por punto vamos buscando mas material que nos pueda servir para prepararnos mejor.
Areas
Areas let you group controllers and views into sections of a large application in relative isolation from other sections. Each area can be implemented as a separate ASP.NET MVC project that can then be referenced by the main application. This helps manage complexity when you build a large application and makes it easier for multiple teams to work together on a single application.
Shared Views
Master Pages
http://msdn.microsoft.com/en-us/library/wtxbf3hh(VS.100).aspx Nested Master Pages
http://msdn.microsoft.com/en-us/library/x2b3ktt7(VS.100).aspx
Style Sheets
http://www.adobe.com/devnet/dreamweaver/articles/why_css.html
http://msdn.microsoft.com/en-us/library/h4kete56(VS.100).aspx
Client-side scripting
http://msdn.microsoft.com/en-us/library/aa479302.aspx
http://msdn.microsoft.com/en-us/library/aa479011.aspx
http://www.chadmyers.com/Blog/archive/2007/12/13/using-jquery-with-asp.net-mvc.aspx
Themes
http://msdn.microsoft.com/en-us/library/ykzx33wh(VS.100).aspx
Client ID generation
http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid(VS.100).aspx
http://gerardocontijoch.wordpress.com/2009/06/12/generacion-personalizada-de-ids-en-asp-net-4-0/
Rendering elements modes
By default, when a Web application or Web site targets the .NET Framework 4, the controlRenderingCompatibilityVersion attribute of the pages element is set to "4.0". This element is defined in the machine-level Web.config
file and by default applies to all ASP.NET 4 applications:
<system.web>
<pages controlRenderingCompatibilityVersion="3.5|4.0"/>
</system.web>
The value for controlRenderingCompatibility is a string, which allows potential new version definitions in future releases. In the current release, the following values are supported for this property:
- "3.5". This setting indicates legacy rendering and markup. Markup rendered by controls is 100% backward compatible, and the setting of the xhtmlConformance property is honored.
- "4.0". If the property has this setting, ASP.NET Web server controls do the following:
- The xhtmlConformance property is always treated as "Strict". As a result, controls render XHTML 1.0 Strict markup.
- Disabling non-input controls no longer renders invalid styles.
- div elements around hidden fields are now styled so they do not interfere with user-created CSS rules.
- Menu controls render markup that is semantically correct and compliant with accessibility guidelines.
- Validation controls do not render inline styles.
- Controls that previously rendered
border="0"
(controls that derive from the ASP.NET Table control, and the ASP.NET Image control) no longer render this attribute.
Routing engine
http://msdn.microsoft.com/en-us/magazine/dd347546.aspx
Continuara….
Plan for cross-browser and/or form factors.
This objective may include but is not limited to: evaluating the impact on client side behaviors, themes, bandwidth, style sheets (including application design - task based or scaled rendering of existing page), when to apply Browsers file, structural approaches, user agents, different platforms (mobile vs. desktop)
Plan for globalization.
This objective may include but is not limited to: designing to support local, regional, language, or cultural preferences, including UI vs. data localization (for example, implementing at database level or resource level), when to use CurrentCulture vs. CurrentUICulture, globalization rollout plan (for example, setting base default language, planning localization), handling Unicode data (for example, what fields to include, request encoding), right-to-left support, vertical text and non-Latin topographies, calendars, data formatting, sorting
Index
Parte 0
Parte 1
Designing the Application Architecture (19%)
Un buen libro del equipo de patterns&practices que nos puede ayudar con esta parte del examen es
http://msdn.microsoft.com/en-us/library/dd673617.aspx
Plan the division of application logic
This objective may include but is not limited to: choosing between client-side and server side processing, planning separation of concern, (for example, partitioning functionality between controllers and evaluating business and data service consumption), planning for long-running processes (for example, synchronous vs. asynchronous)
http://msdn.microsoft.com/en-us/library/428509ah(VS.100).aspx
http://msdn.microsoft.com/en-us/library/ms998548.aspx
http://blogs.msdn.com/diegumzone/archive/2006/10/09/3_2D00_Tier_2C00_-3_2D00_Layer_2C00_-MVC_3A00_-a-Trio-of-Famous-Trios.aspx
Long-running process (synchro vs. asynchro)
http://www.ajaxmatters.com/articles/asp/long_run_process_p1.aspx
http://www.codeproject.com/KB/aspnet/asynctransactionhandler.aspx
Analyze requirements and recommend a system topology
This objective may include but is not limited to: designing interaction between applications, mapping logical design to physical implementation, validating nonfunctional requirements and cross-cutting concerns (for example, communications, operations management, and security), evaluating baseline needs (for example, scale and quality of service)
Cross-cutting concerns
http://msdn.microsoft.com/en-us/library/ee658105.aspx
Evaluating baseline needs
Choose appropriate client-side technologies
This objective may include but is not limited to: JavaScript, ASP.NET AJAX, jQuery, Microsoft Silverlight
JavaScript
http://es.wikipedia.org/wiki/JavaScript
Asp.Net WebForms
http://www.asp.net/web-forms/
Asp.Net MVC
http://www.asp.net/mvc/
JQuery
http://docs.jquery.com/Tutorials
AJAX
http://www.asp.net/ajax/
Silverlight
http://www.silverlight.net/
http://msdn.microsoft.com/en-us/library/dd410060(VS.100).aspx
Choose appropriate server-side technologies
This objective may include but is not limited to: user controls, server controls, partials, custom HtmlHelper extensions, Web parts, inheriting controls, dynamic data controls
User controls
http://msdn.microsoft.com/en-us/library/y6wb1a0e(VS.100).aspx
Server controls
http://msdn.microsoft.com/en-us/library/zt27tfhy(VS.100).aspx
Web parts
http://msdn.microsoft.com/en-us/library/e0s9t4ck(VS.100).aspx
Partials
Custom HtmHelper extensions
http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper(VS.100).aspx
Inheriting controls
http://weblogs.asp.net/cfigueroa/archive/2009/07/28/herencia-visual-asp-net.aspx
dynamic data controls
http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx
Desing state management
This objective may include but is not limited to: designing an application for the proper use of application state, session state, and request state (for example, ViewState, ControlState, Cache object, cookies, and client-side persistence)
Application state
http://msdn.microsoft.com/en-us/library/ms178594(VS.100).aspx
Session state
http://msdn.microsoft.com/en-us/library/ms178581(VS.100).aspx
Request state ( ViewState, ControlState, Cache object, cookies, and client-side persistence, Velocity)
http://msdn.microsoft.com/en-us/library/bb386448(VS.100).aspx
http://msdn.microsoft.com/en-us/library/z1hkazw7(VS.100).aspx
|
Rol del Web server y protocolo HTTP
El web server responde a llamadas generadas por un browser. La llamada básica es
GET /Default.aspx HTTP/1.1
Host: www.hoversoft.com.ar
En esta llamada por medio del verbo Get el browser le solicita el recurso Default.aspx (pagina por defecto de Asp.Net) del servidor hoversoft utilizando el protocolo HTPP 1.1 (Estandar actual)
El servidor puede responder con un recurso estático y cerrar la conexión (Stateless) o mas actualmente puede dejar información de sesión y la conexión abierta (por ejemplo llamadas mediante AJAX Asynchronous JavaScript and XML)
En este momento es importante revisar los verbos básicos del estandar HTTP 1.1
Los Request y Response son manejados por Asp.Net con wrappers que nos permiten realizar varias acciones con ellos.
La estructura de un response es algo similar a
HTTP/1.1 200 OK
Server: Microsoft/IIS 6.0
Content-Type: text/html
Content-Lenght: 38
<html><body>Hello, World!</body></html>
En la primera línea se encuentra el código de status, los cuales recomiendo conocer al menos los básicos.
En la tercera línea del response tenemos el MIME type, los cuales también es conveniente conocer los tipos básicos.
Se puede utilizar Microsoft Network monitor o un simple Telnet para ver y analizar el flujo de conexiones entre el servidor y el browser.
El examen 70-519 es parte del camino para la MCPD (Microsoft Ceritified Professional Developer). Al ser un examen nuevo no existen aun materiales programáticos para prepararlo. Encontraremos material en el examen 70-562 TS: Microsoft .Net Fameqork 3.5 Asp.Net development, (hay que tener en cuenta que este examen era relacionado al framework 3.5 y se utilizaba la version 2008 del VIsual Studio, mientras que el que voy a preparar utiliza el framework 4 y la version 2010 del Visual Studio)
Por ser un examen beta tengo chance para rendirlo hasta el 30 de abril, pero lo schedulee (valga el anglicismo) para el 20 de abril. Con lo que empecemos.
Guia
Designing the Application Architecture (19%) -
Plan the division of application logic. This objective may include but is not limited to: choosing between client-side and server side processing, planning separation of concern, (for example, partitioning functionality between controllers and evaluating business and data service consumption), planning for long-running processes (for example, synchronous vs. asynchronous) - Analyze requirements and recommend a system topology.
This objective may include but is not limited to: designing interaction between applications, mapping logical design to physical implementation, validating nonfunctional requirements and cross-cutting concerns (for example, communications, operations management, and security), evaluating baseline needs (for example, scale and quality of service) - Choose appropriate client-side technologies.
This objective may include but is not limited to: JavaScript, ASP.NET AJAX, jQuery, Microsoft Silverlight - Choose appropriate server-side technologies.
This objective may include but is not limited to: user controls, server controls, partials, custom HtmlHelper extensions, Web parts, inheriting controls, dynamic data controls - Design state management.
This objective may include but is not limited to: designing an application for the proper use of application state, session state, and request state (for example, ViewState, ControlState, Cache object, cookies, and client-side persistence) Designing the User Experience (17%) -
Design the site structure. This objective may include but is not limited to: designing application segmentation for manageability and security (for example, using areas, shared views, master pages, and nested master pages), appropriate use of style sheets, client-side scripting, themes, client ID generation, rendering element modes, routing engine -
Plan for cross-browser and/or form factors. This objective may include but is not limited to: evaluating the impact on client side behaviors, themes, bandwidth, style sheets (including application design - task based or scaled rendering of existing page), when to apply Browsers file, structural approaches, user agents, different platforms (mobile vs. desktop) -
Plan for globalization. This objective may include but is not limited to: designing to support local, regional, language, or cultural preferences, including UI vs. data localization (for example, implementing at database level or resource level), when to use CurrentCulture vs. CurrentUICulture, globalization rollout plan (for example, setting base default language, planning localization), handling Unicode data (for example, what fields to include, request encoding), right-to-left support, vertical text and non-Latin topographies, calendars, data formatting, sorting Designing Data Strategies and Structures (18%) -
Design data access. This objective may include but is not limited to: choosing data access technologies such as ADO.NETData Services, Entity Framework, Windows Communications Foundation (WCF), and ASP.NET Web Services -
Design data presentation and interaction. This objective may include but is not limited to: pulling data from data layer and binding into views, pages, and controls, and pulling data back to data layer by using ModelBinders, data source controls, and HtmlHelper extensions, or programmatically -
Plan for data validation. This objective may include but is not limited to: contextual validation vs. data integrity, where to validate data, synchronization between UI and data layer, data annotations Designing Security Architecture and Implementation (17%) -
Plan for operational security. This objective may include but is not limited to: approaches for process- and resource-level security, including local and remote resources, Code Access Security (CAS), including trust level, process identity, application pool, and identity tag -
Design an authentication and authorization model. This objective may include but is not limited to: authentication providers, including WindowsForms, and custom user identity flowthrough (for example, trusted subsystem), role management, membership providers, URL authorization (for example, AuthorizationAttribute), file authorization, Authorization Manager (AzMan) -
Plan for minimizing attack surfaces. This objective may include but is not limited to: input validation, throttling inputs, request filtering, where to use Secure Sockets Layer (SSL) Preparing For and Investigating Application Issues (15%) -
Choose a testing methodology. This objective may include but is not limited to: black box, white box, integration, regression, coverage, API testing, performance testing, security testing This objective does not include: load testing, Web testing, unit testing -
Design an exception handling strategy. This objective may include but is not limited to: HandleError attribute in MVC, common error pages, post-error processing, global vs. page level -
Recommend an approach to debugging. This objective may include but is not limited to: tools and approaches for a given scenario (for example, memory dumps, DebuggingAttributes, crashes vs. hangs, deadlocks, assembly binding), when to attach to process (Visual Studio Development Server vs. IIS vs. Internet Explorer), root cause analysis This objective does not include: basic breakpoints -
Recommend an approach to performance issues. This objective may include but is not limited to: which instrumentation to watch or create (including performance counters and event tracing) to analyze performance issues, page and fragment caching Designing a Deployment Strategy (14%) -
Design a deployment process. This objective may include but is not limited to: Windows Installer (MSI) vs. xcopy vs. Web Deployment Tool, scaling, rolling deployments -
Design configuration management. This objective may include but is not limited to: using the ConfigSource attribute (for example, connection strings), staging vs. production vs. development, topologies, machine.config vs. web.config, using IIS vs. Visual Studio Development Server during development, application pools, configuration inheritance -
Plan for scalability and reliability. This objective may include but is not limited to: scaling up, scaling out, at physical level and at architectural level, impact of offloading technologies on load balancing, including state, synchronizing machine and encryption keys -
Design a health monitoring strategy. This objective may include but is not limited to: when to monitor application or business-related events (e.g., on UI every time clicked or in business layer), determining a strategy for using ASP.NET Health Monitoring, throttling, filtering, delivery method |
Materiales
Indispensable. Visual Studio 2010 profesional o superior. Se puede bajar el RC.
MSDN y seleccionar las opciones de .Net Framework 4
Material de Microsoft Learning no hay disponible aun.
Material bibliográfico Self-Pace Training Kit. Para el framework 3.5 (verificar las diferencias)
Diferencias entre los frameworks
En MSDN y en StackOverflow