SlideShare a Scribd company logo
1 of 16
The Need For Speed
             A Developer’s Guide to
            Distributed Caching with
       Velocity Windows Server AppFabric

Phil Pursglove
@philpursglove
http://philpursglove.blogspot.com
Agenda
•   What is AppFabric?
•   Why a Distributed Cache?
•   Configuring a client
•   Configuring a server
•   Managing a cache
•   Concurrency
•   High availability / load balancing
Caching Review
• .NET 1.1
  – ASP.NET Cache
• .NET 2.0
  – SqlCacheDependency
  – Enterprise Library Caching Application Block


• .NET 4.0
  – System.Runtime.Caching assembly
  – AppFabric
What is AppFabric?
• A combination of two projects:
   – A distributed cache
       • One logical cache shared across a number of physical servers
       • Already being used by:
            – MSDN Forums. Xbox Live, MSN
       • An ASP.NET session state provider
       • In .NET 4.0, a cache provider
   – A workflow host


• V1 released to web 4th June
   – Servers must be .NET 4.0, clients can be .NET 3.5/4.0
Why a Distributed Cache?
• Bigger cache
  – Many physical servers contribute to one
    logical cache
• Increased throughput
  – Many servers available to fulfil requests
• High availability
  – Multiple servers = fault tolerance
What Data Can I Cache In
            AppFabric?
• Any serializable .NET object
  – Reference Data (Shared Read)
     • e.g. Product categories
  – Activity Data (Exclusive Write)
     • e.g. Shopping Basket
  – Resource Data (Read and Write)
     • e.g. product stock data
Configuring the AppFabric Client
 • Two assembly references to add:
   – Microsoft.ApplicationServer.Caching.Client.dll
   – Microsoft.ApplicationServer.Caching.Core.dll
 • Cache hosts can be hard-coded or in
   web.config/app.config
 • Clients
   – Routing vs Simple
   – Local caches
Using AppFabric
• Add/Remove

• Concurrency
   – Optimistic
       • Version-based
   – Pessimistic
       • Lock-based

• Tags

• Regions
   – Live inside a cache
   – Use for a set of logically related cached items e.g. Products
   – Tie a group of cached objects to a specific node 
Configuring an AppFabric Server
• Cluster configuration can be held:
  – On a network share (XML Provider)
  – In a SQL Server DB (SQL Provider)


• Integrated Security only 
  – AppFabric servers must be inside a domain
Managing An AppFabric
          Cluster
• Powershell integration
  – Can start/stop a whole cluster or individual
    servers
  – Create new named caches
     • But not regions 
  – Get cache statistics


• MDCAdmin tool
  – WPF app sitting on top of Powershell
Summary
• AppFabric brings the cloud inside your
  organisation!
• Distributed caching is a powerful way to
  bring scalability to your applications
  – Throughput
  – High availability
Questions?




@philpursglove
http://philpursglove.blogspot.com
http://www.philippursglove.com/Velocity
References
•   V1 Download
     – http://tinyurl.com/appfabricdownload
•   Documentation on MSDN
     – http://tinyurl.com/msdnappfabric
•   Velocity team blog
     – http://blogs.msdn.com/velocity
     – http://blogs.msdn.com/endpoint
• AppFabric blog for IT Pros
     – http://blogs.technet.com/appfabric/
•   TechEd videos
     – http://tinyurl.com/velocityteched
•   Mix 09 video
     – http://tinyurl.com/velocitymixvideo
• Mix 10 video
     – http://tinyurl.com/velocitymix10video
•   ARCCast Video
     – http://tinyurl.com/velocityscotthavideo
•   ScottHa on Velocity
     – http://tinyurl.com/velocityhanselminutes
• Deep Fried Bytes on AppFabric
     – http://tinyurl.com/deepfriedappfabric
References
• AppFabric coverage on StackOverflow
    – http://tinyurl.com/stackoverflowvelocity
    – http://tinyurl.com/stackoverflowappfabric

• DotNetRocks
    – http://tinyurl.com/dotnetrocksappfabric

• Other .NET distributed caches
    –   NCache - http://tinyurl.com/ncache
    –   Memcached - http://tinyurl.com/smoe
    –   Oracle Coherence – http://tinyurl.com/oraclecoherence
    –   SharedCache – http://codeplex.com/sharedcache

• Extensions Project
    – http://tinyurl.com/mscacheext

• Admin Tool
    – http://mdcadmintool.codeplex.com/
Phil Pursglove: Velocity, the Need for Speed - epicenter 2010

More Related Content

What's hot

ServiceNow-Box Integration
ServiceNow-Box IntegrationServiceNow-Box Integration
ServiceNow-Box Integration
Nagendra B
 
How to extend WSO2 Carbon for your middleware needs
How to extend WSO2 Carbon for your middleware needsHow to extend WSO2 Carbon for your middleware needs
How to extend WSO2 Carbon for your middleware needs
WSO2
 

What's hot (20)

RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016
 
Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block
 
Net coreandsimplcommerce
Net coreandsimplcommerceNet coreandsimplcommerce
Net coreandsimplcommerce
 
Ruby Setup
Ruby SetupRuby Setup
Ruby Setup
 
SpringPeople Introduction to MongoDB Administration
SpringPeople Introduction to MongoDB AdministrationSpringPeople Introduction to MongoDB Administration
SpringPeople Introduction to MongoDB Administration
 
Containerizing your apps
Containerizing your appsContainerizing your apps
Containerizing your apps
 
Building a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Building a DevOps pipeline for Serverless by using Mocha, GitHub and TravisBuilding a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Building a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
 
Surati Tech Talks 2022 / Build reliable Svelte applications using Cypress
Surati Tech Talks 2022 / Build reliable Svelte applications using CypressSurati Tech Talks 2022 / Build reliable Svelte applications using Cypress
Surati Tech Talks 2022 / Build reliable Svelte applications using Cypress
 
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at UberWSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
 
ContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
ContainerCon EU 2016 - Software-Defined Storage and Container SchedulersContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
ContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
 
Bring api manager into your stack
Bring api manager into your stackBring api manager into your stack
Bring api manager into your stack
 
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
 
Serverless Summit India 2017: Fission
Serverless Summit India 2017: FissionServerless Summit India 2017: Fission
Serverless Summit India 2017: Fission
 
Using ansible to manage cloud stack
Using ansible to manage cloud stackUsing ansible to manage cloud stack
Using ansible to manage cloud stack
 
ServiceNow-Box Integration
ServiceNow-Box IntegrationServiceNow-Box Integration
ServiceNow-Box Integration
 
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
 
Solving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache CamelSolving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache Camel
 
EVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM Technology
EVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM TechnologyEVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM Technology
EVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM Technology
 
How to extend WSO2 Carbon for your middleware needs
How to extend WSO2 Carbon for your middleware needsHow to extend WSO2 Carbon for your middleware needs
How to extend WSO2 Carbon for your middleware needs
 
BizTalk ALM
BizTalk ALMBizTalk ALM
BizTalk ALM
 

Similar to Phil Pursglove: Velocity, the Need for Speed - epicenter 2010

Apache CloudStack 4.2: A First Look
Apache CloudStack 4.2: A First LookApache CloudStack 4.2: A First Look
Apache CloudStack 4.2: A First Look
Shanker Balan
 
Red Hat Storage Day LA - Persistent Storage for Linux Containers
Red Hat Storage Day LA - Persistent Storage for Linux Containers Red Hat Storage Day LA - Persistent Storage for Linux Containers
Red Hat Storage Day LA - Persistent Storage for Linux Containers
Red_Hat_Storage
 

Similar to Phil Pursglove: Velocity, the Need for Speed - epicenter 2010 (20)

Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
 
Cloud Foundry: Hands-on Deployment Workshop
Cloud Foundry: Hands-on Deployment WorkshopCloud Foundry: Hands-on Deployment Workshop
Cloud Foundry: Hands-on Deployment Workshop
 
Short-Training asp.net vNext
Short-Training asp.net vNextShort-Training asp.net vNext
Short-Training asp.net vNext
 
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
 
Apache CloudStack 4.2: A First Look
Apache CloudStack 4.2: A First LookApache CloudStack 4.2: A First Look
Apache CloudStack 4.2: A First Look
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
 
Structure and Opinions - Software Deployments with Cloud Foundry
Structure and Opinions - Software Deployments with Cloud FoundryStructure and Opinions - Software Deployments with Cloud Foundry
Structure and Opinions - Software Deployments with Cloud Foundry
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
App fabric introduction
App fabric introductionApp fabric introduction
App fabric introduction
 
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UICross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
 
Red Hat Storage Day LA - Persistent Storage for Linux Containers
Red Hat Storage Day LA - Persistent Storage for Linux Containers Red Hat Storage Day LA - Persistent Storage for Linux Containers
Red Hat Storage Day LA - Persistent Storage for Linux Containers
 
Alfresco overview EDM
Alfresco overview EDMAlfresco overview EDM
Alfresco overview EDM
 
Managing Multisite: Lessons from a Large Network
Managing Multisite: Lessons from a Large NetworkManaging Multisite: Lessons from a Large Network
Managing Multisite: Lessons from a Large Network
 
RESTful web APIs (build, document, manage)
RESTful web APIs (build, document, manage)RESTful web APIs (build, document, manage)
RESTful web APIs (build, document, manage)
 
SPS Dakar 2018 - I developed a SharePoint framework solution, what to do next...
SPS Dakar 2018 - I developed a SharePoint framework solution, what to do next...SPS Dakar 2018 - I developed a SharePoint framework solution, what to do next...
SPS Dakar 2018 - I developed a SharePoint framework solution, what to do next...
 
Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...
Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...
Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...
 
Getting Started with PaaS
Getting Started with PaaSGetting Started with PaaS
Getting Started with PaaS
 
aOS Monaco 2019 - B7 - I Developed a SPFx solution, what to do next and how t...
aOS Monaco 2019 - B7 - I Developed a SPFx solution, what to do next and how t...aOS Monaco 2019 - B7 - I Developed a SPFx solution, what to do next and how t...
aOS Monaco 2019 - B7 - I Developed a SPFx solution, what to do next and how t...
 
aOS Monaco - SPFx deployment
aOS Monaco - SPFx deploymentaOS Monaco - SPFx deployment
aOS Monaco - SPFx deployment
 
The Greatest Introduction to SharePoint Framework (SPFx) on earth!
The Greatest Introduction to SharePoint Framework (SPFx) on earth!The Greatest Introduction to SharePoint Framework (SPFx) on earth!
The Greatest Introduction to SharePoint Framework (SPFx) on earth!
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Phil Pursglove: Velocity, the Need for Speed - epicenter 2010

  • 1.
  • 2. The Need For Speed A Developer’s Guide to Distributed Caching with Velocity Windows Server AppFabric Phil Pursglove @philpursglove http://philpursglove.blogspot.com
  • 3. Agenda • What is AppFabric? • Why a Distributed Cache? • Configuring a client • Configuring a server • Managing a cache • Concurrency • High availability / load balancing
  • 4. Caching Review • .NET 1.1 – ASP.NET Cache • .NET 2.0 – SqlCacheDependency – Enterprise Library Caching Application Block • .NET 4.0 – System.Runtime.Caching assembly – AppFabric
  • 5. What is AppFabric? • A combination of two projects: – A distributed cache • One logical cache shared across a number of physical servers • Already being used by: – MSDN Forums. Xbox Live, MSN • An ASP.NET session state provider • In .NET 4.0, a cache provider – A workflow host • V1 released to web 4th June – Servers must be .NET 4.0, clients can be .NET 3.5/4.0
  • 6. Why a Distributed Cache? • Bigger cache – Many physical servers contribute to one logical cache • Increased throughput – Many servers available to fulfil requests • High availability – Multiple servers = fault tolerance
  • 7. What Data Can I Cache In AppFabric? • Any serializable .NET object – Reference Data (Shared Read) • e.g. Product categories – Activity Data (Exclusive Write) • e.g. Shopping Basket – Resource Data (Read and Write) • e.g. product stock data
  • 8. Configuring the AppFabric Client • Two assembly references to add: – Microsoft.ApplicationServer.Caching.Client.dll – Microsoft.ApplicationServer.Caching.Core.dll • Cache hosts can be hard-coded or in web.config/app.config • Clients – Routing vs Simple – Local caches
  • 9. Using AppFabric • Add/Remove • Concurrency – Optimistic • Version-based – Pessimistic • Lock-based • Tags • Regions – Live inside a cache – Use for a set of logically related cached items e.g. Products – Tie a group of cached objects to a specific node 
  • 10. Configuring an AppFabric Server • Cluster configuration can be held: – On a network share (XML Provider) – In a SQL Server DB (SQL Provider) • Integrated Security only  – AppFabric servers must be inside a domain
  • 11. Managing An AppFabric Cluster • Powershell integration – Can start/stop a whole cluster or individual servers – Create new named caches • But not regions  – Get cache statistics • MDCAdmin tool – WPF app sitting on top of Powershell
  • 12. Summary • AppFabric brings the cloud inside your organisation! • Distributed caching is a powerful way to bring scalability to your applications – Throughput – High availability
  • 14. References • V1 Download – http://tinyurl.com/appfabricdownload • Documentation on MSDN – http://tinyurl.com/msdnappfabric • Velocity team blog – http://blogs.msdn.com/velocity – http://blogs.msdn.com/endpoint • AppFabric blog for IT Pros – http://blogs.technet.com/appfabric/ • TechEd videos – http://tinyurl.com/velocityteched • Mix 09 video – http://tinyurl.com/velocitymixvideo • Mix 10 video – http://tinyurl.com/velocitymix10video • ARCCast Video – http://tinyurl.com/velocityscotthavideo • ScottHa on Velocity – http://tinyurl.com/velocityhanselminutes • Deep Fried Bytes on AppFabric – http://tinyurl.com/deepfriedappfabric
  • 15. References • AppFabric coverage on StackOverflow – http://tinyurl.com/stackoverflowvelocity – http://tinyurl.com/stackoverflowappfabric • DotNetRocks – http://tinyurl.com/dotnetrocksappfabric • Other .NET distributed caches – NCache - http://tinyurl.com/ncache – Memcached - http://tinyurl.com/smoe – Oracle Coherence – http://tinyurl.com/oraclecoherence – SharedCache – http://codeplex.com/sharedcache • Extensions Project – http://tinyurl.com/mscacheext • Admin Tool – http://mdcadmintool.codeplex.com/