100% Real Microsoft 70-549 Exam Questions & Answers, Accurate & Verified By IT Experts
Instant Download, Free Fast Updates, 99.6% Pass Rate
Archived VCE files
File | Votes | Size | Date |
---|---|---|---|
File Microsoft.BeitCertified.70-549.v2009-11-17.by.Krappie.181q.vce |
Votes 1 |
Size 770.02 KB |
Date Nov 17, 2009 |
File Microsoft.ActualTests.70-549.v2009-10-01.by.khan.86q.vce |
Votes 1 |
Size 735.35 KB |
Date Oct 11, 2009 |
File Microsoft.SelfTestEngine.70-549.v6.0.CSharp.by.Certblast.90q.vce |
Votes 1 |
Size 326.33 KB |
Date Jul 30, 2009 |
Microsoft 70-549 Practice Test Questions, Exam Dumps
Microsoft 70-549 (PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework) exam dumps vce, practice test questions, study guide & video training course to study and pass quickly and easily. Microsoft 70-549 PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework exam dumps & practice test questions and answers. You need avanset vce exam simulator in order to study the Microsoft 70-549 certification exam dumps & Microsoft 70-549 practice test questions in vce format.
The Microsoft 70-549 exam, officially titled "Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework 3.5," was a significant benchmark for developers. It was designed to validate the skills required to build robust, scalable, and complex applications using the key technologies introduced in the .NET 3.5 framework. Passing this exam demonstrated a developer's expertise in creating applications that spanned rich user interfaces, service-oriented architectures, and intricate business workflows. It was a comprehensive test of a developer's ability to architect and implement solutions for the enterprise space using this powerful version of the framework.
While the 70-549 exam has since been retired, the foundational technologies it covered remain influential in the world of software development. The exam focused heavily on Windows Presentation Foundation (WPF) for building modern user interfaces, Windows Communication Foundation (WCF) for creating services, and Windows Workflow Foundation (WF) for managing long-running business processes. It also tested proficiency in Language-Integrated Query (LINQ) for data manipulation. Understanding these technologies provides a strong historical context and a deep understanding of principles that have evolved into the tools developers use today.
This series will serve as a detailed guide to the topics covered in the 70-549 Exam. We will dissect each major technology area, exploring the core concepts, design patterns, and implementation details necessary to master them. The goal is to provide a thorough understanding of how these components work together to form a cohesive enterprise application. For developers studying the evolution of .NET or maintaining legacy systems, this information is invaluable. It provides a structured path to understanding the architecture and design decisions behind many existing enterprise applications built on the .NET 3.5 platform.
Preparing for an exam like the 70-549 Exam required more than just memorizing syntax; it demanded a deep architectural understanding. The questions were often scenario-based, asking candidates to choose the most appropriate technology or design pattern to solve a specific business problem. This meant developers needed to understand the trade-offs between different approaches, such as choosing the right WCF binding or the most efficient LINQ query. This series will adopt a similar approach, focusing not just on the "how" but also on the "why," providing the context needed to make informed architectural decisions.
Windows Presentation Foundation, or WPF, was a cornerstone of the 70-549 Exam and represented a major leap forward in UI development on the Windows platform. Unlike its predecessor, Windows Forms, which was based on the standard Windows controls (GDI/GDI+), WPF introduced a vector-based rendering engine that utilized DirectX. This allowed for the creation of visually stunning and highly scalable user interfaces. Its resolution-independent nature meant that applications looked sharp on any display, from small monitors to large high-resolution screens. This graphics-rendering capability was a revolutionary feature for enterprise application developers.
A fundamental concept in WPF is the separation of an application's appearance from its behavior. This is primarily achieved through the use of the Extensible Application Markup Language, or XAML. XAML is a declarative XML-based language used to define the user interface elements, their layout, and their styling. The application's logic, such as event handlers and business rules, is written in a code-behind file using a language like C# or VB.NET. This separation allows UI designers and software developers to work in parallel, streamlining the development workflow and making applications easier to maintain and update.
The WPF object model is built upon a hierarchical tree of elements. At the root of this hierarchy is the DispatcherObject, which provides the foundation for WPF's threading model. Further down the tree is the DependencyObject, which introduces the concept of dependency properties. These special properties are a core feature of WPF, enabling data binding, styling, animation, and more. Understanding this element hierarchy and the role of dependency properties was absolutely essential for anyone preparing for the 70-549 Exam, as they are central to how WPF functions.
WPF also introduced a rich composition model. Instead of having a fixed set of properties for each control, many WPF controls are "lookless." This means their visual structure is not hard-coded but is instead defined by a control template. This gives developers and designers unprecedented freedom to completely change the appearance of a control without altering its underlying functionality. For example, a button can be restyled to look like a hyperlink, an animated image, or virtually anything else, simply by providing a new template. This level of customization was a key selling point of the technology.
Extensible Application Markup Language (XAML) is the primary language for defining the user interface in a WPF application. As a declarative language, XAML allows you to describe "what" you want the UI to look like, rather than writing procedural code to describe "how" to create it. For the 70-549 Exam, a deep understanding of XAML syntax was non-negotiable. This included knowing how to instantiate objects, set their properties using attributes, and define complex object relationships through nested elements. For instance, a Grid element can contain Button and TextBlock elements, creating a visual hierarchy.
One of the powerful features of XAML tested in the 70-549 Exam is the use of markup extensions. Markup extensions are a way to provide values for properties that cannot be defined as simple strings. They are identified by curly braces {} in XAML. Common examples include {Binding} for data binding, {StaticResource} for referencing a reusable resource, and {DynamicResource} for referencing resources that might change at runtime. These extensions provide a powerful and concise way to handle complex scenarios like data binding and styling directly within the markup, further separating appearance from logic.
The concept of a logical tree and a visual tree is also fundamental to understanding XAML and WPF. The logical tree represents the structure of the UI elements as you have defined them in your XAML. It is a more abstract representation of the UI. The visual tree, on the other hand, is a more detailed representation that includes all the visual components that make up the controls, as defined by their control templates. For example, a Button in the logical tree might expand into a Border, a ContentPresenter, and other elements in the visual tree.
Finally, XAML is not just for defining static UIs. It is also used to declare animations, data templates, control templates, and styles. This makes it a comprehensive language for all aspects of an application's presentation layer. For the 70-549 Exam, candidates needed to be comfortable reading and writing XAML for a variety of purposes. This included creating a Storyboard to animate an element's properties, defining a DataTemplate to specify how data objects should be displayed, and creating a Style to ensure a consistent look and feel across the entire application.
Proper layout is crucial for creating a user interface that is both functional and aesthetically pleasing. WPF provides a powerful and flexible layout system based on a set of panel controls. Unlike the fixed-position layout of older UI frameworks, WPF's layout system is designed to be dynamic, automatically adjusting the size and position of elements to fit the available space. The 70-549 Exam required a thorough understanding of the different layout panels and their appropriate use cases. The choice of panel can significantly impact the performance and maintainability of the application.
The most basic panel is the StackPanel. It arranges its child elements in a single line, either horizontally or vertically. It is simple and efficient, making it ideal for creating lists or sections of a form. The WrapPanel is similar, but it will wrap elements to the next line if there is not enough space in the current one, much like text in a paragraph. Another simple panel is the Canvas, which allows for absolute positioning of its children using coordinates. The Canvas is useful for creating diagrams or custom drawings where precise placement is required.
For more complex layouts, the Grid is arguably the most powerful and versatile panel in WPF. It allows you to arrange elements in a series of rows and columns, similar to an HTML table. The Grid provides fine-grained control over the size and alignment of its children. Its support for proportional sizing (star sizing) makes it ideal for creating fluid layouts that adapt gracefully to different window sizes. For the 70-549 Exam, mastering the Grid, including the use of RowDefinitions, ColumnDefinitions, and attached properties like Grid.Row and Grid.Column, was absolutely essential.
The DockPanel is another useful panel for creating common application layouts, such as those with a main content area and surrounding toolbars or status bars. It allows you to "dock" child elements to the top, bottom, left, or right edges of the panel. The last element to be added, by default, fills the remaining space in the center. Understanding how to combine these different panels, nesting them within each other, is the key to building sophisticated and responsive user interfaces in WPF, a skill thoroughly tested in the 70-549 Exam.
Beyond layout panels, the 70-549 Exam required extensive knowledge of the rich set of controls available in WPF. These controls are far more flexible than their predecessors. WPF controls are categorized into several groups, including content controls, items controls, and range controls. A ContentControl is a control that can have a single piece of content, such as a Button or a Label. A key feature is that this content can be any object, not just a string. You can place an image, a panel, or even a complex user control inside a Button.
ItemsControls are designed to display a collection of items. The most common examples are ListBox, ComboBox, and ListView. A powerful feature of these controls, and a key topic for the 70-549 Exam, is their ability to be data-bound to a collection of objects. You can then use a DataTemplate to define how each individual item in the collection should be visually represented. This allows for the creation of rich, data-driven lists with complex layouts for each item, a common requirement in enterprise applications. The TreeView is another important items control for displaying hierarchical data.
Range-based controls, such as Slider, ProgressBar, and ScrollBar, are used to represent a value within a specific range. They all share common properties like Minimum, Maximum, and Value, making them intuitive to work with. These controls are often used in conjunction with data binding to provide a graphical way to view or modify a numeric value in the underlying data model. Their appearance can be completely customized using styles and templates, just like any other WPF control.
WPF also includes controls for text input and display, such as TextBox, TextBlock, and PasswordBox. The TextBlock is used for displaying read-only text and has advanced typography features. The TextBox allows for user input and supports multi-line editing and spell-checking. Additionally, WPF provides a RichTextBox control, which is a powerful control for editing formatted text, including features like images, tables, and varying fonts and colors. A solid understanding of the properties and events of these core controls was fundamental for success in the 70-549 Exam.
Data binding is one of the most powerful and important features of WPF, and it was a major focus of the 70-549 Exam. It is the mechanism that creates a connection between the application's user interface (the target) and its underlying business logic or data (the source). Once a binding is established, data flows automatically between the source and the target. This significantly reduces the amount of boilerplate code needed to synchronize the UI with the application's data, leading to cleaner, more maintainable applications.
The {Binding} markup extension is used in XAML to create a data binding. At its simplest, you can bind a property of one element to a property of another. More commonly, you bind a UI control's property to a property of a data object. This data object is typically set as the DataContext for a window, a panel, or a specific control. All child elements within that scope then inherit the DataContext, making it easy to bind to the properties of the data object. Understanding the concept of DataContext and how it propagates through the element tree is crucial.
Data bindings can be configured to work in different directions. A OneWay binding ensures that any changes to the source property automatically update the target property in the UI. A TwoWay binding goes a step further, allowing changes made in the UI (e.g., a user typing in a TextBox) to be pushed back to the source property. There are also OneWayToSource and OneTime bindings for more specific scenarios. For TwoWay binding to work effectively, the source object should implement the INotifyPropertyChanged interface to notify the binding system of any changes to its properties.
Beyond simple property binding, the 70-549 Exam required knowledge of more advanced features. This includes using value converters, which are classes that implement the IValueConverter interface. Converters allow you to transform the data as it passes between the source and the target. A common example is a BooleanToVisibilityConverter, which converts a true/false value from the data source into a Visibility.Visible or Visibility.Collapsed value for the UI. Data binding is a deep topic, and its mastery is key to building modern, data-driven WPF applications.
To create professional and maintainable WPF applications, it is essential to manage resources like colors, brushes, and fonts effectively. The 70-549 Exam emphasized the use of WPF's resource system. Resources are objects that can be defined in one place and then reused throughout an application. They are typically defined within a ResourceDictionary and can be placed at the application, window, or even control level. Resources are referenced using the {StaticResource} or {DynamicResource} markup extensions. Using resources ensures a consistent look and feel and makes it easy to change the application's theme.
Styles build upon the resource system to allow you to define a set of property values that can be applied to a control. A Style is a collection of Setter objects, where each Setter targets a property and assigns it a value. For example, you could create a style for a Button that sets a consistent FontSize, FontWeight, and Margin for all buttons in your application. The 70-549 Exam required candidates to know how to create styles, apply them to controls implicitly (by setting the TargetType) or explicitly (by setting a key), and how to create new styles that inherit from existing ones.
Control templates take customization to the next level. As mentioned earlier, most WPF controls are "lookless," meaning their visual appearance is defined by a ControlTemplate. For the 70-549 Exam, you needed to understand how to create a custom ControlTemplate to completely change the visual structure of a control. For example, you could redefine a CheckBox to use images of a thumbs-up and thumbs-down instead of the standard check mark. Control templates are a powerful feature that gives designers complete control over the UI's appearance without affecting the control's functionality.
Data templates are similar to control templates but are used to define the visual representation of data objects. They are most commonly used with items controls like ListBox or ListView. When an items control is bound to a collection of business objects, you can provide a DataTemplate that specifies how each object in the collection should be displayed. This allows you to create rich, visually complex items instead of just a simple text string. The ability to use resources, styles, and templates effectively is a hallmark of a skilled WPF developer.
As enterprise applications grow in complexity, managing the interaction between the UI and the application logic becomes a significant challenge. The 70-549 Exam recognized this by testing the WPF commanding infrastructure and its role in design patterns like Model-View-ViewModel (MVVM). WPF commands provide a way to separate the semantics of an action (the "what") from its implementation (the "how"). A command can be bound to a UI control, like a button or a menu item, and the command itself determines whether the action can be executed.
The built-in command system includes the ICommand interface, which defines an Execute method and a CanExecute method. Execute contains the logic to perform the action, while CanExecute returns a boolean indicating whether the action is currently available. WPF controls that are bound to a command will automatically enable or disable themselves based on the result of CanExecute. This removes the need for manual event handlers to enable or disable controls, leading to cleaner and more declarative code. The 70-549 Exam expected familiarity with built-in commands and how to create custom ones.
The Model-View-ViewModel (MVVM) pattern is a design pattern that leverages data binding and commanding to create a clean separation of concerns in a WPF application. The Model represents the application's data and business logic. The View is the UI, defined in XAML, and it contains no business logic. The ViewModel acts as a bridge between the Model and the View. It exposes data from the Model as properties and actions as commands. The View is then data-bound to the properties and commands of the ViewModel.
Using the MVVM pattern, which was a key architectural concept for the 70-549 Exam, results in an application that is much easier to test, maintain, and evolve. Since the ViewModel has no reference to any specific UI elements, it can be unit tested independently. Furthermore, because the View is simply a reflection of the ViewModel's state, designers can change the UI without needing to touch the underlying application logic. While not strictly required by WPF, MVVM is the standard pattern for building robust and scalable WPF applications.
A major advantage of WPF is its powerful graphics and animation capabilities, which are built on top of DirectX. The 70-549 Exam required knowledge of how to leverage these features to create rich and engaging user experiences. WPF provides a set of 2D shape primitives, such as Rectangle, Ellipse, and Path. These shapes can be combined and styled with brushes, pens, and transformations (like scaling, rotating, and skewing) to create complex vector graphics. Because they are vector-based, these graphics scale smoothly without any loss of quality.
WPF's animation system allows you to animate almost any dependency property. Animations are defined using a timeline-based approach. You create a Storyboard that contains one or more animation objects, such as DoubleAnimation (for animating properties of type double) or ColorAnimation (for animating colors). You then specify the target property you want to animate and the animation's duration. These animations can be triggered by events, such as a mouse click or a property change, and can be defined directly in XAML, making them easy to integrate into the UI design.
The animation system is not just for decorative effects; it can be used to provide important visual feedback to the user. For example, you could use an animation to smoothly fade in a new piece of content or to provide a visual cue when an item is added to a list. The 7a0-549 Exam expected candidates to understand how to create both simple and complex animations and how to control them using triggers and events. This includes understanding concepts like easing functions, which allow you to create more natural-looking motion.
In addition to 2D graphics and animations, WPF has built-in support for 3D graphics and multimedia. While deep 3D programming was a more advanced topic, the exam required a basic understanding of how to host 3D content using the Viewport3D element. More commonly, developers needed to know how to use the MediaElement control. This control makes it easy to incorporate audio and video playback directly into a WPF application. It supports a variety of common media formats and can be controlled through properties and methods, allowing for the creation of custom media player interfaces.
A common challenge in UI development is keeping the user interface responsive while performing long-running operations, such as querying a database or calling a web service. The 70-549 Exam addressed this by testing knowledge of WPF's threading model. Like most UI frameworks, all UI elements in a WPF application are owned by a single thread, commonly known as the UI thread. To keep the application responsive, any time-consuming work must be performed on a separate background thread.
If a background thread needs to update the UI (for example, to report progress or display results), it cannot do so directly. Attempting to access a UI element from a thread other than the one that created it will result in an exception. To safely update the UI from a background thread, you must use the Dispatcher. Each UI element has a Dispatcher property, which can be used to schedule work to be executed on the UI thread. The 70-549 Exam required candidates to know how to use Dispatcher.Invoke or Dispatcher.BeginInvoke to marshal calls from a background thread to the UI thread.
The BackgroundWorker component was a popular tool for managing background operations in .NET 3.5 and was a relevant topic for the exam. It provides a convenient, event-based model for performing work on a separate thread. You place your long-running code in the DoWork event handler. You can report progress from this handler, which raises the ProgressChanged event on the UI thread. When the background work is complete, the RunWorkerCompleted event is raised, also on the UI thread, where you can safely update the UI with the results.
While the BackgroundWorker is useful, the exam also expected an understanding of more fundamental threading concepts, such as using the ThreadPool to execute tasks asynchronously. Regardless of the method used, the key principle remains the same: perform long-running operations off the UI thread to prevent the application from freezing, and use the Dispatcher to safely update the UI with the results of that work. Mastering this pattern is essential for creating professional, high-performance WPF applications.
Windows Communication Foundation (WCF) was a unified programming model for building service-oriented applications, and it was a critical component of the 70-549 Exam. Before WCF, developers had to use a variety of different technologies to handle different communication scenarios, such as ASMX web services for interoperable communication, .NET Remoting for communication between .NET applications, and MSMQ for durable messaging. WCF brought all of these capabilities, and more, under a single, consistent framework. Its goal was to simplify the development of connected systems.
The core philosophy of WCF is to separate the "what" of a service (its operations) from the "where" (its location) and the "how" (the communication protocol). This separation is achieved through the three fundamental tenets of WCF: the service contract, the address, and the binding. The service contract defines what operations the service exposes. The address specifies the location where the service can be found. The binding describes how to communicate with the service, including the protocol, encoding, and security mechanisms to be used. This "ABC" of WCF was foundational knowledge for the 70-549 Exam.
WCF is designed to be highly flexible and extensible. It provides a set of predefined bindings to cover the most common communication scenarios, from interoperable web services to high-performance communication between .NET applications on the same machine. However, developers can also create custom bindings to meet specific requirements. This flexibility allows a single WCF service to expose multiple endpoints, each with a different address, binding, and even a different contract. This enables a single service to be consumed by a wide variety of clients, from legacy systems to modern web applications.
For the 70-549 Exam, developers needed to understand not just how to build a simple WCF service, but also how to make key architectural decisions. This included choosing the appropriate binding for a given scenario, designing effective service contracts, and implementing security, reliability, and transactionality. WCF is a deep and powerful technology, and the exam was designed to ensure that candidates had the skills to use it to build robust, secure, and scalable enterprise-grade services.
The foundation of any WCF service is its contract. The service contract is a formal agreement between the service and its clients that defines the operations the service provides. In WCF, a service contract is created by defining a C# or VB.NET interface and decorating it with the ServiceContract attribute. Each method in the interface that you want to expose as a service operation must be decorated with the OperationContract attribute. This explicit "opt-in" model gives developers precise control over which parts of their code are exposed to the outside world.
Data contracts are used to define the structure of the data that is passed to and from the service operations. While you can use simple primitive types like strings and integers, any complex data types that you want to send across the service boundary must have a data contract. A data contract is created by decorating a class or a struct with the DataContract attribute. You then decorate each member (property or field) that you want to include in the contract with the DataMember attribute. This "opt-out" model for data members provides flexibility in defining the service's data structures.
The 70-549 Exam required a thorough understanding of how to design effective contracts. This includes understanding the various properties of the OperationContract and DataContract attributes. For example, you can specify a name and namespace for your contracts to control how they are represented in the service's metadata (WSDL). This is important for versioning and for ensuring interoperability with non-WCF clients. You also needed to understand how to handle exceptions in a service-oriented way, typically by using fault contracts, which are also part of the service contract definition.
A fault contract, defined using the FaultContract attribute on an operation, allows a service to communicate specific, typed error information to a client in a standardized and interoperable way. This is far better than letting raw exceptions propagate back to the client, which can expose sensitive implementation details and create tight coupling. Designing clear, well-defined service, data, and fault contracts is the first and most important step in building a robust and maintainable WCF service, a skill thoroughly tested in the 70-549 Exam.
Once a service contract is defined, you need to configure how clients will communicate with the service. This is done using bindings and endpoints. An endpoint is the combination of the three "ABCs" of WCF: an Address, a Binding, and a Contract. The Address is a URL that specifies where the service is located. The Binding specifies the communication protocols to be used. The Contract specifies the operations that are available at that endpoint. A single WCF service can have multiple endpoints, allowing it to be accessed in different ways.
The binding is the most complex part of the endpoint configuration, and the 70-549 Exam required a deep knowledge of the various system-provided bindings. Each binding is a pre-configured collection of settings designed for a specific communication scenario. For example, BasicHttpBinding is designed for maximum interoperability and is roughly equivalent to old ASMX web services. WSHttpBinding is also based on HTTP but supports more advanced features like security, transactions, and reliable messaging, making it suitable for more secure, enterprise-level web services.
For communication between WCF applications, other bindings are often more appropriate. NetTcpBinding uses TCP for communication and is highly optimized for performance. It is an excellent choice for communication between .NET applications on an intranet. NetNamedPipeBinding uses named pipes and is even faster, but it is limited to communication between processes on the same machine. There is also NetMsmqBinding, which uses Microsoft Message Queuing for durable, disconnected communication. Choosing the right binding is a critical architectural decision that depends on the requirements for performance, interoperability, and security.
For the 70-549 Exam, you not only needed to know what each binding was for, but also how to configure their various properties. This includes settings for security (such as transport-level vs. message-level security), transaction flow, and message size limits. While the predefined bindings cover most scenarios, WCF also allows you to create custom bindings by combining individual binding elements. This provides ultimate flexibility but requires a deeper understanding of the WCF channel stack.
A WCF service is just a class library until it is hosted in a running process. WCF provides several options for hosting services, and the 70-549 Exam required candidates to know the advantages and disadvantages of each. The simplest hosting option is self-hosting, where the service is hosted in a process that you create and manage yourself, such as a console application or a Windows Service. This gives you maximum control over the host process but requires you to handle tasks like process lifetime management and monitoring yourself.
A more common and robust option for hosting services that communicate over HTTP is to host them in Internet Information Services (IIS). When you host a service in IIS, you get to leverage all the features of the IIS platform, such as process recycling, idle shutdown, and health monitoring. IIS handles the activation of the service, starting the host process only when the first message arrives. This is known as message-based activation and makes for a very scalable hosting environment. The 70-549 Exam expected proficiency in configuring WCF services for IIS hosting.
Windows Process Activation Service (WAS), introduced with IIS 7, extended this message-based activation model to protocols other than HTTP. With WAS, you can host WCF services that use non-HTTP bindings, such as NetTcpBinding or NetMsmqBinding, and still get the benefits of on-demand activation and process management that were previously only available for HTTP services. This made WAS a powerful and flexible hosting option for enterprise services and a key topic for the exam.
Configuration of the service, including its endpoints, is typically done in the application's configuration file (app.config or web.config). The 70-549 Exam required a deep understanding of the <system.serviceModel> configuration section. This is where you define the service's endpoints, register behaviors, and configure the properties of the bindings. While it is also possible to configure a service entirely in code, using a configuration file allows administrators to change the service's address or binding settings without recompiling the application.
WCF uses behaviors to modify or extend the runtime behavior of a service. Behaviors are a powerful extensibility point in WCF and were an important topic for the 70-549 Exam. There are four types of behaviors: service behaviors, endpoint behaviors, contract behaviors, and operation behaviors, each applying at a different level of the service architecture. Behaviors can be used to control a wide range of features, such as transaction management, concurrency, instance management, and metadata publication.
Instance context management is a crucial service behavior that controls how service objects are created in response to incoming messages. The InstanceContextMode can be set to PerCall, PerSession, or Single. PerCall creates a new service object for every single client request, which is a stateless and highly scalable model. PerSession creates a new service object for each client session, allowing the service to maintain state across multiple calls from the same client. Single uses a single service object to handle all requests from all clients, which is useful for services that manage a shared resource.
Concurrency management works hand-in-hand with instancing. The ConcurrencyMode can be set to Single, Reentrant, or Multiple. Single mode means that only one thread can execute in the service object at a time, which is a simple and safe model but can be a performance bottleneck. Multiple mode allows multiple threads to execute concurrently within the service object, which offers higher throughput but requires the developer to handle thread safety manually. Reentrant is a variation of single-threaded access that allows the service to make outbound calls while still processing a request.
Another critical service behavior is the one that controls the publication of metadata. By default, WCF services do not expose metadata. To allow clients to generate a proxy for the service, you must explicitly enable metadata publication, typically by adding the serviceMetadata behavior. The 70-549 Exam required a solid understanding of these fundamental behaviors and how to configure them, either declaratively in the configuration file or programmatically in code using attributes. Mastering behaviors is key to building services that are tailored to specific enterprise requirements.
Windows Workflow Foundation (WF) is another key pillar of the .NET 3.5 framework that was covered in the 70-549 Exam. WF provides a programming model and a set of tools for building workflow-enabled applications. A workflow is a model of a business process, composed of a series of discrete steps called activities. WF allows you to define these workflows declaratively, either in XAML or using a visual designer. This separation of the business process logic from the application code makes the process easier to understand, modify, and manage.
WF was designed to address a wide range of scenarios, from simple sequential processes to complex, long-running, and stateful human workflows. It provides a library of built-in activities for common tasks like conditional logic (IfElse), looping (While), and executing code (CodeActivity). Developers can also create their own custom activities to encapsulate domain-specific logic. This makes WF a highly extensible and powerful framework for modeling and executing business processes.
One of the key features of WF is its support for long-running workflows. A business process, such as an employee onboarding process, might take days or even weeks to complete, with long periods of inactivity while waiting for human input or external events. The WF runtime includes a persistence service that can automatically save the state of an idle workflow to a database and unload it from memory. When an external event for that workflow instance arrives, the runtime can load its state from the database and resume execution. This makes WF highly scalable and suitable for resource-intensive enterprise processes.
The 70-549 Exam required developers to understand the fundamental concepts of WF, including the difference between sequential and state machine workflows. A sequential workflow follows a predictable, linear path of execution. A state machine workflow, on the other hand, is driven by events and can transition between a defined set of states. Candidates needed to know how to design and build both types of workflows, how to host the workflow runtime, and how to communicate with a running workflow instance.
The primary tool for building workflows in .NET 3.5 was the Visual Studio Workflow Designer. This designer provided a drag-and-drop surface where developers could assemble workflows by arranging activities. For the 70-549 Exam, proficiency with this designer was essential. It allowed you to visually construct the flow of a business process, configure the properties of each activity, and define the data that flowed between them. The visual nature of the designer made workflows accessible to a broader audience, including business analysts who could collaborate on the process design.
As mentioned, there are two main styles of workflow: sequential and state machine. A sequential workflow executes activities one after the other in a well-defined sequence. It is best suited for processes that have a clear beginning, end, and a predictable path, such as a data processing task. A state machine workflow is composed of a set of states and transitions. The workflow is always in one of the states, and it moves from one state to another in response to an event. This model is ideal for event-driven processes where the flow is not predictable, such as an order processing system.
Activities are the fundamental building blocks of a workflow. The 70-549 Exam required knowledge of the core activities provided in the base activity library. This included control flow activities like IfElse, While, and Parallel (which allows for the concurrent execution of multiple branches of activities). It also included activities for interacting with WCF services (Send and Receive) and for calling application code (CodeActivity and InvokeMethod). A key skill was knowing how to combine these activities to model a real-world business process.
In addition to using the built-in activities, developers often need to create custom activities to encapsulate reusable business logic. The 70-549 Exam tested the ability to create these custom activities, which involves inheriting from the Activity base class and defining the logic that the activity will execute. Creating a library of custom, domain-specific activities is a powerful way to promote reuse and simplify the design of complex workflows.
A workflow definition is just a template; to execute a business process, you need to create an instance of the workflow and run it within a host process. The 70-549 Exam covered the different ways to host the workflow runtime. Similar to WCF, workflows can be self-hosted in any .NET application, such as a console application or a Windows Service. This is done by creating an instance of the WorkflowRuntime class, adding the necessary services (like the persistence service), and then creating and starting workflow instances.
For web-based scenarios, workflows can also be hosted in ASP.NET. This allows a workflow to be associated with an incoming web request. A more powerful and common approach, however, was to host workflows as WCF services. WF and WCF were designed to be highly integrated. You could expose a workflow as a WCF service, where the Receive activities in the workflow correspond to the operations in the service contract. This enabled the creation of service-oriented, orchestrating applications where a long-running business process could be driven by messages received from external clients.
Communication between the host application and a running workflow instance is a critical aspect of workflow development. The 70-549 Exam required an understanding of how to pass data into a workflow when it starts and how to receive data from it when it completes. More importantly, it tested the ability to implement communication with a running workflow that is idle and waiting for an event. This is done using a local communication service and the HandleExternalEvent activity. The host application raises an event, and the workflow runtime routes it to the correct waiting workflow instance.
As discussed, persistence is a key service of the workflow runtime. To support long-running, durable workflows, you must configure a persistence service. The 70-549 Exam covered how to configure the SqlWorkflowPersistenceService, which uses a SQL Server database to store the state of idle or suspended workflow instances. Understanding how and when the runtime persists a workflow's state was crucial for building reliable and scalable workflow-based applications.
Language-Integrated Query (LINQ) was a revolutionary feature introduced in .NET 3.5 and a major topic on the 70-549 Exam. LINQ introduced a unified, declarative syntax for querying data from various sources, directly within the .NET languages (C# and VB.NET). Before LINQ, querying data from different sources, such as a SQL database, an XML document, or an in-memory collection, required learning a different API and query language for each one. LINQ provided a single, consistent way to work with data, regardless of its origin.
LINQ is made possible by several new language features that were introduced in C# 3.0 and VB.NET 9.0. These include implicitly typed local variables (var), extension methods, lambda expressions, and anonymous types. These features work together to provide the foundation for LINQ's fluent and expressive query syntax. The 70-549 Exam required a solid understanding of these underlying language features, as they are essential for writing and understanding LINQ queries.
A key benefit of LINQ is that it is strongly typed. Queries are checked at compile-time, which means you can catch syntax errors or type mismatches before the application is even run. This provides a significant advantage over string-based query languages like SQL, where an error in the query string might not be discovered until runtime. This compile-time checking, combined with IntelliSense support in Visual Studio, makes writing data access code faster and less error-prone.
The LINQ architecture is based on a provider model. A LINQ provider is a component that translates a LINQ query into the native query language of the underlying data source. The .NET Framework 3.5 included several built-in providers. LINQ to Objects allows you to query any in-memory IEnumerable collection. LINQ to SQL is a simple object-relational mapper (O/RM) for querying Microsoft SQL Server databases. LINQ to XML provides a powerful and intuitive way to query and manipulate XML documents. The 70-549 Exam tested proficiency in using all of these providers.
LINQ to SQL was Microsoft's first object-relational mapping (O/RM) technology included with the .NET Framework, and it was a key data access technology for the 70-549 Exam. It allows developers to model a relational database using .NET classes. A visual designer in Visual Studio could be used to drag database tables onto a design surface, which would automatically generate corresponding entity classes. Developers could then write LINQ queries against these classes, and LINQ to SQL would translate those queries into SQL and execute them against the database.
Using LINQ to SQL simplifies data access code significantly. Instead of manually writing ADO.NET code with SqlConnection and SqlCommand objects and parsing the results from a SqlDataReader, you can work with strongly typed objects. The DataContext class is the main entry point for LINQ to SQL. It manages the connection to the database and tracks changes to the objects you retrieve. To save changes, you simply call the SubmitChanges method on the DataContext, and it will automatically generate the necessary INSERT, UPDATE, and DELETE statements.
The 70-549 Exam required a deep understanding of how to write LINQ to SQL queries, from simple filtering and sorting to more complex operations like joins, grouping, and aggregation. It also covered the mechanisms for handling updates, including the optimistic concurrency model that LINQ to SQL uses to detect conflicts when multiple users try to update the same data. While Entity Framework has since become the primary O/RM for .NET, the concepts learned from LINQ to SQL are still highly relevant.
LINQ to XML provides an in-memory XML programming interface that leverages LINQ for querying. It makes working with XML documents much more intuitive than older APIs like XmlDocument. LINQ to XML introduces new classes like XDocument, XElement, and XAttribute that allow for the easy construction and manipulation of XML trees. For the 70-549 Exam, candidates needed to know how to use LINQ queries to find specific elements, transform XML structures, and create new XML documents from scratch. Its powerful and expressive syntax made it a preferred way to handle XML data in .NET 3.5.
While LINQ to SQL provided a modern, object-oriented way to access databases, the 70-549 Exam also required a strong foundation in traditional ADO.NET. ADO.NET is the low-level data access framework in .NET, and it provides the foundation upon which technologies like LINQ to SQL are built. A thorough understanding of ADO.NET is essential for situations where you need fine-grained control over database interactions or when working with databases that do not have a LINQ provider. It is also crucial for maintaining and interacting with legacy code.
The core of ADO.NET is a set of classes, known as data providers, that are used to connect to a database, execute commands, and retrieve results. The 70-549 Exam expected familiarity with the main components of a data provider, such as the Connection, Command, DataReader, and DataAdapter objects. The Connection object establishes the link to the database. The Command object is used to execute a SQL statement or a stored procedure. The DataReader provides a highly efficient, forward-only, read-only stream of data from the database.
For disconnected data scenarios, ADO.NET provides the DataSet. A DataSet is an in-memory cache of data retrieved from a data source. It can contain multiple DataTable objects, which can be related to each other, creating an in-memory relational database. A DataAdapter acts as a bridge between the DataSet and the database, handling the work of filling the DataSet with data and reconciling any changes made to the DataSet back to the database. The 70-549 Exam tested the ability to work in both connected (DataReader) and disconnected (DataSet) scenarios.
A critical aspect of writing ADO.NET code is security, specifically the prevention of SQL injection attacks. This is achieved by always using parameterized queries. Instead of concatenating user input directly into a SQL query string, you use placeholders in the query and add the user input as a parameter to the Command object. The data provider then ensures that the input is treated as a literal value and not as executable code. This is a fundamental security practice that was expected of any developer taking the 70-549 Exam.
Go to testing centre with ease on our mind when you use Microsoft 70-549 vce exam dumps, practice test questions and answers. Microsoft 70-549 PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework certification practice test questions and answers, study guide, exam dumps and video training course in vce format to help you study with ease. Prepare with confidence and study using Microsoft 70-549 exam dumps & practice test questions and answers vce from ExamCollection.
Top Microsoft Certification Exams
Site Search:
SPECIAL OFFER: GET 10% OFF
Pass your Exam with ExamCollection's PREMIUM files!
SPECIAL OFFER: GET 10% OFF
Use Discount Code:
MIN10OFF
A confirmation link was sent to your e-mail.
Please check your mailbox for a message from support@examcollection.com and follow the directions.
Download Free Demo of VCE Exam Simulator
Experience Avanset VCE Exam Simulator for yourself.
Simply submit your e-mail address below to get started with our interactive software demo of your free trial.