SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
Upgrade your WCF skills to "Expert"
(Advanced WCF Workshop)
Ido Flatow, Senior Architect
Sela Group
About Me
• Senior architect, Sela Group
• Co-author of:
– Developing Windows Azure and Web
Services – Microsoft official course
– WCF 4 – Microsoft official course
– Pro .NET Performance – Apress

• Microsoft MVP
• Focus on server, services, and cloud
technologies
• Manager of the Israeli Web
Developers User Group
Agenda for Today
•
•
•
•

Monitoring Services
Performance Considerations
WCF Security
Extending the WCF Pipeline

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Monitoring Services
Monitoring WCF Services
• Post Factum
– Tracing
– Message logs

• Real-time
– Performance counters
– Event Tracing information
– Windows Management Instrumentation (WMI)
– Message sniffing tools
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Tracing and WCF
• Various levels of tracing
–
–
–
–
–

Critical (fatal exceptions)
Error (any exception)
Warning (limits reached)
Information (basic monitoring)
Verbose (everything)

• Can be used in clients and services
• End-to-End tracing for service chains
• Supports emitting custom tracing to the same file
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Configuring Tracing

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Viewing Trace Logs with SvcTraceViewer
End-to-End
Activity Tracing

Additional
information, including
exceptions
Informative (white)
Warnings (yellow)
Exceptions (red)
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
End-To-End Tracing
•
•
•
•
•

Each traced activity has an ID
Activity ID can travel within the AppDomain
WCF can propagate the ID to chained services
Track processing and exceptions across services
Use the service trace viewer to see the logs together

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Viewing End-To-End Traces

ServiceA.svclog

ServiceB.svclog

ServiceC.svclog

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Viewing End-To-End Traces

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Tracing an Exception End-To-End

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Tracing an Exception End-To-End

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Adding Your Own Trace Messages
•
•
•
•

Create your own trace source
Use the same listener for both sources
Use System.Diagnostics.TraceSource to log events
You can also group events into a new activity

TraceSource ts = new TraceSource("MyTraceSource");
ts.TraceInformation("Doing some processing...");
if (needToThrowAnException)
{
ts.TraceEvent(TraceEventType.Warning, 1, "Going to throw an exception!");
throw new ArgumentException();
}

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

END-TO-END TRACING
WCF Message Logging
• Logs request and response messages
• Supports logging of sensitive information
– Entire message, including the body
– Decrypted messages (service level)
– Username and password (known PII)

• Use it cautiously
–
–
–
–

Logging large content requires more time
Be careful logging sensitive information
If using IIS, don’t expose it in a vdir
Use ACLs on the log file

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Enabling Message Logging

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Viewing Message in SvcTraceViewer

HTTP
Headers

Requests and
Responses

SOAP
Headers

Message body
(log entire message)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Messages and Tracing Go Together!
• Combine message
logging with tracing
• Get the whole picture
• Simply load both files
to the same service
trace viewer
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Tracing – What the Heck is ETW?
•
•
•
•
•
•

Event Tracing for Windows
Fast tracing solution supplied by the operating system
Kernel-mode logging mechanism
Logging can be enabled/disabled at runtime
Trace is logged to an in-memory buffer
Buffers are written to the disk asynchronously

• Exists since Windows 2000!
• WCF uses ETW!! And so can you!!!
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
WCF Runtime Tracing in Three Steps

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

RUNTIME TRACING WITH ETW
Enabling WMI
• WCF services can expose configuration
information using WMI
• The WMI provider is turned off by default

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Watch WMI Information
Use WMI tools to view information about a running service

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Change Settings at Runtime with WMI
• WMI Admin Tools (http://bit.ly/wmiadmin)
(Requires running in IE9 Compatibility)
• PowerShell scripts with Get-WmiObject

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

CONTROLLING MESSAGE LOGGING
AT RUNTIME
Sniffing the Network
• Many applications can be used to
monitor WCF communication
–
–
–
–

Microsoft Network Monitor
Wireshark
HTTP Analyzer
HTTP Only
Fiddler

• Sniffing tools usually have problems
listening to the loopback adapter (localhost)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Sniffing HTTP with Fiddler
• Content types
–
–
–
–
–

XML
JSON
Binary Encoding
Base64 Strings
Gzip Compression

• Features
– Record & Replay
– Break & Change
– HTTPS Sniffing
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Sniffing HTTP with Fiddler
• Content types
–
–
–
–
–

XML
JSON
Binary Encoding
Base64 Strings
Gzip Compression

• Features
– Record & Replay
– Break & Change
– HTTPS Sniffing
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

SNIFFING WCF MESSAGES
Performance Counters
• WCF has a wide collection of performance
counters
• Counters can be collected for a service, an
endpoint, or a specific operation

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Performance Considerations
To Create or Not To Create?
• When is a service instance created?
– Depends on the ServiceBehaviorAttribute
– Depends which binding you use

• What are my options?
–
–
–
–

Per call
Per session (default, if supported by the binding)
Single instance
Custom (implement the IInstanceProvider interface)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Pros and Cons of Instancing
• Per call
–
–
–
–

Creating an instance is usually cheap
Services should be stateless by design (better scalability)
Instance is disposed when finished, no book keeping
Performance hit when initialization requires time / memory / CPU

• Per session
–
–
–
–

Save state between client calls
One-time initialization, low performance hit
Requires keeping instance alive
Behaves badly when scaled

• Single
–
–
–
–

Share global state without using static fields
Reduces performance hit substantially when initialization is long
Can lead to concurrency issues if state is shared
Very problematic to scale (distributed state)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Opening the Throttle
• Service host defines throttling levels
– Max concurrent calls
– Max session instances to managed
– Max instances (running + idle sessions)

• WCF 3.5 defaults ≠ WCF 4/4.5 defaults
– WCF 3.5 – 16 calls, 10 sessions
– WCF 4+ – 16xCores calls, 100xCores sessions

• ServiceThrottling behavior controls the throttle

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

TESTING THE THROTTLE
Instancing and Concurrency
• Can concurrent calls be executed using the same
instance?
– Per call – no such scenario, each call has its instance
– Per session – a client can call multiple requests
asynchronously
– Single – very probable, clients can call at the same time

• Which concurrency modes exist in WCF?
– Single. Only one thread can use the instance at a time
– Multiple. Many threads can use the instance at a time

• What is the default?
– Single – BEWARE !!
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Concurrency Explained
• When an operation is executed within an
instance, the instance gets locked
• While the instance is locked, no other thread
can use the instance
• With multiple, no locks are used
Client A
Service
Client B

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
What Can Possibly Happen?
• Single concurrency
– Requests will get synchronized
– Requests might reach timeout limits

• Multiple concurrency
–
–
–
–

Concurrency issues in code
End up using critical sections
Critical sections will lead to synchronization
Critical sections are hard to test

• Recommendations
– Prefer using Per-Call instancing
– Minimize the state managed by the instance
– Use thread-safe types in your state
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Reentrant
Mixing Single and Multiple
• What if the running operation needs to call another
service? Or invoke a callback in the client (duplex)?
• Instance is still locked, and won’t handle other requests
• Such scenarios can even lead to deadlock (why?)
• Reentrant – releases the lock when an outgoing WCF
call is detected
Client A
Service
Client B

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

TESTING CONCURRENCY
Handling Many Calls. How Many is Many?
•
•
•
•
•

WCF uses the Thread Pool’s I/O threads
Default maximum number of threads - 1000
You can increase the limit, is that wise?
What if you have many lengthy operations?
“I heard asynchronous service operations
might help”, indeed?

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
The Truth Behind Async Service Operations
• Async operations allow running our code on another
thread, releasing the current thread back to the pool
• But isn’t the other thread just another pooled thread?
• True for CPU work, not true for I/O work
• Use async operations only when doing lengthy I/O
operations (disk, network, db)
• Use the async I/O method calls
– Stream.BeginRead, SqlCommand.BeginExecuteReader

• Using async operations for CPU intensive
work may decrease performance (why?)
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Call to Action
The WCF Thread Pool Bug
• Increasing the min I/O threads helps dealing
with bursts of requests
• In WCF 3.5 and WCF 4 there is a bug in the
Thread Pool usage
• Under continuous load, the counter for
available I/O threads starts to fake
• Result – WCF cannot scale fast enough to
handle the burst, and requests get queued
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Call to Action
The WCF Thread Pool Bug
• What to do? Change WCF to use worker
threads
• http://bit.ly/wcf-threadpool-bug
• Resolved in WCF 4.5
• Worker threads also have default maximum
number of threads
– .NET 3.5 – 250 threads per core
– .NET 4 – 1023 threads (32-bit), or 32768 (64-bit)
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Call to Action
TCP Port Sharing Bug
•
•
•
•

WCF introduced port sharing for TCP
Managed by a Windows Service (SMSvcHost.exe)
IIS automatically uses port sharing for TCP endpoints
WCF 4 has a known bug in the port sharing Windows
service that can cause it to stop responding
• What to do? Install the hotfix!
• http://support.microsoft.com/kb/2536618
• To diagnose network errors, turn on tracing in the port
sharing service (http://bit.ly/wcf-portsharing-trace)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Know Thy Settings
• Service behavior
– Throttling
– Concurrency / Instancing
– DataContractSerializer

• Binding configuration
–
–
–
–
–
–

Network timeouts (opening, sending, receiving, closing)
MaxReceivedMessageSize
MaxBufferSize
ReaderQuotas
MaxConnections (TCP binding)
InactivityTimeout (Reliable Session)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Know Thy Settings – cont.
• Thread Pool
– Minimum settings - fast response for bursts
– Maximum settings – more concurrent calls

• IIS classic pipeline (system.web section)
– MinFreeThreads / MinLocalRequestFreeThreads
(HttpRuntime)
– AutoConfig (ProcessModel, in machine.config)

• IIS Integrated mode
– MaxConcurrentRequestsPerCPU registry key
HKLMSOFTWAREMicrosoftASP.NET{FW}
– Application Pool’s CLRConfigFile setting

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Limits and Timeout Settings – cont.
• IIS/ASP.NET limitations
– ExecutionTimeout (in release mode)
– MaxRequestLength

• system.webServer | security | requestFiltering
– maxAllowedContentLength

• Outgoing HTTP communication
– System.Net.ServicePointManager.DefaultConnectionLimit
More information and workarounds in the following link
http://bit.ly/asp-iis-threading
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
And One Final Tip

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Security
Securing a Service
• Message Protection
– Integrity
– Confidentiality

• Authentication
– Client Authentication
– Service Authentication

• Authorization
– Role-based Authorization
– Claim-based Authorization

• Auditing
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Transport Security
• With transport security, the operating system
handles the protection of the channel
• Supported for HTTP (SSL over HTTPS), TCP, IPC,
and MSMQ
• Requires a service certificate
• IIS is easy – assign certificate to HTTPS binding
• Self-hosting is less fun – need to use netsh
• Self-Signed certificates are no fun at all!!
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
How Secure Sockets Layer Works
3. Client verifies certificate’s
authenticity
1. Client requests a secured session
2. Server responds with an X.509 certificate
4. Client sends a symmetric encryption key
(encrypted with the server’s public key)
6. Client and server exchange encrypted messages
(encrypted with the symmetric key)

5. Server decrypts the encryption
key with its private key
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

CREATING, INSTALLING, AND USING
CERTIFICATES
Message Security
• WCF handles everything
• Used by default in WsHttpBinding
• Secure the channel using either:
– Service Certificate
– Windows Identities (service + client)

• Certificate validation can be handled in code
– Change the CertificateValidationMode
– Create your own validation code
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Service Authentication
• By default, WCF uses negotiation to authenticate
the service against the client
• The implementation of WS-Trust is not fully
interoperable (e.g. Java)
• If using non-WCF clients, turn off negotiation and
use Out-of-Band (ahead of time) authentication
• In the binding configuration (service + client), set
NegotiateServiceCredential to false
• In the client endpoint configuration, add the
identity element and set the service’s credentials
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Steps for Out-of-Band Authentication
• Service Certificate
– Install the certificate on the client machine
– Set the client endpoint’s identity to the certificate

• Windows Credentials
– If you use a system account (NetworkService, LocalSystem)
the machine’s Service Principal Name (SPN) is used
– If you use a domain account, register a new SPN in Active
Directory, and set the SPN identity in the service endpoint
– Set the client endpoint’s identity to the SPN

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

MESSAGE SECURITY AND
CERTIFICATES
Impersonation
• A WCF service can impersonate the client’s
Windows identity
• Clients must use a domain account
• If the client is ASP.NET, the app pool must use
a domain account, or also use impersonation
• Three ways to impersonate
– [OperationBehavior(Impersonation = ImpersonationOption.Required)]
– ServiceSecurityContext.Current.WindowsIdentity.Impersonate()
– <serviceAuthorization impersonateCallerForAllOperations="true"/>
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Delegation
• Impersonating a client only works for one hop
– Access local resources and local services

• To call another hop you need delegation
– Access remote services, databases, and file shares

• Delegation requires enabling the account and the
machine for delegation in the Active Directory
• Verify support for delegation in your service before you call
out:
WindowsIdentity.ImpersonationLevel ==
TokenImpersonationLevel.Delegation
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

USING IMPERSONATION AND
DELEGATION
Extending the Pipeline
The WCF Service Pipeline
Channel Dispatcher
Channel Stack
Transport

Service Instance

Encoder

Protocol

Protocol

Endpoint Dispatcher

Service
Method

Dispatch
Operation

Service
Method

Dispatch
Operation

Join the conversation on Twitter: @SoftArchConf #SoftArchConf

Dispatch
Runtime
The WCF Client Has a Pipeline Too
Client Channel
Client Code

Client Proxy
Client
Operation

Method

Client
Runtime

Client
Operation

Method

Channel Stack
Transport

Encoder

Join the conversation on Twitter: @SoftArchConf #SoftArchConf

Protocol

Protocol
Where Can We Interfere?
Where

What

One/Many

Client/Service

Many

Service

Channel Dispatcher

Error Handler

Channel Stack

Message Encoder

One

Both

Address Filter

One

Service

Contract Filter

One

Service

Operation Selector

One

Service

Message Inspector

Many

Both

Instance Context Initializer

Many

Service

Instance Provider

One

Service

Message Formatter

One

Both

Parameter Inspector

One

Both

Many

Service

Endpoint Dispatcher

Dispatch / Client
Runtime

Dispatch / Client
Operation

Operation Invoker

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
How Do We Interfere?

•
•
•
•

Through Behaviors!
Behaviors tune the WCF pipeline to your needs
Write your own custom behavior
Attach the behavior to the WCF pipeline
– Code (custom attribute)
– Configuration (add to the behaviors section)

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Which Custom Behavior to Use?
• IServiceBehavior
– Implement as a custom attribute or a configuration element
– Apply behavior for service, channels, endpoints, and operations

• IEndpointBehavior
– Implement as a configuration element
– Apply behavior for specific endpoints and their operations

• IContractBehavior
– Implement as a custom attribute
– Apply behavior for specific contracts and their operations

• IOperationBehavior
– Implement as a custom attribute
– Apply behavior for specific operations

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Demo

CREATING A CUSTOM ERROR
HANDLER
Summary
• WCF has many hidden gems
• WCF has at least as many unknowns
• No course or lecture can replace
experience
• Perhaps now it will be easier to
connect the dots
Join the conversation on Twitter: @SoftArchConf #SoftArchConf
What’s New in WCF 4.5
Ido Flatow, Senior Architect
Sela Group
Resources
• Sites, forums, and blogs
– WCF Developer Center
msdn.microsoft.com/en-us/library/dd456779.aspx
– MSDN’s WCF Forum
social.msdn.microsoft.com/Forums/en/wcf
– Blogs about WCF
blogs.msdn.com/b/carlosfigueira
blogs.msdn.com/b/endpoint
blogs.msdn.com/b/drnick
– Many WCF code samples
bit.ly/wcf-wf-samples

• Presentation & code samples
– sdrv.ms/1a6RyB5

• My Info
– blogs.microsoft.co.il/blogs/idof
– idof@sela.co.il
– @IdoFlatow

Join the conversation on Twitter: @SoftArchConf #SoftArchConf
Why Not Ditch WCF and Switch to
One Slide about ASP.NET Web API
Web API
• WCF support non-HTTP bindings, such as TCP and
Named Pipes
• WCF supports message patterns, such as one-way
and message queue
• WS-* adds infrastructure features such as reliable
sessions, message security, and transactions
• SOAP-based services support detailed description
of the service with WSDL
More on WCF and ASP.NET Web API history
http://bit.ly/wcf-vs-webapi
Join the conversation on Twitter: @SoftArchConf #SoftArchConf

Más contenido relacionado

La actualidad más candente

Web services, WCF services and Multi Threading with Windows Forms
Web services, WCF services and Multi Threading with Windows FormsWeb services, WCF services and Multi Threading with Windows Forms
Web services, WCF services and Multi Threading with Windows FormsPeter Gfader
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformJeffrey T. Fritz
 
Web Server-Side Programming Techniques
Web Server-Side Programming TechniquesWeb Server-Side Programming Techniques
Web Server-Side Programming Techniquesguest8899ec02
 
Server-side Java Programming
Server-side Java ProgrammingServer-side Java Programming
Server-side Java ProgrammingChris Schalk
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with FiddlerIdo Flatow
 
Web development with ASP.NET Web API
Web development with ASP.NET Web APIWeb development with ASP.NET Web API
Web development with ASP.NET Web APIDamir Dobric
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQRob Davies
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Peter R. Egli
 
Server side programming
Server side programmingServer side programming
Server side programmingSayed Ahmed
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 
10 Tricks and Tips for WCF
10 Tricks and Tips for WCF10 Tricks and Tips for WCF
10 Tricks and Tips for WCFBarry Dorrans
 
Server Side Programming
Server Side ProgrammingServer Side Programming
Server Side ProgrammingMilan Thapa
 
Server-Side Programming Primer
Server-Side Programming PrimerServer-Side Programming Primer
Server-Side Programming PrimerIvano Malavolta
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 

La actualidad más candente (20)

Web services, WCF services and Multi Threading with Windows Forms
Web services, WCF services and Multi Threading with Windows FormsWeb services, WCF services and Multi Threading with Windows Forms
Web services, WCF services and Multi Threading with Windows Forms
 
WCF Fundamentals
WCF Fundamentals WCF Fundamentals
WCF Fundamentals
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
 
Web Server-Side Programming Techniques
Web Server-Side Programming TechniquesWeb Server-Side Programming Techniques
Web Server-Side Programming Techniques
 
Server-side Java Programming
Server-side Java ProgrammingServer-side Java Programming
Server-side Java Programming
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with Fiddler
 
Soap xp-wg
Soap xp-wgSoap xp-wg
Soap xp-wg
 
Web development with ASP.NET Web API
Web development with ASP.NET Web APIWeb development with ASP.NET Web API
Web development with ASP.NET Web API
 
WCF And ASMX Web Services
WCF And ASMX Web ServicesWCF And ASMX Web Services
WCF And ASMX Web Services
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)
 
Server side programming
Server side programmingServer side programming
Server side programming
 
A Bit of REST
A Bit of RESTA Bit of REST
A Bit of REST
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
10 Tricks and Tips for WCF
10 Tricks and Tips for WCF10 Tricks and Tips for WCF
10 Tricks and Tips for WCF
 
Server Side Programming
Server Side ProgrammingServer Side Programming
Server Side Programming
 
Server-Side Programming Primer
Server-Side Programming PrimerServer-Side Programming Primer
Server-Side Programming Primer
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)
 
Http/2
Http/2Http/2
Http/2
 

Destacado

Project Management with SharePoint 2010
Project Management with SharePoint 2010Project Management with SharePoint 2010
Project Management with SharePoint 2010Greg Kiefer
 
Beginning with wcf service
Beginning with wcf serviceBeginning with wcf service
Beginning with wcf serviceBinu Bhasuran
 
Wcf architecture overview
Wcf architecture overviewWcf architecture overview
Wcf architecture overviewArbind Tiwari
 
Angularjs interview questions and answers
Angularjs interview questions and answersAngularjs interview questions and answers
Angularjs interview questions and answersprasaddammalapati
 
Angular.js interview questions
Angular.js interview questionsAngular.js interview questions
Angular.js interview questionscodeandyou forums
 
2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil MughalAdil Mughal
 
Powershell For Developers
Powershell For DevelopersPowershell For Developers
Powershell For DevelopersIdo Flatow
 
The Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureThe Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureIdo Flatow
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0Ido Flatow
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applicationsIdo Flatow
 
WPF For Beginners - Learn in 3 days
WPF For Beginners  - Learn in 3 daysWPF For Beginners  - Learn in 3 days
WPF For Beginners - Learn in 3 daysUdaya Kumar
 
WCF (Windows Communication Foundation)
WCF (Windows Communication Foundation)WCF (Windows Communication Foundation)
WCF (Windows Communication Foundation)ipower softwares
 
IIS for Developers
IIS for DevelopersIIS for Developers
IIS for DevelopersIdo Flatow
 

Destacado (20)

WCF 4.0
WCF 4.0WCF 4.0
WCF 4.0
 
Wcf development
Wcf developmentWcf development
Wcf development
 
Making WCF Simple
Making WCF SimpleMaking WCF Simple
Making WCF Simple
 
Project Management with SharePoint 2010
Project Management with SharePoint 2010Project Management with SharePoint 2010
Project Management with SharePoint 2010
 
An Overview Of Wpf
An Overview Of WpfAn Overview Of Wpf
An Overview Of Wpf
 
Advanced WCF
Advanced WCFAdvanced WCF
Advanced WCF
 
Beginning with wcf service
Beginning with wcf serviceBeginning with wcf service
Beginning with wcf service
 
Wcf architecture overview
Wcf architecture overviewWcf architecture overview
Wcf architecture overview
 
Wcf for the web developer
Wcf for the web developerWcf for the web developer
Wcf for the web developer
 
Angularjs interview questions and answers
Angularjs interview questions and answersAngularjs interview questions and answers
Angularjs interview questions and answers
 
Angular.js interview questions
Angular.js interview questionsAngular.js interview questions
Angular.js interview questions
 
2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal
 
Threads c sharp
Threads c sharpThreads c sharp
Threads c sharp
 
Powershell For Developers
Powershell For DevelopersPowershell For Developers
Powershell For Developers
 
The Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureThe Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with Azure
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applications
 
WPF For Beginners - Learn in 3 days
WPF For Beginners  - Learn in 3 daysWPF For Beginners  - Learn in 3 days
WPF For Beginners - Learn in 3 days
 
WCF (Windows Communication Foundation)
WCF (Windows Communication Foundation)WCF (Windows Communication Foundation)
WCF (Windows Communication Foundation)
 
IIS for Developers
IIS for DevelopersIIS for Developers
IIS for Developers
 

Similar a Advanced WCF Workshop

Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...
Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...
Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...EC-Council
 
BSIDES-PR Keynote Hunting for Bad Guys
BSIDES-PR Keynote Hunting for Bad GuysBSIDES-PR Keynote Hunting for Bad Guys
BSIDES-PR Keynote Hunting for Bad GuysJoff Thyer
 
Lares from LOW to PWNED
Lares from LOW to PWNEDLares from LOW to PWNED
Lares from LOW to PWNEDChris Gates
 
Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015Chris Tankersley
 
Ch 10: Attacking Back-End Components
Ch 10: Attacking Back-End ComponentsCh 10: Attacking Back-End Components
Ch 10: Attacking Back-End ComponentsSam Bowne
 
Ch 13: Attacking Other Users: Other Techniques (Part 1)
Ch 13: Attacking Other Users:  Other Techniques (Part 1)Ch 13: Attacking Other Users:  Other Techniques (Part 1)
Ch 13: Attacking Other Users: Other Techniques (Part 1)Sam Bowne
 
Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)ClubHack
 
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
Parallel and Asynchronous Programming -  ITProDevConnections 2012 (English)Parallel and Asynchronous Programming -  ITProDevConnections 2012 (English)
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)Panagiotis Kanavos
 
Building Awesome APIs with Lumen
Building Awesome APIs with LumenBuilding Awesome APIs with Lumen
Building Awesome APIs with LumenKit Brennan
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsRonny López
 
Apache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream ProcessorApache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream ProcessorAljoscha Krettek
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NETYaniv Uriel
 
CNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End ComponentsCNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End ComponentsSam Bowne
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfOrtus Solutions, Corp
 
Running microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiDRunning microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiDCODEiD PHP Community
 
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...Flink Forward
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 

Similar a Advanced WCF Workshop (20)

Powering up on power shell avengercon - 2018
Powering up on power shell   avengercon - 2018Powering up on power shell   avengercon - 2018
Powering up on power shell avengercon - 2018
 
Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...
Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...
Hacker Halted 2014 - RDP Fuzzing And Why the Microsoft Open Protocol Specific...
 
BSIDES-PR Keynote Hunting for Bad Guys
BSIDES-PR Keynote Hunting for Bad GuysBSIDES-PR Keynote Hunting for Bad Guys
BSIDES-PR Keynote Hunting for Bad Guys
 
How we use Twisted in Launchpad
How we use Twisted in LaunchpadHow we use Twisted in Launchpad
How we use Twisted in Launchpad
 
Lares from LOW to PWNED
Lares from LOW to PWNEDLares from LOW to PWNED
Lares from LOW to PWNED
 
Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015
 
Ch 10: Attacking Back-End Components
Ch 10: Attacking Back-End ComponentsCh 10: Attacking Back-End Components
Ch 10: Attacking Back-End Components
 
Ch 13: Attacking Other Users: Other Techniques (Part 1)
Ch 13: Attacking Other Users:  Other Techniques (Part 1)Ch 13: Attacking Other Users:  Other Techniques (Part 1)
Ch 13: Attacking Other Users: Other Techniques (Part 1)
 
Powering up on PowerShell - BSides Greenville 2019
Powering up on PowerShell  - BSides Greenville 2019Powering up on PowerShell  - BSides Greenville 2019
Powering up on PowerShell - BSides Greenville 2019
 
Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)
 
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
Parallel and Asynchronous Programming -  ITProDevConnections 2012 (English)Parallel and Asynchronous Programming -  ITProDevConnections 2012 (English)
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
 
Building Awesome APIs with Lumen
Building Awesome APIs with LumenBuilding Awesome APIs with Lumen
Building Awesome APIs with Lumen
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP Applications
 
Apache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream ProcessorApache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream Processor
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
 
CNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End ComponentsCNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End Components
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
 
Running microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiDRunning microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiD
 
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 

Más de Ido Flatow

Google Cloud IoT Core
Google Cloud IoT CoreGoogle Cloud IoT Core
Google Cloud IoT CoreIdo Flatow
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
Production Debugging War Stories
Production Debugging War StoriesProduction Debugging War Stories
Production Debugging War StoriesIdo Flatow
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...Ido Flatow
 
Building IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on AzureBuilding IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on AzureIdo Flatow
 
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldIdo Flatow
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Ido Flatow
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2Ido Flatow
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Ido Flatow
 
IaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute SolutionsIaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute SolutionsIdo Flatow
 
ASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsIdo Flatow
 
Debugging with Fiddler
Debugging with FiddlerDebugging with Fiddler
Debugging with FiddlerIdo Flatow
 
Caching in Windows Azure
Caching in Windows AzureCaching in Windows Azure
Caching in Windows AzureIdo Flatow
 
Automating Windows Azure
Automating Windows AzureAutomating Windows Azure
Automating Windows AzureIdo Flatow
 

Más de Ido Flatow (16)

Google Cloud IoT Core
Google Cloud IoT CoreGoogle Cloud IoT Core
Google Cloud IoT Core
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Production Debugging War Stories
Production Debugging War StoriesProduction Debugging War Stories
Production Debugging War Stories
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
 
Building IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on AzureBuilding IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on Azure
 
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
 
IaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute SolutionsIaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute Solutions
 
ASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP Fundamentals
 
Debugging with Fiddler
Debugging with FiddlerDebugging with Fiddler
Debugging with Fiddler
 
Caching in Windows Azure
Caching in Windows AzureCaching in Windows Azure
Caching in Windows Azure
 
Automating Windows Azure
Automating Windows AzureAutomating Windows Azure
Automating Windows Azure
 

Último

UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 

Último (20)

201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 

Advanced WCF Workshop

  • 1. Upgrade your WCF skills to "Expert" (Advanced WCF Workshop) Ido Flatow, Senior Architect Sela Group
  • 2. About Me • Senior architect, Sela Group • Co-author of: – Developing Windows Azure and Web Services – Microsoft official course – WCF 4 – Microsoft official course – Pro .NET Performance – Apress • Microsoft MVP • Focus on server, services, and cloud technologies • Manager of the Israeli Web Developers User Group
  • 3. Agenda for Today • • • • Monitoring Services Performance Considerations WCF Security Extending the WCF Pipeline Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 5. Monitoring WCF Services • Post Factum – Tracing – Message logs • Real-time – Performance counters – Event Tracing information – Windows Management Instrumentation (WMI) – Message sniffing tools Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 6. Tracing and WCF • Various levels of tracing – – – – – Critical (fatal exceptions) Error (any exception) Warning (limits reached) Information (basic monitoring) Verbose (everything) • Can be used in clients and services • End-to-End tracing for service chains • Supports emitting custom tracing to the same file Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 7. Configuring Tracing Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 8. Viewing Trace Logs with SvcTraceViewer End-to-End Activity Tracing Additional information, including exceptions Informative (white) Warnings (yellow) Exceptions (red) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 9. End-To-End Tracing • • • • • Each traced activity has an ID Activity ID can travel within the AppDomain WCF can propagate the ID to chained services Track processing and exceptions across services Use the service trace viewer to see the logs together Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 10. Viewing End-To-End Traces ServiceA.svclog ServiceB.svclog ServiceC.svclog Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 11. Viewing End-To-End Traces Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 12. Tracing an Exception End-To-End Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 13. Tracing an Exception End-To-End Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 14. Adding Your Own Trace Messages • • • • Create your own trace source Use the same listener for both sources Use System.Diagnostics.TraceSource to log events You can also group events into a new activity TraceSource ts = new TraceSource("MyTraceSource"); ts.TraceInformation("Doing some processing..."); if (needToThrowAnException) { ts.TraceEvent(TraceEventType.Warning, 1, "Going to throw an exception!"); throw new ArgumentException(); } Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 16. WCF Message Logging • Logs request and response messages • Supports logging of sensitive information – Entire message, including the body – Decrypted messages (service level) – Username and password (known PII) • Use it cautiously – – – – Logging large content requires more time Be careful logging sensitive information If using IIS, don’t expose it in a vdir Use ACLs on the log file Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 17. Enabling Message Logging Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 18. Viewing Message in SvcTraceViewer HTTP Headers Requests and Responses SOAP Headers Message body (log entire message) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 19. Messages and Tracing Go Together! • Combine message logging with tracing • Get the whole picture • Simply load both files to the same service trace viewer Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 20. Tracing – What the Heck is ETW? • • • • • • Event Tracing for Windows Fast tracing solution supplied by the operating system Kernel-mode logging mechanism Logging can be enabled/disabled at runtime Trace is logged to an in-memory buffer Buffers are written to the disk asynchronously • Exists since Windows 2000! • WCF uses ETW!! And so can you!!! Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 21. WCF Runtime Tracing in Three Steps Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 23. Enabling WMI • WCF services can expose configuration information using WMI • The WMI provider is turned off by default Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 24. Watch WMI Information Use WMI tools to view information about a running service Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 25. Change Settings at Runtime with WMI • WMI Admin Tools (http://bit.ly/wmiadmin) (Requires running in IE9 Compatibility) • PowerShell scripts with Get-WmiObject Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 27. Sniffing the Network • Many applications can be used to monitor WCF communication – – – – Microsoft Network Monitor Wireshark HTTP Analyzer HTTP Only Fiddler • Sniffing tools usually have problems listening to the loopback adapter (localhost) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 28. Sniffing HTTP with Fiddler • Content types – – – – – XML JSON Binary Encoding Base64 Strings Gzip Compression • Features – Record & Replay – Break & Change – HTTPS Sniffing Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 29. Sniffing HTTP with Fiddler • Content types – – – – – XML JSON Binary Encoding Base64 Strings Gzip Compression • Features – Record & Replay – Break & Change – HTTPS Sniffing Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 31. Performance Counters • WCF has a wide collection of performance counters • Counters can be collected for a service, an endpoint, or a specific operation Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 33. To Create or Not To Create? • When is a service instance created? – Depends on the ServiceBehaviorAttribute – Depends which binding you use • What are my options? – – – – Per call Per session (default, if supported by the binding) Single instance Custom (implement the IInstanceProvider interface) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 34. Pros and Cons of Instancing • Per call – – – – Creating an instance is usually cheap Services should be stateless by design (better scalability) Instance is disposed when finished, no book keeping Performance hit when initialization requires time / memory / CPU • Per session – – – – Save state between client calls One-time initialization, low performance hit Requires keeping instance alive Behaves badly when scaled • Single – – – – Share global state without using static fields Reduces performance hit substantially when initialization is long Can lead to concurrency issues if state is shared Very problematic to scale (distributed state) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 35. Opening the Throttle • Service host defines throttling levels – Max concurrent calls – Max session instances to managed – Max instances (running + idle sessions) • WCF 3.5 defaults ≠ WCF 4/4.5 defaults – WCF 3.5 – 16 calls, 10 sessions – WCF 4+ – 16xCores calls, 100xCores sessions • ServiceThrottling behavior controls the throttle Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 37. Instancing and Concurrency • Can concurrent calls be executed using the same instance? – Per call – no such scenario, each call has its instance – Per session – a client can call multiple requests asynchronously – Single – very probable, clients can call at the same time • Which concurrency modes exist in WCF? – Single. Only one thread can use the instance at a time – Multiple. Many threads can use the instance at a time • What is the default? – Single – BEWARE !! Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 38. Concurrency Explained • When an operation is executed within an instance, the instance gets locked • While the instance is locked, no other thread can use the instance • With multiple, no locks are used Client A Service Client B Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 39. What Can Possibly Happen? • Single concurrency – Requests will get synchronized – Requests might reach timeout limits • Multiple concurrency – – – – Concurrency issues in code End up using critical sections Critical sections will lead to synchronization Critical sections are hard to test • Recommendations – Prefer using Per-Call instancing – Minimize the state managed by the instance – Use thread-safe types in your state Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 40. Reentrant Mixing Single and Multiple • What if the running operation needs to call another service? Or invoke a callback in the client (duplex)? • Instance is still locked, and won’t handle other requests • Such scenarios can even lead to deadlock (why?) • Reentrant – releases the lock when an outgoing WCF call is detected Client A Service Client B Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 42. Handling Many Calls. How Many is Many? • • • • • WCF uses the Thread Pool’s I/O threads Default maximum number of threads - 1000 You can increase the limit, is that wise? What if you have many lengthy operations? “I heard asynchronous service operations might help”, indeed? Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 43. The Truth Behind Async Service Operations • Async operations allow running our code on another thread, releasing the current thread back to the pool • But isn’t the other thread just another pooled thread? • True for CPU work, not true for I/O work • Use async operations only when doing lengthy I/O operations (disk, network, db) • Use the async I/O method calls – Stream.BeginRead, SqlCommand.BeginExecuteReader • Using async operations for CPU intensive work may decrease performance (why?) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 44. Call to Action The WCF Thread Pool Bug • Increasing the min I/O threads helps dealing with bursts of requests • In WCF 3.5 and WCF 4 there is a bug in the Thread Pool usage • Under continuous load, the counter for available I/O threads starts to fake • Result – WCF cannot scale fast enough to handle the burst, and requests get queued Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 45. Call to Action The WCF Thread Pool Bug • What to do? Change WCF to use worker threads • http://bit.ly/wcf-threadpool-bug • Resolved in WCF 4.5 • Worker threads also have default maximum number of threads – .NET 3.5 – 250 threads per core – .NET 4 – 1023 threads (32-bit), or 32768 (64-bit) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 46. Call to Action TCP Port Sharing Bug • • • • WCF introduced port sharing for TCP Managed by a Windows Service (SMSvcHost.exe) IIS automatically uses port sharing for TCP endpoints WCF 4 has a known bug in the port sharing Windows service that can cause it to stop responding • What to do? Install the hotfix! • http://support.microsoft.com/kb/2536618 • To diagnose network errors, turn on tracing in the port sharing service (http://bit.ly/wcf-portsharing-trace) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 47. Know Thy Settings • Service behavior – Throttling – Concurrency / Instancing – DataContractSerializer • Binding configuration – – – – – – Network timeouts (opening, sending, receiving, closing) MaxReceivedMessageSize MaxBufferSize ReaderQuotas MaxConnections (TCP binding) InactivityTimeout (Reliable Session) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 48. Know Thy Settings – cont. • Thread Pool – Minimum settings - fast response for bursts – Maximum settings – more concurrent calls • IIS classic pipeline (system.web section) – MinFreeThreads / MinLocalRequestFreeThreads (HttpRuntime) – AutoConfig (ProcessModel, in machine.config) • IIS Integrated mode – MaxConcurrentRequestsPerCPU registry key HKLMSOFTWAREMicrosoftASP.NET{FW} – Application Pool’s CLRConfigFile setting Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 49. Limits and Timeout Settings – cont. • IIS/ASP.NET limitations – ExecutionTimeout (in release mode) – MaxRequestLength • system.webServer | security | requestFiltering – maxAllowedContentLength • Outgoing HTTP communication – System.Net.ServicePointManager.DefaultConnectionLimit More information and workarounds in the following link http://bit.ly/asp-iis-threading Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 50. And One Final Tip Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 52. Securing a Service • Message Protection – Integrity – Confidentiality • Authentication – Client Authentication – Service Authentication • Authorization – Role-based Authorization – Claim-based Authorization • Auditing Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 53. Transport Security • With transport security, the operating system handles the protection of the channel • Supported for HTTP (SSL over HTTPS), TCP, IPC, and MSMQ • Requires a service certificate • IIS is easy – assign certificate to HTTPS binding • Self-hosting is less fun – need to use netsh • Self-Signed certificates are no fun at all!! Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 54. How Secure Sockets Layer Works 3. Client verifies certificate’s authenticity 1. Client requests a secured session 2. Server responds with an X.509 certificate 4. Client sends a symmetric encryption key (encrypted with the server’s public key) 6. Client and server exchange encrypted messages (encrypted with the symmetric key) 5. Server decrypts the encryption key with its private key Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 55. Demo CREATING, INSTALLING, AND USING CERTIFICATES
  • 56. Message Security • WCF handles everything • Used by default in WsHttpBinding • Secure the channel using either: – Service Certificate – Windows Identities (service + client) • Certificate validation can be handled in code – Change the CertificateValidationMode – Create your own validation code Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 57. Service Authentication • By default, WCF uses negotiation to authenticate the service against the client • The implementation of WS-Trust is not fully interoperable (e.g. Java) • If using non-WCF clients, turn off negotiation and use Out-of-Band (ahead of time) authentication • In the binding configuration (service + client), set NegotiateServiceCredential to false • In the client endpoint configuration, add the identity element and set the service’s credentials Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 58. Steps for Out-of-Band Authentication • Service Certificate – Install the certificate on the client machine – Set the client endpoint’s identity to the certificate • Windows Credentials – If you use a system account (NetworkService, LocalSystem) the machine’s Service Principal Name (SPN) is used – If you use a domain account, register a new SPN in Active Directory, and set the SPN identity in the service endpoint – Set the client endpoint’s identity to the SPN Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 60. Impersonation • A WCF service can impersonate the client’s Windows identity • Clients must use a domain account • If the client is ASP.NET, the app pool must use a domain account, or also use impersonation • Three ways to impersonate – [OperationBehavior(Impersonation = ImpersonationOption.Required)] – ServiceSecurityContext.Current.WindowsIdentity.Impersonate() – <serviceAuthorization impersonateCallerForAllOperations="true"/> Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 61. Delegation • Impersonating a client only works for one hop – Access local resources and local services • To call another hop you need delegation – Access remote services, databases, and file shares • Delegation requires enabling the account and the machine for delegation in the Active Directory • Verify support for delegation in your service before you call out: WindowsIdentity.ImpersonationLevel == TokenImpersonationLevel.Delegation Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 64. The WCF Service Pipeline Channel Dispatcher Channel Stack Transport Service Instance Encoder Protocol Protocol Endpoint Dispatcher Service Method Dispatch Operation Service Method Dispatch Operation Join the conversation on Twitter: @SoftArchConf #SoftArchConf Dispatch Runtime
  • 65. The WCF Client Has a Pipeline Too Client Channel Client Code Client Proxy Client Operation Method Client Runtime Client Operation Method Channel Stack Transport Encoder Join the conversation on Twitter: @SoftArchConf #SoftArchConf Protocol Protocol
  • 66. Where Can We Interfere? Where What One/Many Client/Service Many Service Channel Dispatcher Error Handler Channel Stack Message Encoder One Both Address Filter One Service Contract Filter One Service Operation Selector One Service Message Inspector Many Both Instance Context Initializer Many Service Instance Provider One Service Message Formatter One Both Parameter Inspector One Both Many Service Endpoint Dispatcher Dispatch / Client Runtime Dispatch / Client Operation Operation Invoker Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 67. How Do We Interfere? • • • • Through Behaviors! Behaviors tune the WCF pipeline to your needs Write your own custom behavior Attach the behavior to the WCF pipeline – Code (custom attribute) – Configuration (add to the behaviors section) Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 68. Which Custom Behavior to Use? • IServiceBehavior – Implement as a custom attribute or a configuration element – Apply behavior for service, channels, endpoints, and operations • IEndpointBehavior – Implement as a configuration element – Apply behavior for specific endpoints and their operations • IContractBehavior – Implement as a custom attribute – Apply behavior for specific contracts and their operations • IOperationBehavior – Implement as a custom attribute – Apply behavior for specific operations Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 69. Demo CREATING A CUSTOM ERROR HANDLER
  • 70. Summary • WCF has many hidden gems • WCF has at least as many unknowns • No course or lecture can replace experience • Perhaps now it will be easier to connect the dots Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 71. What’s New in WCF 4.5 Ido Flatow, Senior Architect Sela Group
  • 72. Resources • Sites, forums, and blogs – WCF Developer Center msdn.microsoft.com/en-us/library/dd456779.aspx – MSDN’s WCF Forum social.msdn.microsoft.com/Forums/en/wcf – Blogs about WCF blogs.msdn.com/b/carlosfigueira blogs.msdn.com/b/endpoint blogs.msdn.com/b/drnick – Many WCF code samples bit.ly/wcf-wf-samples • Presentation & code samples – sdrv.ms/1a6RyB5 • My Info – blogs.microsoft.co.il/blogs/idof – idof@sela.co.il – @IdoFlatow Join the conversation on Twitter: @SoftArchConf #SoftArchConf
  • 73. Why Not Ditch WCF and Switch to One Slide about ASP.NET Web API Web API • WCF support non-HTTP bindings, such as TCP and Named Pipes • WCF supports message patterns, such as one-way and message queue • WS-* adds infrastructure features such as reliable sessions, message security, and transactions • SOAP-based services support detailed description of the service with WSDL More on WCF and ASP.NET Web API history http://bit.ly/wcf-vs-webapi Join the conversation on Twitter: @SoftArchConf #SoftArchConf

Notas del editor

  1. The CLR has a bug in the I/O thread pool.If the service needs to handle lots of calls, the SynchronizationContext should be changed to use worker threads instead of I/O threads:http://blogs.msdn.com/b/dmetzgar/archive/2011/05/04/wcf-scales-up-slowly-with-bursts-of-work.aspx
  2. WCF operations are executed in managed I/O threads.When using an async operation, the I/O thread is returned to the pool.The call is still counted – you cannot handle more operations than defined by the throttlingAn I/O thread that was returned to the pool can be used for other incoming operationsIf using a new worker thread for length operations – you just replace I/O threads with worker thread, the context switch will just harm performanceIf using an IOCP operation (waiting on kernel I/O) – you actually use less managed threadsBenefits:More I/O threads available for other operations (if number of operations exceed the max I/O threads) – this is usually not the caseRequires less I/O threads to be kept alive in the pool – good for preserving memory consumptionIf using IIS – this also decreases the number of managed worker threads used by IIS – relevant to .Net 3.5 only because in .NET 4 IIS worker threads are async
  3. SSL (Secure Sockets Layer) allows the creation of secured transport channels between clients and servers.When a client asks a service to start a secured session (step 1), the server responds by sending it’s X.509 certificate (step 2).The certificate holds information about the server and about the issuing CA .The client validates the certificate, and verifies that the server is who it says it is.After validating the certificate, the client generates and sends a random symmetric key that will be used for the secured session (step 4).The client places the key in a message, and encrypts it with the server’s public key, which the client received in the certificate. Public key encryption can only be decrypted by the private key which only the server has.After the server decrypts the message and retrieves the key, both client and server use the symmetric encryption key to exchange messages. (step 6)The symmetric key is used for both the encryption and decryption of messages.