100% Real Microsoft 70-548 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.SelfTestEngine.70-548.v6.0.CSharp.by.Certblast.80q.vce |
Votes 1 |
Size 699.76 KB |
Date Jul 30, 2009 |
Microsoft 70-548 Practice Test Questions, Exam Dumps
Microsoft 70-548 (PRO: Designing and Developing Windows-Based Applications by Using the Microsoft .NET Framework (C#, C++ and VB)) exam dumps vce, practice test questions, study guide & video training course to study and pass quickly and easily. Microsoft 70-548 PRO: Designing and Developing Windows-Based Applications by Using the Microsoft .NET Framework (C#, C++ and VB) exam dumps & practice test questions and answers. You need avanset vce exam simulator in order to study the Microsoft 70-548 certification exam dumps & Microsoft 70-548 practice test questions in vce format.
The Microsoft 70-548 exam, "PRO: Designing and Developing Windows-Based Applications by Using the Microsoft .NET Framework 3.5," was a cornerstone certification for professional desktop application developers. It was part of the highly respected Microsoft Certified Professional Developer (MCPD) track. Passing this exam demonstrated a developer's expertise in using the powerful new technologies introduced in the .NET Framework 3.5, specifically Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and Windows Workflow Foundation (WF).
It is essential to recognize that the 70-548 Exam has been retired for many years, as .NET Framework 3.5 is a legacy technology from 2007. However, the design principles and architectural patterns it championed are foundational to modern software development. The shift towards declarative UI, service-oriented architecture, and robust data access that this exam covered laid the groundwork for the technologies we use today. Therefore, studying its objectives offers a unique insight into the evolution of .NET and a solid grounding in timeless application design principles.
This series will use the curriculum of the 70-548 Exam as a framework for exploring the core competencies of a Windows application developer. We will delve into the specific technologies of the era, such as WPF and WCF, and also bridge the gap to their modern counterparts. This approach will provide historical context while equipping you with knowledge that is still conceptually relevant in the current development landscape.
In this first part, we will focus on the most visible and impactful technology covered by the 70-548 Exam: Windows Presentation Foundation (WPF). We will explore its core concepts, including the shift to a declarative UI with XAML, its powerful layout and control system, and the fundamental mechanics of dependency properties and routed events. This is the starting point for building rich client applications.
Before Windows Presentation Foundation (WPF), the primary technology for building Windows applications was Windows Forms (WinForms). WinForms was a successful framework, but it was fundamentally a managed wrapper around the classic Windows user interface libraries like User32 and GDI+. As application UIs became more demanding, requiring rich graphics, animations, and complex data visualization, the limitations of this older model became apparent. This is the context you must understand for the 70-548 Exam.
WPF, introduced with .NET Framework 3.0, was a complete rethinking of UI development. Instead of being tied to the legacy Windows components, WPF was built on top of DirectX. This meant that the entire UI, from a simple button to a complex 3D chart, was rendered as a hardware-accelerated graphic. This provided enormous power and flexibility, allowing developers to create visually stunning and highly interactive user experiences that were previously very difficult to achieve.
Another key innovation was the separation of an application's appearance from its behavior. In WinForms, the appearance of a control and its underlying logic were tightly coupled. WPF introduced a declarative language called XAML, which allowed designers to define the look and feel of the application independently from the C# or VB.NET code that defined its logic. This separation of concerns is a core architectural principle that the 70-548 Exam emphasizes.
Finally, WPF introduced a resolution-independent rendering model. Because it was based on vectors rather than pixels, a WPF application could automatically scale to look sharp and clear on displays of any size and resolution, from a small tablet to a large high-DPI monitor. This was a forward-looking feature that has become critically important in today's multi-device world.
The Extensible Application Markup Language, or XAML, is at the heart of WPF development and is a major topic of the 70-548 Exam. XAML is an XML-based, declarative markup language that is used to define the user interface of a WPF application. Instead of creating and positioning UI elements programmatically in code (the imperative approach), you declare the structure and appearance of your UI in a hierarchical tree of XAML elements.
Each element in XAML corresponds to an instance of a .NET class. For example, the tag <Button> in XAML creates an instance of the Button class. The attributes of the XAML element, such as Content="Click Me" or Width="100", correspond to the properties of that class. This declarative approach makes the UI structure much easier to read, understand, and maintain, especially for complex interfaces.
This separation of UI definition (XAML) from application logic (C# or VB.NET code-behind) is a key benefit. It allows for a more collaborative workflow between designers and developers. A UI designer can work on the XAML files using a visual tool like Expression Blend, while a developer can work on the code-behind files in Visual Studio. They can work in parallel, with the XAML and the code being linked together by the application.
While you can create a complete WPF application entirely in code, XAML is the standard and preferred method for defining the UI. The 70-548 Exam will expect you to be proficient in reading and writing XAML to define layouts, create controls, and set properties. It is the fundamental language of WPF.
A crucial aspect of UI design is arranging the controls on the screen. The 70-548 Exam requires a deep understanding of the WPF layout system, which is based on a set of powerful container controls called panels. Unlike the fixed-coordinate system of older frameworks, WPF's layout system is dynamic and adaptive. You place your controls inside a panel, and the panel is responsible for measuring and arranging its children based on a specific set of rules.
The most versatile and commonly used panel is the Grid. A Grid allows you to arrange elements in a flexible grid of rows and columns. You can define the size of the rows and columns to be a fixed pixel value, an automatic size based on their content, or a proportional (star) size that distributes the available space. This makes the Grid ideal for creating complex, structured layouts that adapt gracefully when the window is resized.
Another fundamental panel is the StackPanel. A StackPanel arranges its child elements in a single line, either horizontally or vertically. It is very simple to use and is perfect for creating simple lists or toolbars. The DockPanel is another useful container that allows you to "dock" its children to one of the four edges (top, bottom, left, or right), with the last element filling the remaining space.
Other panels include the WrapPanel, which arranges elements in a line and then wraps to the next line when it runs out of space, and the Canvas, which provides a simple area where you can position elements using explicit coordinates, similar to WinForms. The 70-548 Exam will expect you to know the characteristics of each of these panels and to be able to choose the appropriate one for a given layout requirement.
Once you have your layout defined with panels, you will populate it with controls to build your user interface. The 70-548 Exam expects you to be familiar with the rich set of controls provided by WPF. These controls are more flexible and powerful than their predecessors, as their appearance can be completely customized without changing their underlying behavior.
WPF provides a comprehensive set of standard controls that you would expect in any UI framework. This includes simple controls like Button, CheckBox, RadioButton, TextBlock (for displaying text), and TextBox (for user input). It also includes more complex controls like ListBox, ComboBox, ListView, and TreeView for displaying lists of data.
One of the key concepts that makes WPF controls so powerful is the idea of "lookless" controls. The behavior of a control (what it does) is separated from its visual representation (what it looks like). This means you can take a standard Button control and, by providing a new template, make it look like anything you want—a circle, an image, or a complex animated object—while it still behaves like a button. We will explore this concept of templating in the next part of this series.
WPF also includes a set of controls for creating menus, toolbars, and status bars, which are essential for building a professional application shell. It also has a rich document and printing framework, with controls like FlowDocumentReader for displaying rich text. A solid familiarity with this control toolbox is essential for answering the UI-related questions on the 70-548 Exam.
A unique and powerful feature of WPF that is covered on the 70-548 Exam is its flexible content model. In many older UI frameworks, certain controls could only contain specific types of content. For example, a button could typically only contain a simple text string. In WPF, many controls are designed to be much more flexible in what they can contain.
This is based on a class hierarchy. Controls that can only contain a single piece of content, like a Button or a Label, derive from the ContentControl class. The key feature of a ContentControl is that its Content property is of type Object. This means you can place almost anything inside it. You can put a simple string in a button's content, or you can put a panel that contains an image and a piece of text.
For controls that can contain a list of multiple items, like a ListBox or ComboBox, they derive from the ItemsControl class. The ItemsControl has an ItemsSource property that can be bound to a collection of data, and it will display each item in the collection.
This flexible content model is what allows for the creation of very rich and composite user interfaces. You can easily nest controls within other controls to build up a complex visual tree. For example, you could have a ListBox where each item in the list is not just a string of text, but is a complex user control containing an image, multiple text fields, and a button.
To understand how the WPF framework works under the hood, you must understand the concept of Dependency Properties. This is an advanced but fundamental topic for the 70-548 Exam. A dependency property is a special type of property that extends the standard .NET property system. Most of the common properties you set on WPF controls, like Width, Background, and Content, are dependency properties.
Dependency properties provide the underlying infrastructure for many of WPF's most powerful features, including data binding, styling, animations, and property value inheritance. For example, when you set the FontSize property on a top-level window, all the controls within that window will automatically inherit that font size. This is possible because FontSize is a dependency property.
A key feature of a dependency property is its built-in change notification system. When the value of a dependency property changes, the WPF framework is automatically notified, and it can then update the UI accordingly. This is what makes data binding work. When the source property in your data object changes, the dependency property on the UI control is updated, which then triggers a re-rendering of the UI.
While you will not often need to create your own custom dependency properties as an application developer, you must understand their role in the framework. The 70-548 Exam will expect you to know that they are the engine that powers many of WPF's key features.
Just as dependency properties are an evolution of standard .NET properties, Routed Events are the WPF evolution of standard .NET events. A solid understanding of routed events is a key objective of the 70-548 Exam. In a traditional eventing model, an event is raised by a specific object and can only be handled by code that is directly subscribed to that event. Routed events are more flexible.
A routed event can travel up or down the element tree in your XAML. There are three routing strategies. The most common is "bubbling," where the event is first raised by the source element (e.g., a TextBlock inside a Button), and if it is not handled, it then "bubbles up" to the parent element (the Button), and then to its parent (e.g., a Grid), and so on, all the way up to the root window.
This event bubbling allows you to handle events at a higher level in the tree. For example, instead of attaching a Click event handler to ten different buttons inside a grid, you can attach a single handler to the parent Grid. The click events from any of the buttons will bubble up to the grid, and you can handle them all in one place.
The other routing strategies are "tunneling," where the event travels down the tree from the root to the source, and "direct," which behaves like a standard .NET event. This powerful eventing system is fundamental to how WPF processes user input and manages the interaction between different parts of a complex UI.
Data binding is one of the most powerful and important features of Windows Presentation Foundation (WPF), and it is a major topic on the 70-548 Exam. Data binding is the mechanism that allows you to create a live connection between a property on a UI element (the target) and a property on a data object (the source). When the data in the source object changes, the UI element that is bound to it automatically updates to reflect that change, and vice-versa.
This feature dramatically simplifies the development of data-driven applications. In older frameworks, you would have to write a significant amount of "glue" code to manually populate your UI controls from your data objects and to update your data objects when the user made a change in the UI. Data binding automates this entire process. You simply declare the binding in your XAML, and the WPF framework handles all the synchronization for you.
For example, you can bind the Text property of a TextBox control directly to the Name property of a Customer object. When the Customer object is loaded, its name will automatically appear in the TextBox. If the user then types a new name into the TextBox, the Name property on the Customer object will be automatically updated.
This powerful, declarative approach to connecting your UI and your data is a core architectural principle of WPF. The 70-548 Exam will expect you to have a deep understanding of how to create and configure data bindings to build responsive and maintainable applications.
To control the flow of data between the source and the target, a WPF data binding can be configured with a specific binding mode. A thorough understanding of these modes is essential for the 70-548 Exam. The four primary binding modes are OneWay, TwoWay, OneTime, and OneWayToSource.
The most common mode is OneWay. In this mode, the data flows from the source to the target. If the source property changes, the target property is updated. This is ideal for displaying read-only data. For example, you would use a OneWay binding to display a customer's name in a TextBlock control.
TwoWay binding allows data to flow in both directions. If the source property changes, the target is updated, and if the user changes the value in the target UI control, the source property is automatically updated. This is essential for data entry forms. For example, you would use TwoWay binding for a TextBox that allows the user to edit a customer's address.
OneTime binding is similar to OneWay, but it only happens once, when the binding is first established. After that, any changes to the source property are ignored. This is useful for displaying static data that you know will not change. OneWayToSource is the reverse of OneWay, where data only flows from the target to the source. It is less commonly used. The 70-548 Exam will expect you to be able to choose the correct binding mode for a given scenario.
The data binding capabilities of WPF led to the widespread adoption of a powerful architectural design pattern called Model-View-ViewModel, or MVVM. The 70-548 Exam requires a solid understanding of this pattern, as it is the standard and recommended way to structure a WPF application. MVVM is designed to take full advantage of the separation of concerns that WPF enables. The pattern divides the application into three distinct components.
The Model represents the data and the business logic of your application. These are the classes that model your problem domain, such as Customer, Order, or Product. The model is completely independent of the user interface.
The View is the user interface itself. In WPF, the View is defined in XAML and consists of the windows, controls, and other visual elements that the user interacts with. The View should contain no application logic; its only job is to display information and to capture user input.
The ViewModel is the bridge between the Model and the View. It is a class that exposes the data from the Model in a way that is easy for the View to consume via data binding. For example, a CustomerViewModel would wrap a Customer model object and would expose properties like Name and Address that the View can bind to. It also exposes commands that the View can bind to for handling user actions, like clicking a "Save" button. This pattern creates a clean separation that makes the application easier to test, maintain, and evolve.
One of the challenges in a data-driven application is controlling how your data objects are visually represented in the UI. WPF solves this problem with a powerful feature called Data Templates, a key topic for the 70-548 Exam. A DataTemplate is a piece of XAML markup that defines the visual structure of a data object when it is displayed in the UI.
Data templates are most commonly used with ItemsControls, like a ListBox. By default, if you bind a ListBox to a collection of Customer objects, it will simply display the result of calling ToString() on each object, which is not very useful. However, by providing a DataTemplate, you can specify exactly how each Customer object should be rendered.
Your DataTemplate for a Customer object could be a Grid that contains several TextBlocks, with each TextBlock bound to a different property of the Customer, such as their name, phone number, and city. When the ListBox is rendered, it will apply this template to every Customer object in its ItemsSource, creating a rich, structured list.
You can define data templates as resources and even have the system automatically apply a specific template based on the data type of the object being displayed. This powerful feature allows you to completely separate your data from its presentation, which is a core principle of WPF and a concept you must understand for the 70-548 Exam.
Just as a DataTemplate allows you to change the visual representation of your data, a ControlTemplate allows you to completely redefine the visual structure of a control. This is the feature that enables the "lookless" nature of WPF controls, and it is a more advanced topic covered by the 70-548 Exam. Every standard WPF control has a default ControlTemplate that defines its appearance, but you can replace this template with your own custom XAML.
This provides an incredible amount of power and flexibility. For example, the default ControlTemplate for a Button consists of a border and a content presenter. By creating your own ControlTemplate, you can make a button look like anything you can imagine. You could create a template that makes the button appear as a circle with a custom icon, and you could define how it should look in different states, like when the mouse is hovering over it or when it is pressed.
Crucially, when you replace the ControlTemplate, you are only changing the control's appearance. The underlying behavior of the control remains the same. A button with a custom circular template will still raise a Click event when it is pressed. This separation of appearance and behavior is fundamental to WPF.
Control templates are the key to creating a unique and highly branded look and feel for your application. They allow a level of customization that was previously impossible without building your own custom controls from scratch. The 70-548 Exam will expect you to understand the purpose of a ControlTemplate and how it differs from a DataTemplate.
To ensure a consistent look and feel across your entire application, it is a bad practice to set properties like fonts, colors, and margins on every individual control. A much better approach, and a core concept for the 70-548 Exam, is to use Styles and Resources. A Style is a collection of property settings that can be applied to a control. It is analogous to a CSS style in web development.
You can create a Style that defines a set of properties, for example, a Style for a Button that sets its Background to blue, its Foreground to white, and its FontFamily to "Segoe UI." You can then apply this style to all the buttons in your application. This has two major benefits. First, it ensures that all your buttons have a consistent appearance. Second, it makes it incredibly easy to change the look of your application. If you want to change the color of all your buttons, you only need to modify the Style in one place.
Styles are typically defined as Resources. A resource is any object that can be shared and reused throughout your application. You can define resources, such as styles, templates, and color brushes, in a ResourceDictionary. These dictionaries can be defined at different levels, such as for a specific window or for the entire application.
By creating a central ResourceDictionary with all your application's styles and colors, you can effectively "theme" your application. This centralized, reusable approach to design is a key best practice for building large, maintainable WPF applications, and the 70-548 Exam will test your understanding of these concepts.
WPF provides a rich set of features for creating dynamic and interactive user experiences. Two of the key features for this are Triggers and Animations, which are important topics for the 70-548 Exam. A Trigger allows you to declaratively change the appearance of a control based on a change in a property's value. Triggers are most commonly used within a Style or a ControlTemplate.
For example, you could add a Trigger to a Button's Style that monitors the IsMouseOver property. The trigger would specify that when IsMouseOver is true, the button's Background color should change. This allows you to create interactive visual feedback for the user without writing any procedural code in the code-behind. You can also have event triggers that are fired when a specific routed event occurs.
Building on triggers, WPF includes a powerful and flexible animation framework. You can use animations to change the value of a dependency property over a period of time. For example, you can create an animation that gradually changes a button's width from 100 to 200 pixels over a period of half a second, creating a smooth growing effect.
You can animate almost any dependency property, including colors, positions, and transforms (like rotation and scaling). These animations can be defined directly in XAML and can be started and controlled by triggers. By combining styles, templates, triggers, and animations, a developer can create a highly polished and engaging user experience, which is one of the key strengths of the WPF platform.
Modern applications rarely exist in isolation. They need to communicate with other services and systems to retrieve and update data. The .NET Framework 3.5 introduced a unified programming model for this purpose called Windows Communication Foundation (WCF). WCF is a major pillar of the 70-548 Exam. It was designed to be a single framework for building service-oriented applications, replacing a variety of older, disparate Microsoft technologies like ASMX web services, .NET Remoting, and MSMQ.
The goal of WCF was to provide a flexible and interoperable way for applications to communicate, whether they were running on the same machine, across a corporate network, or over the internet. A single WCF service could be configured to expose itself over multiple different protocols and message formats to support a wide range of clients, from other .NET applications to Java clients or legacy systems.
For a WPF application developer, WCF was the standard way to communicate with a backend business logic layer or to consume data from an external service. The WPF application acts as the client, and it consumes the services exposed by the WCF server. This creates a clean, multi-tiered application architecture where the presentation logic in the client is separated from the business and data logic on the server.
It is important to note that WCF is now considered a legacy technology. The modern approach is to use technologies like REST APIs or gRPC. However, the 70-548 Exam is based on .NET 3.5, and a deep understanding of the principles and components of WCF is absolutely essential for it.
To understand how WCF works, you must master its three core concepts, often referred to as the "ABCs" of WCF. This is a fundamental topic for the 70-548 Exam. The ABCs define "where" a service is, "how" to talk to it, and "what" it can do.
The "A" stands for Address. The address is a unique location, typically a URL, that specifies where the WCF service is hosted. A client application needs this address to find and connect to the service. For example, an address might look like http://myserver/MyService.svc.
The "B" stands for Binding. The binding describes how the client and the service will communicate. It defines the transport protocol to be used (like HTTP, TCP, or MSMQ), the message encoding format (like text XML or optimized binary), and the security requirements (like whether the messages should be encrypted). WCF provides a set of pre-configured bindings for common scenarios, such as BasicHttpBinding for interoperability and NetTcpBinding for high performance between .NET applications.
The "C" stands for Contract. The contract is an agreement between the client and the service that describes the operations that the service exposes. The contract is defined in code using a .NET interface that is decorated with attributes. It specifies the names of the methods that a client can call, the parameters they take, and the values they return.
Together, the Address, Binding, and Contract form an Endpoint. A service exposes one or more endpoints, and a client consumes a specific endpoint to communicate with the service.
The 70-548 Exam will expect you to know the practical process of how a client application, such as one built with WPF, consumes a WCF service. In the .NET 3.5 era, Visual Studio provided excellent tooling to simplify this process. The standard approach was to use the "Add Service Reference" feature in Visual Studio.
This tool would ask for the address of the service's metadata endpoint (its MEX endpoint). The tool would then connect to the service, download its metadata (the contract and the binding information), and automatically generate a client-side proxy class and a configuration file. The proxy class is a local .NET class that mirrors the service's contract. It has all the same methods as the service, so from the client developer's perspective, calling the remote service is as simple as creating an instance of the proxy class and calling one of its methods.
The generated configuration file (app.config) would contain all the information about the service's endpoint, including its address and binding settings. This allowed the client to be configured to talk to different service endpoints (e.g., a test endpoint versus a production endpoint) without needing to recompile the application code.
In your WPF application, typically in the ViewModel of your MVVM pattern, you would write the code to create an instance of the WCF proxy client, call the desired service operation, and then use the data returned from the service to populate the properties that your View is bound to. This is the standard pattern for connecting a rich client to a service-oriented backend.
Before the widespread adoption of Object-Relational Mappers (ORMs), the primary way to interact with a database in .NET was through ADO.NET. The 70-548 Exam covers these foundational data access technologies. ADO.NET provides a set of classes for connecting to a database, executing commands, and retrieving data. It can operate in a connected or a disconnected mode.
In the connected mode, you use objects like SqlConnection to open a connection to the database, SqlCommand to define the query or stored procedure you want to run, and a SqlDataReader to read the results in a fast, forward-only stream. This is a very efficient way to read data, but it requires the database connection to remain open while you are processing the results.
The disconnected mode is based on the DataSet object. A DataSet is an in-memory representation of a small database. You use a SqlDataAdapter to execute a query and populate a DataSet with the results. You can then close the database connection and work with the data in the DataSet offline. A DataSet can contain multiple tables, relationships, and constraints. This disconnected model was very popular for rich client applications, as it allowed the application to retrieve a set of data and then allow the user to work with it without maintaining a persistent connection to the database.
While modern applications often use more advanced data access technologies, a solid understanding of the fundamentals of ADO.NET, including connection strings, commands, and the DataSet, is still valuable knowledge for any .NET developer.
A revolutionary feature introduced in .NET Framework 3.5, and a major topic for the 70-548 Exam, is Language-Integrated Query, or LINQ. LINQ provides a unified, SQL-like syntax for querying data, regardless of where that data comes from. It allows you to write strongly-typed queries directly in your C# or VB.NET code, with full IntelliSense and compile-time checking.
Before LINQ, if you wanted to query a collection of objects in memory, you would have to write complex loops and conditional statements. If you wanted to query an XML document, you would use XPath. If you wanted to query a database, you would write a SQL string. LINQ provides a single, consistent query syntax for all these different data sources.
The standard LINQ query operators include many familiar clauses from SQL, such as from, where, orderby, and select. For example, you could write a LINQ query to find all the customers in a List<Customer> object who live in a specific city. The query would look very similar to the equivalent SQL query, but it would be written directly in your C# code and would operate on your in-memory objects.
This ability to use a rich, declarative query language against any collection of objects that implements the IEnumerable interface is incredibly powerful. It makes data manipulation code much more concise, readable, and maintainable. LINQ is one of the most important and enduring features of the .NET platform.
Building on the power of LINQ, .NET 3.5 introduced the first Microsoft-supported Object-Relational Mapping (ORM) technologies. The 70-548 Exam covers these early ORMs, which were designed to bridge the gap between the object-oriented world of a .NET application and the relational world of a SQL Server database. The goal of an ORM is to automate the process of translating between database tables and .NET objects.
The first of these technologies was LINQ to SQL. LINQ to SQL was a lightweight and easy-to-use ORM that was specifically designed to work with SQL Server. It provided a visual designer in Visual Studio that allowed you to drag database tables onto a design surface. The tool would then automatically generate the corresponding .NET classes that mapped to those tables. You could then use standard LINQ queries on these generated classes to retrieve and update data, and LINQ to SQL would automatically translate your LINQ queries into SQL and execute them against the database.
Shortly after, the first version of the Entity Framework (EF) was released. Entity Framework was a more powerful and flexible ORM that could work with a variety of different databases, not just SQL Server. It introduced the concept of an Entity Data Model, which provided a more abstract way to model your data.
While these early versions of LINQ to SQL and EF have been superseded by the modern Entity Framework Core, they were the first step in moving .NET data access towards a more productive, object-oriented approach. The 70-548 Exam will expect you to understand the purpose and basic operation of these foundational ORM technologies.
As we conclude this part on communications and data, it is crucial to place the technologies of the 70-548 Exam in a modern context. Windows Communication Foundation (WCF) was a powerful and flexible framework, but the industry has largely moved towards a simpler and more lightweight approach for building services: RESTful APIs based on HTTP.
A modern .NET developer building a new application today would likely use ASP.NET Core Web API to create their backend services. These services expose endpoints over HTTP and typically communicate using JSON (JavaScript Object Notation), which is a much more lightweight data format than the XML/SOAP that was common with WCF. REST APIs are simpler to build, easier to consume from a wide variety of clients (including web browsers and mobile apps), and are the de facto standard for modern web-based communication.
Another emerging technology is gRPC. gRPC is a modern, high-performance remote procedure call (RPC) framework that is ideal for server-to-server communication where performance is critical. It uses a binary message format and is often more efficient than REST for internal microservices.
While WCF itself is now a legacy technology, the principles of service-oriented architecture that it championed are more relevant than ever. The skills you learn by studying WCF, such as defining contracts and understanding different bindings, provide a solid conceptual foundation for learning to build and consume modern REST and gRPC services. In the next part, we will explore the other major technologies of the .NET 3.5 era: workflow and application services.
In addition to UI and communications, the .NET Framework 3.5 introduced a third major pillar: Windows Workflow Foundation (WF). WF is a framework for building and executing long-running, stateful, and process-oriented applications. It is a key technology covered in the 70-548 Exam. The goal of WF was to provide a declarative model for defining business processes, separating the logic of the process from the code that implements the individual steps.
A workflow in WF is composed of a series of "activities." An activity is a single, reusable unit of work. WF provides a library of built-in activities for common tasks like executing a piece of code, calling a web service, or waiting for an event. Developers can also create their own custom activities. These activities are assembled into a flowchart-like model that represents the business process. This model can be created visually in a designer or defined in XAML.
WF is particularly well-suited for processes that involve long-running transactions or that require coordination between multiple systems or human actors. For example, a document approval process could be modeled as a workflow. The workflow would start when a document is submitted, then it would assign a task to a manager, wait for their approval, and then, based on the outcome, either send the document to the next stage or notify the originator of the rejection.
It is important to note that while WF was part of the .NET Framework, it does not have a direct, one-to-one replacement in the modern, cross-platform .NET. However, the concepts of declarative, process-oriented programming that it introduced are highly relevant to modern cloud-based workflow solutions. The 70-548 Exam will expect you to understand the fundamental concepts and purpose of WF.
The 70-548 Exam requires an understanding of how workflows are built and executed. There are two primary types of workflows that you can build with WF. The first is a Sequential workflow. As its name implies, a sequential workflow executes a series of activities in a predefined, linear order, similar to a traditional flowchart. It is ideal for processes that have a clear start, a defined sequence of steps, and a clear end.
The second type is a State Machine workflow. A state machine workflow is a more event-driven model. It consists of a set of states, and the workflow moves from one state to another in response to external events. A state machine is perfect for modeling processes where the flow is not strictly linear and can change based on user actions or system events. For example, an order processing system could be modeled as a state machine with states like "New," "Awaiting Payment," "Shipped," and "Completed."
Once a workflow is defined, it needs to be hosted and executed by the WF runtime engine. The runtime is responsible for creating instances of the workflow, scheduling the execution of its activities, and managing its state. You can host the WF runtime in any .NET application, from a simple console application to a sophisticated server process.
For long-running workflows that may be idle for long periods while waiting for an event, the runtime includes a "persistence" service. This service can automatically save the state of an idle workflow instance to a database and then unload it from memory. When the event that the workflow was waiting for finally occurs, the runtime can reload the workflow's state from the database and resume its execution from where it left off.
A key challenge in any rich client application is ensuring that the user interface remains responsive, even when the application is performing a long-running task, such as querying a large database or calling a slow web service. The 70-548 Exam covers the principles of multithreading that are used to solve this problem. If you perform a long-running operation on the main UI thread, the entire application will freeze and become unresponsive until that operation is complete.
The solution is to perform these long-running tasks on a separate, background thread. This allows the main UI thread to remain free to process user input and to keep the interface responsive. In the .NET Framework 3.5 era, the simplest and most common tool for managing background operations in a WPF or WinForms application was the BackgroundWorker component.
The BackgroundWorker component provides an easy-to-use, event-based model for multithreading. You place your long-running code in the handler for the DoWork event. The BackgroundWorker will automatically execute this code on a background thread from the thread pool. It also provides events, like ProgressChanged and RunWorkerCompleted, that are safely marshaled back to the UI thread. This allows you to update the UI with the progress of the operation or with its final result without needing to write complex thread synchronization code.
A critical concept in WPF multithreading is the Dispatcher. Every UI element in WPF is owned by the UI thread. You cannot directly modify a UI element from a background thread. The Dispatcher is an object that allows you to schedule a piece of code to be executed on the UI thread. The BackgroundWorker uses this mechanism internally to safely raise its completion events.
No application is perfect, and things can and will go wrong. A key part of designing a professional application, and a topic for the 70-548 Exam, is to implement a robust strategy for handling exceptions. An unhandled exception will cause a .NET application to crash, which provides a very poor user experience. A good exception handling strategy is about gracefully catching errors, informing the user in a helpful way, and allowing the application to continue running if possible.
The primary mechanism for handling errors in .NET is the try...catch...finally block. You should place any code that has the potential to throw an exception, such as file I/O operations or database calls, inside a try block. You then write one or more catch blocks to handle the specific types of exceptions that you expect might occur. For example, you might have a catch block for a FileNotFoundException and another for a SqlException.
It is important to be specific in your catch blocks. Catching the generic Exception class should be avoided, as it can hide bugs and make troubleshooting difficult. Your catch block should perform a specific, useful action, such as logging the detailed error information to a file for later analysis and displaying a user-friendly error message to the user.
The finally block is an optional block that is always executed, regardless of whether an exception was thrown or not. This is the ideal place to put any cleanup code, such as closing a database connection or disposing of a resource, to ensure that these actions are always performed. A structured and disciplined approach to exception handling is a hallmark of a professional developer.
The 70-548 Exam includes objectives related to the security model of the .NET Framework 3.5. The primary security framework of that era was Code Access Security, or CAS. It is very important to understand that CAS is now considered an obsolete technology and has been removed from modern versions of .NET. However, for the historical context of the exam, it is important to understand its purpose.
The goal of CAS was to provide a fine-grained security model based on the origin and identity of the code, rather than just the identity of the user running it. The .NET runtime would examine the evidence of an assembly (such as where it was loaded from or its digital signature) and would grant it a specific set of permissions. For example, code that was loaded from the local machine would be granted full trust, while code that was loaded from an untrusted internet site would be run in a restricted "sandbox" with very limited permissions.
This allowed the runtime to prevent untrusted code from performing malicious actions, such as accessing the local file system or making network connections. This was particularly important for technologies like ClickOnce, where applications were downloaded and run from the web.
While CAS itself is no longer used, the principle of running code with the least privilege necessary is still a fundamental security best practice. Modern operating systems and application frameworks provide different, more effective sandboxing and security mechanisms to achieve similar goals. For the 70-548 Exam, you should understand the historical purpose of CAS as a code-based security mechanism.
Deploying and updating a traditional Windows desktop application can be a challenging process. It often involves creating complex installer packages and can require administrative privileges on the client machine. The 70-548 Exam covers a technology called ClickOnce, which was designed to simplify this process dramatically. ClickOnce is a deployment technology that allows you to publish a Windows application to a web server or a network file share.
Users can then install and run the application simply by clicking on a link in a web page or from a file share. The application is downloaded to a secure, isolated cache on the user's machine and is run in a sandboxed environment. This means that a standard user without administrative rights can install a ClickOnce application.
One of the most powerful features of ClickOnce is its support for automatic updates. When you publish a new version of your application to the server, you can configure it so that the next time a user launches the application, it will automatically detect that a new version is available, download it, and update itself. This makes the process of keeping your user base on the latest version of the software incredibly simple and seamless.
ClickOnce also provides features for managing the application's trust level and permissions, which integrated with the Code Access Security framework. While it has been somewhat superseded by modern deployment technologies like MSIX, ClickOnce was a revolutionary feature for its time and provided a web-like deployment experience for rich client applications.
Go to testing centre with ease on our mind when you use Microsoft 70-548 vce exam dumps, practice test questions and answers. Microsoft 70-548 PRO: Designing and Developing Windows-Based Applications by Using the Microsoft .NET Framework (C#, C++ and VB) 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-548 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.