SlideShare a Scribd company logo
1 of 59
http://www.antimomusone.com
SOA
prevents
“Spaghetti
Code”
an XML-based standard
<s:Header>….</s:Header>
<s:Body>…..</s:Body>
an architectural style for services
a group of XML-based standards relevant
for Web services
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
- <feed xml:base="http://localhost:33779/WcfDataService1.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">Drivers</title>
<id>http://localhost:33779/WcfDataService1.svc/Drivers</id>
<updated>2010-05-24T22:12:38Z</updated>
<link rel="self" title="Drivers" href="Drivers" />
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(1)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(1)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(1)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(1)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">1</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId>
<d:FirstName>Rob</d:FirstName>
<d:LastName>Tiffany</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(2)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(2)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(2)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(2)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">2</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId>
<d:FirstName>Loke Uei</d:FirstName>
<d:LastName>Tan</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(3)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(3)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(3)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(3)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">3</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId>
<d:FirstName>Dan</d:FirstName>
<d:LastName>Bouie</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(4)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(4)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(4)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(4)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">4</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId>
<d:FirstName>John</d:FirstName>
<d:LastName>Dietz</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(5)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(5)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(5)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(5)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">5</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId>
<d:FirstName>Derek</d:FirstName>
<d:LastName>Snyder</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(6)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(6)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(6)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(6)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">6</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId>
<d:FirstName>Steve</d:FirstName>
<d:LastName>Hegenderfer</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(7)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(7)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(7)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(7)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">7</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId>
<d:FirstName>Chip</d:FirstName>
<d:LastName>Vollers</d:LastName>
</m:properties>
</content>
</entry>
- <entry>
<id>http://localhost:33779/WcfDataService1.svc/Drivers(8)</id>
<title type="text" />
<updated>2010-05-24T22:12:38Z</updated>
- <author>
<name />
</author>
<link rel="edit" title="Driver" href="Drivers(8)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(8)/DistributionCenter" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(8)/Todays" />
<category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
- <content type="application/xml">
- <m:properties>
<d:DriverId m:type="Edm.Int32">8</d:DriverId>
<d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId>
<d:FirstName>James</d:FirstName>
<d:LastName>Pratt</d:LastName>
</m:properties>
</content>
</entry>
</feed>
The same list of 8 Customers using SOAP and a DataSet dropped us down to 3 kb but still too big for my taste.
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://tempuri.org/">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Driver">
<xs:complexType>
<xs:sequence>
<xs:element name="DriverId" type="xs:int" minOccurs="0" />
<xs:element name="DistributionCenterId" type="xs:int" minOccurs="0" />
<xs:element name="FirstName" type="xs:string" minOccurs="0" />
<xs:element name="LastName" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Driver diffgr:id="Driver1" msdata:rowOrder="0">
<DriverId>1</DriverId>
<DistributionCenterId>1</DistributionCenterId>
<FirstName>Rob</FirstName>
<LastName>Tiffany</LastName>
</Driver>
<Driver diffgr:id="Driver2" msdata:rowOrder="1">
<DriverId>2</DriverId>
<DistributionCenterId>1</DistributionCenterId>
<FirstName>Loke Uei</FirstName>
<LastName>Tan</LastName>
</Driver>
<Driver diffgr:id="Driver3" msdata:rowOrder="2">
<DriverId>3</DriverId>
<DistributionCenterId>1</DistributionCenterId>
<FirstName>Dan</FirstName>
<LastName>Bouie</LastName>
</Driver>
<Driver diffgr:id="Driver4" msdata:rowOrder="3">
<DriverId>4</DriverId>
<DistributionCenterId>1</DistributionCenterId>
<FirstName>John</FirstName>
<LastName>Dietz</LastName>
</Driver>
<Driver diffgr:id="Driver5" msdata:rowOrder="4">
<DriverId>5</DriverId>
<DistributionCenterId>2</DistributionCenterId>
<FirstName>Derek</FirstName>
<LastName>Snyder</LastName>
</Driver>
<Driver diffgr:id="Driver6" msdata:rowOrder="5">
<DriverId>6</DriverId>
<DistributionCenterId>2</DistributionCenterId>
<FirstName>Steve</FirstName>
<LastName>Hegenderfer</LastName>
</Driver>
<Driver diffgr:id="Driver7" msdata:rowOrder="6">
<DriverId>7</DriverId>
<DistributionCenterId>2</DistributionCenterId>
<FirstName>Chip</FirstName>
<LastName>Vollers</LastName>
</Driver>
<Driver diffgr:id="Driver8" msdata:rowOrder="7">
<DriverId>8</DriverId>
<DistributionCenterId>2</DistributionCenterId>
<FirstName>James</FirstName>
<LastName>Pratt</LastName>
</Driver>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
<ArrayOfDriver xmlns=http://schemas.datacontract.org/2004/07/ContosoWcfService.Models
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Driver>
<DistributionCenterId>1</DistributionCenterId>
<DriverId>1</DriverId>
<FirstName>Rob</FirstName>
<LastName>Tiffany</LastName>
</Driver>
<Driver>
<DistributionCenterId>1</DistributionCenterId>
<DriverId>2</DriverId>
<FirstName>Loke Uei</FirstName>
<LastName>Tan</LastName>
</Driver>
<Driver>
<DistributionCenterId>1</DistributionCenterId>
<DriverId>3</DriverId>
<FirstName>Dan</FirstName>
<LastName>Bouie</LastName>
</Driver>
<Driver>
<DistributionCenterId>1</DistributionCenterId>
<DriverId>4</DriverId>
<FirstName>John</FirstName>
<LastName>Dietz</LastName>
</Driver>
<Driver>
<DistributionCenterId>2</DistributionCenterId>
<DriverId>5</DriverId>
<FirstName>Derek</FirstName>
<LastName>Snyder</LastName>
</Driver>
<Driver>
<DistributionCenterId>2</DistributionCenterId>
<DriverId>6</DriverId>
<FirstName>Steve</FirstName>
<LastName>Hegenderfer</LastName>
</Driver>
<Driver>
<DistributionCenterId>2</DistributionCenterId>
<DriverId>7</DriverId>
<FirstName>Chip</FirstName>
<LastName>Vollers</LastName>
</Driver>
<Driver>
<DistributionCenterId>2</DistributionCenterId>
<DriverId>8</DriverId>
<FirstName>James</FirstName>
<LastName>Pratt</LastName>
</Driver>
</ArrayOfDriver>
[{"DistributionCenterId":1,"DriverId":1,"FirstName":"Rob","LastName":"Tiffany"},
{"DistributionCenterId":1,"DriverId":2,"FirstName":"Loke Uei","LastName":"Tan"},
{"DistributionCenterId":1,"DriverId":3,"FirstName":"Dan","LastName":"Bouie"},
{"DistributionCenterId":1,"DriverId":4,"FirstName":"John","LastName":"Dietz"},
{"DistributionCenterId":2,"DriverId":5,"FirstName":"Derek","LastName":"Snyder"},
{"DistributionCenterId":2,"DriverId":6,"FirstName":"Steve","LastName":“Harris"},
{"DistributionCenterId":2,"DriverId":7,"FirstName":"Chip","LastName":"Vollers"},
{"DistributionCenterId":2,"DriverId":8,"FirstName":"James","LastName":"Pratt"}]
protocols
messaging patterns
[ServiceContract]
public interface IComplexCalc
{
[OperationContract]
int Add(int a, int b);
[OperationContract]
ComplexNumber ComplexAdd(ComplexNumber a, ComplexNumber b);
}
[DataContract]
public class ComplexNumber
{
[DataMember]
public int Real { get; set; }
[DataMember]
public int Imaginary { get; set; }
}
public class ComplexCalc : IComplexCalc {
public int Add(int a, int b) {
return a + b;
}
public ComplexNumber ComplexAdd(ComplexNumber a,
ComplexNumber b)
{
return new ComplexNumber()
{
Real = a.Real + b.Real,
Imaginary = a.Imaginary + b.Imaginary
};
}
}
combined to expose a service
through an endpoint ,
Client Service
Message
ABC A B C
A B C
Address Binding Contract
(Where) (How) (What)
transport technology
message encoding
protocols & messaging properties
IPCMSMQ
Custom
TCP HTTP
.NETTransactions
Custom
Security Reliability
HTTP TransactionsSecurity ReliabilityText
Text
Binary
Custom
Transport Encoders Protocol
Binding Example
predefined bindings
scenarios
HTTP transport, text encodingbasicHttpBinding
HTTP transport with/without WS-* supportHttpBinding / wsHttpBinding
TCP transport, binary encoding, WS-* supportnetTcpBinding
IPC transport, binary encoding, WS-* supportnetNamedPipesBinding
TCP transport with Windows Azure, WS-* supportnetTcpRelayBinding
TCP transport with context correlation for Workflow ServicesnetTcpContextBinding
<bindings>
<basicHttpBinding>
<binding name="NoCookies"
sendTimeout="00:10:00"
allowCookies="false">
<security mode="Transport"></security>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="bigMessagesWithTransaction"
sendTimeout="00:10:00"
maxReceivedMessageSize="1048576"
transactionFlow="true">
<security mode="Message"></security>
</binding>
</netTcpBinding>
BasicHttpBinding NoCookiesBinding =
new
BasicHttpBinding(BasicHttpSecurityMode.Transport)
{
AllowCookies = false,
SendTimeout = TimeSpan.FromMinutes(10)
};
NetTcpBinding bigMessagesWithTransactionBinding =
new NetTcpBinding(SecurityMode.Message)
{
SendTimeout = TimeSpan.FromMinutes(10),
MaxReceivedMessageSize = 1048576
};
<customBinding>
<binding name="MyBinding"
sendTimeout="00:10:00">
<transactionFlow/>
<reliableSession ordered="true"/>
<security authenticationMode=
"AnonymousForCertificate"/>
<binaryMessageEncoding/>
<tcpTransport transferMode=
"StreamedResponse"/>
</binding>
</customBinding>
<services>
<service name="Calculators.ComplexCalc">
<endpoint address="http://localhost:8080/complex"
binding="basicHttpBinding"
contract="calculators.IComplexCalc"/>
</service>
</services>
ServiceHost myHost = new
ServiceHost(typeof(ComplexCalc));
//Read the hosted service information from
//the configuration
myHost.Open();
code configuration
ServiceHost myHost = new
ServiceHost(typeof(ComplexCalc)); -> Configuration
myHost.Open();
ServiceHost myHost = new
ServiceHost(typeof(ComplexCalc)); -> Code
myHost.AddServiceEndpoint(typeof(IComplexCalc),
new BasicHttpBinding(),
"http://localhost:8080/complex");
//The hosted service information is written in code
myHost.Open();
the service
behavior in aspects like
behaviors
can be attached code
configuration
<behaviors>
<serviceBehaviors>
<behavior name="limitCalls">
<serviceThrottling maxConcurrentCalls="10"/>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug
includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerSession)]
public class ComplexCalc : IComplexCalc {. . .}
Service
Bus
Connectivity
Service Relay
Protocol Tunnel Eventing
Rich options for interconnecting apps across
network boundaries
Messaging
Queuing Pub/Sub
Reliable Transfer
Reliable, transaction-aware cloud messaging
infrastructure for business apps.
https://yourapp.servicebus.windows.net
[scheme]://[service-namespace].servicebus.windows.net/[name1]/[name2]/...
[scheme] : sb(tcp) ,http,https
https://yourapp.servicebus.windows.net/foo/bar/baz
“ExposeWebServicesfromanywheretoanywhere”
TCP & HTTP
thanks
for
your
time

More Related Content

What's hot

IBM Connections 4.5 User Data Propagation.
IBM Connections 4.5 User Data Propagation.IBM Connections 4.5 User Data Propagation.
IBM Connections 4.5 User Data Propagation.michele buccarello
 
Session 32 - Session Management using Cookies
Session 32 - Session Management using CookiesSession 32 - Session Management using Cookies
Session 32 - Session Management using CookiesPawanMM
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
Design and Development performance considerations
Design and Development performance considerationsDesign and Development performance considerations
Design and Development performance considerationsElaine Van Bergen
 
Asp.net web page syntax overview
Asp.net web page syntax overviewAsp.net web page syntax overview
Asp.net web page syntax overviewSalam Khan
 
IE8 Dev Overview_pp2003
IE8 Dev Overview_pp2003IE8 Dev Overview_pp2003
IE8 Dev Overview_pp2003Wes Yanaga
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresherIvano Malavolta
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Arun Gupta
 
Build Secure Cloud-Hosted Apps for SharePoint 2013
Build Secure Cloud-Hosted Apps for SharePoint 2013Build Secure Cloud-Hosted Apps for SharePoint 2013
Build Secure Cloud-Hosted Apps for SharePoint 2013Danny Jessee
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WSKatrien Verbert
 
Session 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web AppsSession 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web AppsPawanMM
 
Session 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design PatternsSession 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design PatternsPawanMM
 
Back to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOABack to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOASage Computing Services
 

What's hot (14)

IBM Connections 4.5 User Data Propagation.
IBM Connections 4.5 User Data Propagation.IBM Connections 4.5 User Data Propagation.
IBM Connections 4.5 User Data Propagation.
 
Session 32 - Session Management using Cookies
Session 32 - Session Management using CookiesSession 32 - Session Management using Cookies
Session 32 - Session Management using Cookies
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Design and Development performance considerations
Design and Development performance considerationsDesign and Development performance considerations
Design and Development performance considerations
 
Asp.net web page syntax overview
Asp.net web page syntax overviewAsp.net web page syntax overview
Asp.net web page syntax overview
 
Creating a basic joomla
Creating a basic joomlaCreating a basic joomla
Creating a basic joomla
 
IE8 Dev Overview_pp2003
IE8 Dev Overview_pp2003IE8 Dev Overview_pp2003
IE8 Dev Overview_pp2003
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresher
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
 
Build Secure Cloud-Hosted Apps for SharePoint 2013
Build Secure Cloud-Hosted Apps for SharePoint 2013Build Secure Cloud-Hosted Apps for SharePoint 2013
Build Secure Cloud-Hosted Apps for SharePoint 2013
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WS
 
Session 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web AppsSession 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web Apps
 
Session 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design PatternsSession 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design Patterns
 
Back to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOABack to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOA
 

Viewers also liked

Web 2.0 Presentation
Web 2.0 PresentationWeb 2.0 Presentation
Web 2.0 Presentationriddletonm
 
Microsoft Accademic Tour Web and Cloud Service Bologna
Microsoft Accademic Tour Web and Cloud Service BolognaMicrosoft Accademic Tour Web and Cloud Service Bologna
Microsoft Accademic Tour Web and Cloud Service Bolognaantimo musone
 
Legal Secondary Sources Presentation
Legal Secondary Sources PresentationLegal Secondary Sources Presentation
Legal Secondary Sources PresentationFordham Law Library
 
Web Cloud Computing SQL Server - Ferrara University
Web Cloud Computing SQL Server  -  Ferrara UniversityWeb Cloud Computing SQL Server  -  Ferrara University
Web Cloud Computing SQL Server - Ferrara Universityantimo musone
 
How Do UK Students, Researchers and Academics use the Internet
How Do UK Students, Researchers and Academics use the InternetHow Do UK Students, Researchers and Academics use the Internet
How Do UK Students, Researchers and Academics use the InternetCaroline Williams
 
.netcampus 2014 - E Commerce On Cloud
.netcampus 2014 - E Commerce On Cloud.netcampus 2014 - E Commerce On Cloud
.netcampus 2014 - E Commerce On Cloudantimo musone
 

Viewers also liked (8)

Web 2.0 Presentation
Web 2.0 PresentationWeb 2.0 Presentation
Web 2.0 Presentation
 
Microsoft Accademic Tour Web and Cloud Service Bologna
Microsoft Accademic Tour Web and Cloud Service BolognaMicrosoft Accademic Tour Web and Cloud Service Bologna
Microsoft Accademic Tour Web and Cloud Service Bologna
 
Law Review Cite Checking Guide
Law Review Cite Checking GuideLaw Review Cite Checking Guide
Law Review Cite Checking Guide
 
Legal Secondary Sources Presentation
Legal Secondary Sources PresentationLegal Secondary Sources Presentation
Legal Secondary Sources Presentation
 
From Niche To Network
From Niche To NetworkFrom Niche To Network
From Niche To Network
 
Web Cloud Computing SQL Server - Ferrara University
Web Cloud Computing SQL Server  -  Ferrara UniversityWeb Cloud Computing SQL Server  -  Ferrara University
Web Cloud Computing SQL Server - Ferrara University
 
How Do UK Students, Researchers and Academics use the Internet
How Do UK Students, Researchers and Academics use the InternetHow Do UK Students, Researchers and Academics use the Internet
How Do UK Students, Researchers and Academics use the Internet
 
.netcampus 2014 - E Commerce On Cloud
.netcampus 2014 - E Commerce On Cloud.netcampus 2014 - E Commerce On Cloud
.netcampus 2014 - E Commerce On Cloud
 

Similar to Microsoft Accademic Cloud Tour Genova

Enhancing mobile applications with Windows Azure
Enhancing mobile applications with Windows AzureEnhancing mobile applications with Windows Azure
Enhancing mobile applications with Windows AzureKarl Ots
 
Building Windows 8 Apps with Windows Azure
Building Windows 8 Apps with Windows AzureBuilding Windows 8 Apps with Windows Azure
Building Windows 8 Apps with Windows AzureSupote Phunsakul
 
crtical points for customizing Joomla templates
crtical points for customizing Joomla templatescrtical points for customizing Joomla templates
crtical points for customizing Joomla templatesamit das
 
Makroekonomi topik-8-1
Makroekonomi topik-8-1Makroekonomi topik-8-1
Makroekonomi topik-8-1020881
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012crokitta
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)Pat Patterson
 
Reading listの検索結果
Reading listの検索結果Reading listの検索結果
Reading listの検索結果Yohei Munesada
 
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!Coulawrence
 
SAPS - Semantic AtomPub-based Services
SAPS - Semantic AtomPub-based ServicesSAPS - Semantic AtomPub-based Services
SAPS - Semantic AtomPub-based ServicesMarkus Lanthaler
 
DHTML - Dynamic HTML
DHTML - Dynamic HTMLDHTML - Dynamic HTML
DHTML - Dynamic HTMLReem Alattas
 
IBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the BoxIBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the BoxKarl-Henry Martinsson
 
Oracle Endeca Developer's Guide
Oracle Endeca Developer's GuideOracle Endeca Developer's Guide
Oracle Endeca Developer's GuideKeyur Shah
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
Espacios en-tu-vida
Espacios en-tu-vidaEspacios en-tu-vida
Espacios en-tu-vidaepacheco1
 
Meteor + Ionic Introduction
Meteor + Ionic IntroductionMeteor + Ionic Introduction
Meteor + Ionic IntroductionLearningTech
 
IT- 328 Web Administration (Practicals)
IT- 328 Web Administration (Practicals)IT- 328 Web Administration (Practicals)
IT- 328 Web Administration (Practicals)Dushmanta Nath
 

Similar to Microsoft Accademic Cloud Tour Genova (20)

Devices + Cloud: Using Windows Azure with Windows Phone, iOS, Android, ...
Devices + Cloud: Using Windows Azure with Windows Phone, iOS, Android, ...Devices + Cloud: Using Windows Azure with Windows Phone, iOS, Android, ...
Devices + Cloud: Using Windows Azure with Windows Phone, iOS, Android, ...
 
Enhancing mobile applications with Windows Azure
Enhancing mobile applications with Windows AzureEnhancing mobile applications with Windows Azure
Enhancing mobile applications with Windows Azure
 
Building Windows 8 Apps with Windows Azure
Building Windows 8 Apps with Windows AzureBuilding Windows 8 Apps with Windows Azure
Building Windows 8 Apps with Windows Azure
 
Introduction to Html5
Introduction to Html5Introduction to Html5
Introduction to Html5
 
crtical points for customizing Joomla templates
crtical points for customizing Joomla templatescrtical points for customizing Joomla templates
crtical points for customizing Joomla templates
 
Makroekonomi topik-8-1
Makroekonomi topik-8-1Makroekonomi topik-8-1
Makroekonomi topik-8-1
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
Reading listの検索結果
Reading listの検索結果Reading listの検索結果
Reading listの検索結果
 
Web-Performance
Web-PerformanceWeb-Performance
Web-Performance
 
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
 
SAPS - Semantic AtomPub-based Services
SAPS - Semantic AtomPub-based ServicesSAPS - Semantic AtomPub-based Services
SAPS - Semantic AtomPub-based Services
 
DHTML - Dynamic HTML
DHTML - Dynamic HTMLDHTML - Dynamic HTML
DHTML - Dynamic HTML
 
Ibm
IbmIbm
Ibm
 
IBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the BoxIBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the Box
 
Oracle Endeca Developer's Guide
Oracle Endeca Developer's GuideOracle Endeca Developer's Guide
Oracle Endeca Developer's Guide
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Espacios en-tu-vida
Espacios en-tu-vidaEspacios en-tu-vida
Espacios en-tu-vida
 
Meteor + Ionic Introduction
Meteor + Ionic IntroductionMeteor + Ionic Introduction
Meteor + Ionic Introduction
 
IT- 328 Web Administration (Practicals)
IT- 328 Web Administration (Practicals)IT- 328 Web Administration (Practicals)
IT- 328 Web Administration (Practicals)
 

More from antimo musone

Multi Cloud essentials
Multi Cloud essentialsMulti Cloud essentials
Multi Cloud essentialsantimo musone
 
Tech meetup Data Driven - Codemotion
Tech meetup Data Driven - Codemotion Tech meetup Data Driven - Codemotion
Tech meetup Data Driven - Codemotion antimo musone
 
Azure Machine Learning Dotnet Campus 2015
Azure Machine Learning Dotnet Campus 2015 Azure Machine Learning Dotnet Campus 2015
Azure Machine Learning Dotnet Campus 2015 antimo musone
 
Cloud Computing - Albicocca University of Milan
Cloud Computing - Albicocca University of MilanCloud Computing - Albicocca University of Milan
Cloud Computing - Albicocca University of Milanantimo musone
 
.NetCampus Windows Azure Mobile
.NetCampus Windows Azure Mobile.NetCampus Windows Azure Mobile
.NetCampus Windows Azure Mobileantimo musone
 
Codemotion Windows Azure Mobile
Codemotion Windows Azure MobileCodemotion Windows Azure Mobile
Codemotion Windows Azure Mobileantimo musone
 
Antimo Musone Graduation Thesis
Antimo Musone Graduation ThesisAntimo Musone Graduation Thesis
Antimo Musone Graduation Thesisantimo musone
 

More from antimo musone (10)

Multi Cloud essentials
Multi Cloud essentialsMulti Cloud essentials
Multi Cloud essentials
 
Intelligent ChatBot
Intelligent ChatBotIntelligent ChatBot
Intelligent ChatBot
 
Amazon Echo
Amazon EchoAmazon Echo
Amazon Echo
 
AI Machine vs Human
AI Machine vs HumanAI Machine vs Human
AI Machine vs Human
 
Tech meetup Data Driven - Codemotion
Tech meetup Data Driven - Codemotion Tech meetup Data Driven - Codemotion
Tech meetup Data Driven - Codemotion
 
Azure Machine Learning Dotnet Campus 2015
Azure Machine Learning Dotnet Campus 2015 Azure Machine Learning Dotnet Campus 2015
Azure Machine Learning Dotnet Campus 2015
 
Cloud Computing - Albicocca University of Milan
Cloud Computing - Albicocca University of MilanCloud Computing - Albicocca University of Milan
Cloud Computing - Albicocca University of Milan
 
.NetCampus Windows Azure Mobile
.NetCampus Windows Azure Mobile.NetCampus Windows Azure Mobile
.NetCampus Windows Azure Mobile
 
Codemotion Windows Azure Mobile
Codemotion Windows Azure MobileCodemotion Windows Azure Mobile
Codemotion Windows Azure Mobile
 
Antimo Musone Graduation Thesis
Antimo Musone Graduation ThesisAntimo Musone Graduation Thesis
Antimo Musone Graduation Thesis
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

Microsoft Accademic Cloud Tour Genova

  • 2.
  • 3.
  • 4.
  • 6.
  • 7.
  • 8. an XML-based standard <s:Header>….</s:Header> <s:Body>…..</s:Body> an architectural style for services a group of XML-based standards relevant for Web services
  • 9. <?xml version="1.0" encoding="utf-8" standalone="yes" ?> - <feed xml:base="http://localhost:33779/WcfDataService1.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> <title type="text">Drivers</title> <id>http://localhost:33779/WcfDataService1.svc/Drivers</id> <updated>2010-05-24T22:12:38Z</updated> <link rel="self" title="Drivers" href="Drivers" /> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(1)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(1)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(1)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(1)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">1</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId> <d:FirstName>Rob</d:FirstName> <d:LastName>Tiffany</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(2)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(2)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(2)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(2)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">2</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId> <d:FirstName>Loke Uei</d:FirstName> <d:LastName>Tan</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(3)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(3)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(3)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(3)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">3</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId> <d:FirstName>Dan</d:FirstName> <d:LastName>Bouie</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(4)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(4)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(4)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(4)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">4</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">1</d:DistributionCenterId> <d:FirstName>John</d:FirstName> <d:LastName>Dietz</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(5)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(5)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(5)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(5)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">5</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId> <d:FirstName>Derek</d:FirstName> <d:LastName>Snyder</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(6)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(6)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(6)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(6)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">6</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId> <d:FirstName>Steve</d:FirstName> <d:LastName>Hegenderfer</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(7)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(7)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(7)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(7)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">7</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId> <d:FirstName>Chip</d:FirstName> <d:LastName>Vollers</d:LastName> </m:properties> </content> </entry> - <entry> <id>http://localhost:33779/WcfDataService1.svc/Drivers(8)</id> <title type="text" /> <updated>2010-05-24T22:12:38Z</updated> - <author> <name /> </author> <link rel="edit" title="Driver" href="Drivers(8)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/DistributionCenter" type="application/atom+xml;type=entry" title="DistributionCenter" href="Drivers(8)/DistributionCenter" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Todays" type="application/atom+xml;type=feed" title="Todays" href="Drivers(8)/Todays" /> <category term="ContosoBottlingModel.Driver" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> - <content type="application/xml"> - <m:properties> <d:DriverId m:type="Edm.Int32">8</d:DriverId> <d:DistributionCenterId m:type="Edm.Int32">2</d:DistributionCenterId> <d:FirstName>James</d:FirstName> <d:LastName>Pratt</d:LastName> </m:properties> </content> </entry> </feed> The same list of 8 Customers using SOAP and a DataSet dropped us down to 3 kb but still too big for my taste. <?xml version="1.0" encoding="utf-8"?> <DataSet xmlns="http://tempuri.org/"> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Driver"> <xs:complexType> <xs:sequence> <xs:element name="DriverId" type="xs:int" minOccurs="0" /> <xs:element name="DistributionCenterId" type="xs:int" minOccurs="0" /> <xs:element name="FirstName" type="xs:string" minOccurs="0" /> <xs:element name="LastName" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet xmlns=""> <Driver diffgr:id="Driver1" msdata:rowOrder="0"> <DriverId>1</DriverId> <DistributionCenterId>1</DistributionCenterId> <FirstName>Rob</FirstName> <LastName>Tiffany</LastName> </Driver> <Driver diffgr:id="Driver2" msdata:rowOrder="1"> <DriverId>2</DriverId> <DistributionCenterId>1</DistributionCenterId> <FirstName>Loke Uei</FirstName> <LastName>Tan</LastName> </Driver> <Driver diffgr:id="Driver3" msdata:rowOrder="2"> <DriverId>3</DriverId> <DistributionCenterId>1</DistributionCenterId> <FirstName>Dan</FirstName> <LastName>Bouie</LastName> </Driver> <Driver diffgr:id="Driver4" msdata:rowOrder="3"> <DriverId>4</DriverId> <DistributionCenterId>1</DistributionCenterId> <FirstName>John</FirstName> <LastName>Dietz</LastName> </Driver> <Driver diffgr:id="Driver5" msdata:rowOrder="4"> <DriverId>5</DriverId> <DistributionCenterId>2</DistributionCenterId> <FirstName>Derek</FirstName> <LastName>Snyder</LastName> </Driver> <Driver diffgr:id="Driver6" msdata:rowOrder="5"> <DriverId>6</DriverId> <DistributionCenterId>2</DistributionCenterId> <FirstName>Steve</FirstName> <LastName>Hegenderfer</LastName> </Driver> <Driver diffgr:id="Driver7" msdata:rowOrder="6"> <DriverId>7</DriverId> <DistributionCenterId>2</DistributionCenterId> <FirstName>Chip</FirstName> <LastName>Vollers</LastName> </Driver> <Driver diffgr:id="Driver8" msdata:rowOrder="7"> <DriverId>8</DriverId> <DistributionCenterId>2</DistributionCenterId> <FirstName>James</FirstName> <LastName>Pratt</LastName> </Driver> </NewDataSet> </diffgr:diffgram> </DataSet> <ArrayOfDriver xmlns=http://schemas.datacontract.org/2004/07/ContosoWcfService.Models xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <Driver> <DistributionCenterId>1</DistributionCenterId> <DriverId>1</DriverId> <FirstName>Rob</FirstName> <LastName>Tiffany</LastName> </Driver> <Driver> <DistributionCenterId>1</DistributionCenterId> <DriverId>2</DriverId> <FirstName>Loke Uei</FirstName> <LastName>Tan</LastName> </Driver> <Driver> <DistributionCenterId>1</DistributionCenterId> <DriverId>3</DriverId> <FirstName>Dan</FirstName> <LastName>Bouie</LastName> </Driver> <Driver> <DistributionCenterId>1</DistributionCenterId> <DriverId>4</DriverId> <FirstName>John</FirstName> <LastName>Dietz</LastName> </Driver> <Driver> <DistributionCenterId>2</DistributionCenterId> <DriverId>5</DriverId> <FirstName>Derek</FirstName> <LastName>Snyder</LastName> </Driver> <Driver> <DistributionCenterId>2</DistributionCenterId> <DriverId>6</DriverId> <FirstName>Steve</FirstName> <LastName>Hegenderfer</LastName> </Driver> <Driver> <DistributionCenterId>2</DistributionCenterId> <DriverId>7</DriverId> <FirstName>Chip</FirstName> <LastName>Vollers</LastName> </Driver> <Driver> <DistributionCenterId>2</DistributionCenterId> <DriverId>8</DriverId> <FirstName>James</FirstName> <LastName>Pratt</LastName> </Driver> </ArrayOfDriver> [{"DistributionCenterId":1,"DriverId":1,"FirstName":"Rob","LastName":"Tiffany"}, {"DistributionCenterId":1,"DriverId":2,"FirstName":"Loke Uei","LastName":"Tan"}, {"DistributionCenterId":1,"DriverId":3,"FirstName":"Dan","LastName":"Bouie"}, {"DistributionCenterId":1,"DriverId":4,"FirstName":"John","LastName":"Dietz"}, {"DistributionCenterId":2,"DriverId":5,"FirstName":"Derek","LastName":"Snyder"}, {"DistributionCenterId":2,"DriverId":6,"FirstName":"Steve","LastName":“Harris"}, {"DistributionCenterId":2,"DriverId":7,"FirstName":"Chip","LastName":"Vollers"}, {"DistributionCenterId":2,"DriverId":8,"FirstName":"James","LastName":"Pratt"}]
  • 10.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. [ServiceContract] public interface IComplexCalc { [OperationContract] int Add(int a, int b); [OperationContract] ComplexNumber ComplexAdd(ComplexNumber a, ComplexNumber b); } [DataContract] public class ComplexNumber { [DataMember] public int Real { get; set; } [DataMember] public int Imaginary { get; set; } }
  • 17. public class ComplexCalc : IComplexCalc { public int Add(int a, int b) { return a + b; } public ComplexNumber ComplexAdd(ComplexNumber a, ComplexNumber b) { return new ComplexNumber() { Real = a.Real + b.Real, Imaginary = a.Imaginary + b.Imaginary }; } }
  • 18. combined to expose a service through an endpoint ,
  • 19. Client Service Message ABC A B C A B C Address Binding Contract (Where) (How) (What)
  • 21. IPCMSMQ Custom TCP HTTP .NETTransactions Custom Security Reliability HTTP TransactionsSecurity ReliabilityText Text Binary Custom Transport Encoders Protocol Binding Example
  • 22. predefined bindings scenarios HTTP transport, text encodingbasicHttpBinding HTTP transport with/without WS-* supportHttpBinding / wsHttpBinding TCP transport, binary encoding, WS-* supportnetTcpBinding IPC transport, binary encoding, WS-* supportnetNamedPipesBinding TCP transport with Windows Azure, WS-* supportnetTcpRelayBinding TCP transport with context correlation for Workflow ServicesnetTcpContextBinding
  • 23. <bindings> <basicHttpBinding> <binding name="NoCookies" sendTimeout="00:10:00" allowCookies="false"> <security mode="Transport"></security> </binding> </basicHttpBinding> <netTcpBinding> <binding name="bigMessagesWithTransaction" sendTimeout="00:10:00" maxReceivedMessageSize="1048576" transactionFlow="true"> <security mode="Message"></security> </binding> </netTcpBinding>
  • 24. BasicHttpBinding NoCookiesBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport) { AllowCookies = false, SendTimeout = TimeSpan.FromMinutes(10) }; NetTcpBinding bigMessagesWithTransactionBinding = new NetTcpBinding(SecurityMode.Message) { SendTimeout = TimeSpan.FromMinutes(10), MaxReceivedMessageSize = 1048576 };
  • 25. <customBinding> <binding name="MyBinding" sendTimeout="00:10:00"> <transactionFlow/> <reliableSession ordered="true"/> <security authenticationMode= "AnonymousForCertificate"/> <binaryMessageEncoding/> <tcpTransport transferMode= "StreamedResponse"/> </binding> </customBinding>
  • 27. code configuration ServiceHost myHost = new ServiceHost(typeof(ComplexCalc)); -> Configuration myHost.Open(); ServiceHost myHost = new ServiceHost(typeof(ComplexCalc)); -> Code myHost.AddServiceEndpoint(typeof(IComplexCalc), new BasicHttpBinding(), "http://localhost:8080/complex"); //The hosted service information is written in code myHost.Open();
  • 28. the service behavior in aspects like
  • 29. behaviors can be attached code configuration
  • 30. <behaviors> <serviceBehaviors> <behavior name="limitCalls"> <serviceThrottling maxConcurrentCalls="10"/> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] public class ComplexCalc : IComplexCalc {. . .}
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. Service Bus Connectivity Service Relay Protocol Tunnel Eventing Rich options for interconnecting apps across network boundaries Messaging Queuing Pub/Sub Reliable Transfer Reliable, transaction-aware cloud messaging infrastructure for business apps.
  • 46.
  • 47.
  • 50.
  • 51.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.

Editor's Notes

  1. SOA è acronimo di Service Oriented Architecture ed un pattern , per creare architetture di servizi distribuiti che ci permettono di usufruire di una serie di vantaggi. SOA ha cambiato il modo di realizzare Business Application , prima di SOA avevamo o semplici architetture client-server o addiriturra applicazioni monolitiche. SOA sostanzialmente basa i propri pilastri sui i servizi e loro proprietà.
  2. Services are autonomous. Services have explicit boundaries. Services can always be moved to some other location. The side effect is that there can be no cross dependencies. No “spaghetti code”. Clients can only be dependent on the contract. The less dependencies you have, the more productive you are. Services depend on data. There is no dependency on the technology that creates the data. You can choose the right technology for you. Using familiar technologies improves your productivity. Service autonomy simplifies testing. The service can be easily isolated from the system for testing.
  3. SOA nasce in risposta a diversi esigenze, viviamo in mondo distribuito ma connesso, un mondo diverso composto da svariate technologie da integrare, da un business agile e aggressivo, dalla riduzione di costi e dalla complessità delle soluzione e del loro mantenimento ma anche di scalabilità , affidabilità e sicurezza. This a distributed world. Connectivity is cheap, and it is available almost everywhere. It is a world of diversity. There are many different technologies and frameworks. What was considered impossible in terms of connectivity few years ago is trivial today. It is a common requirement to provide online information and to be in sync with globally distributed data. You are having to build applications that are more complex, yet cost less. Business today is agile. Companies are being sold and merged. New business relations and collaborations are being established every day. All this has an impact on the Information Technology industry. If two companies work together, their IT infrastructure must do the same. Integration is a complex problem, especially when dealing with information systems. The volume of data and operations that applications have to support is increasingly growing. Scalability issues are much more relevant today than they used to be only a few years ago.
  4. SOA is an architectural style. Not everything must be designed as a service. SOA was developed to deal with the challenges imposed by the world of high-scale distributed applications. SOA has advantages, but like everything, comes with a price.
  5. SOAP is the most popular standard in the web services arena, but other protocols can also be used. SOAP is the container for data sent between the client and the service, in both directions. A SOAP message is written into an envelope. The body contains the data that is defined in the contract Data is encoded into a SOAP message. SOAP provides encoding for native types RESTful services return XML data that is enc REST is not a standard; it is an architectural style or approach. The idea of REST is enabling simplicity and interoperability. Instead of creating one more layer using one more protocol (i.e. SOAP) use an existing protocol (for example, HTTP). Instead of defining a custom contract let us use HTTP verbs. REST claims that it is possible to express almost anything with the GET, PUT, POST, and DELETE verbs and relevant parameters. Instead of using custom messages use URIs. Because the contract is predefined and anyone can parse HTTP, REST is excellent for interoperability. oded in one of several standardized encodings (for example, Atom-Pub, JSON, Plain Old XML (POX), Atom). Many web-scale data applications use REST. For example, Windows® Azure™ Storage is based on REST. .NET provides frameworks for building REST applications (for example, Microsoft ADO.NET Data Services and WCF). WS-* standards are a group of specifications defining information transfer to and from Web services. WS-* are XML-based. They define XML elements and attributes (with appropriate namespaces) to be placed inside messages (usually SOAP). There is a lot of information Web services need to exchange to provide features like transactions, security, and reliable messaging. WS-* standards define where and how the information is to be transferred. Interoperability depends on WS-*. SOAP and the WS-* standards were designed to support such interoperability
  6. WCF was introduced in .NET framework 3.0. It is the framework for building service oriented applications. WCF is a unified framework meaning that it supports all communication protocols and messaging patterns. WCF interoperate with older technologies like Microsoft ASP.NET Web Services. WCF is based on SOA principles, which makes it interoperable by design. WS-* standards provide exciting opportunities, but they are difficult to implement. WCF provides all the heavy lifting of the standards implementation, so you can easily write powerful services. WCF supports both SOAP and REST. You have the freedom to chose which approach to use.
  7. WCF provides a simple model of a distributed applications (i.e. the Service Model layer). A service exposes endpoints. An endpoint is a combination of Address, Binding, and Contract (the ABC’s) You can always extend the Message Model layer and get full control, which allows you to customize WCF’s behavior.
  8. When writing a service, follow the following process: Define a contract. Implement the contract, and then create the service implementation. Write the configuration (code or config file), and then host the service. Test the service. Create a client, and consume the service.
  9. Before writing a service we must define what the service will expose. This is done by defining a contract. The contracts defines the shape of that data the service expects and the messaging pattern to use. The contract is the only agreement between the client and the service. A service contract describes the functionality exposed by the service. A service contract defines the XML document the service expects for invoking each operation. A service contract is written as a .NET interface decorated with the ServiceContract and OperationContract attributes. Data contracts define the serialization of complex objects to be transferred. Defining a Data Contract is simple. Just decorate a class with the DataContract and DataMember attributes.
  10. WCF provides a powerful infrastructure that can convert a simple class into a service The host is where the service implementation and WCF infrastructure are combined to expose a service. An active service listens for requests. By now we have a service implementation, but it is only a class that implement an interface. Something must bring it to life. This is the host.. For simplicity, WCF defines an abstraction for the listening ports called “endpoints”. Thus the host’s main responsibility is to create endpoints for the service. (The host has many other responsibilities.) When a request arrives, the host sends it to an instance of the service to compute the response. An endpoint is a combination of Address + Binding + Contract (ABC).
  11. In WCF, messages are exchanged between endpoints. The SOA terminology defines the term “edge” for a service as its boundary. Endpoints are SOA edges. A service must have some explicit edges. Clients can only access services though edges. A service can have several endpoints, with different address and technologies. It is easy to understand using the following real life example: If you consider a bank as a service, the bank exposes a variety of operations. We can consume those operations in several endpoints: The branch office: The address is the physical address of the branch. The communication technology we use to communicate with the bank is our car. The protocol we use is based on our language (English). The contract is the set of operations we can consume in the branch. (Usually in the branch we can do anything that is allowed for a customer of our kind.) Telephone: The address is the telephone number of the bank. The communication technology we use to communicate with the bank is Telephone (Public Switched Telephone Network (PSTN)). The protocol we use is based on our language (English). The contract is the set of operations we can consume in a telephone call. (Usually there are operation we are not allowed to consume when using the telephone.) Internet The address is the bank URL. The communication technology we use to communicate with the bank is Transmission Control Protocol/Internet Protocol (TCP/IP). The protocol we use is based on HTTP. The contract is the set of operations we can consume through the Internet site. (Usually there are operations we are not allowed to consume when using the Internet.) The above dictates that the same service should expose different endpoints.
  12. The “Binding” concept is a key factor in achieving a simple design solution to a problem that was considered complex. The binding describes all technology related with sending a message from A to B. Question: What is a message pipeline? Answer: The process a message go through (when being sent or received) that is built out of building blocks that accept and return a message. The building blocks can be arranged in arbitrary order. A message passes through a pipeline when sent out of the client, when received at the server, and vice versa. The message pipeline is described by the binding. The basic pipeline building blocks are: Transport: Physical communication between A and B (for example, HTTP, TCP, Microsoft Message Queuing (MSMQ)). Encoding: Writing the message on the wire (for example, Binary, Text, Message Transmission Optimization Mechanism (MTOM)). Other protocols, such as security and reliable messaging. All the definitions and configurations describing the message pipeline are written in one place. This is why the binding simplifies the communication problem. To move to the next binding element, the current binding element must be satisfied. To do that protocol pipeline elements can create a negotiation with their matching pipeline element on the other side. For example before sending a message the security building block must be satisfied. To satisfy the security block, security messages are sent implementing a security protocol (for example, request for security token and request for security token response). Other messages can pass only after the security protocol is satisfied. Question: Why do you need to be able to write your own custom binding elements? Answer: If you want to check for something in each message that arrives to the service (for example a special header that contains a user's security token), then you will prefer to write a binding element and place it in the pipeline so it will be called automatically on every message that arrives. This prevents having to call the same code over and over in each and every operation of the service.
  13. A binding is a combination of binding elements. There are many predefined binding elements. You can also create new custom binding elements. To create new binding elements, choose the binding elements and put them in the correct order. The difference between existing bindings is simply the binding elements INSERT that they are composed from.
  14. There is no need for the developer to define the binding and the composition of channels when programming a service host, because WCF supplies a collection of out of the box bindings which were defined for common scenarios. There is usually no need to create a custom binding, but INSERT it is possible to do so by simply creating a new arrangement of existing binding elements (easy), or by creating a new binding element (defining a new channel) and putting it inside a new arrangement (more complex). The number of predefined bindings is growing, as new ones are constantly being released. Binding choices on the client and on the server must match. To choose the correct binding for you, review your requirements (security, transaction, interoperability), and identify the most appropriate binding. For example: If there is an interoperability requirement (C# <-> J2EE) then binary encoding cannot be used (the binary encoding is Microsoft proprietary), thus netTcpBinding should not be used. When a new technology is introduced into WCF, a new set of bindings is created. For example, Windows® Azure™ and the relay bindings.
  15. You configure binding in code. (It is possible to create a complete WCF application without any XML configuration.) Predefined bindings are exposed as .NET classes. You configure binding by setting the properties on an instance of a binding object. In this simple code snippet, the same configuration written in the XML configuration file on the last slide is repeated.
  16. You can create a custom binding by simply creating a new arrangement of existing binding elements. This XML configuration code snippet demonstrate how to create a custom binding called “MyBinding”, by rearranging existing binding elements. The binding elements themselves expose a wider configuration capabilities than the binding objects. Sometimes a particular property needs to be configured, but it is not exposed by the binding. The solution is to create a custom binding, and then configure the binding elements as required. The binding elements can validate that they are arranged correctly. If the arrangement does not make sense, the validation process will throw an exception.
  17. After having described all the endpoint components, you can now finally define an endpoint. To define an endpoint, all you need is to set a combination of Address+Binding+Contract. This can be done in code, and in the configuration file as demonstrated above. Every service can define multiple endpoints. The name attribute in the service configuration is the name of the service implementation class. To attach a binding configuration (like the one defined on the last slide), use the bindingConfiguration( attribute in the endpoint configuration element. <endpoint address=“http://localhost:8080/complex”               binding="basicHttpBinding“ bindingConfiguration=“NoCookies”               contract="calculators.IComplexCalc"/> The service can define a base address for each addressing scheme. (For example, HTTP or TCP) The endpoint address is relative to the base address. <service name=“Calculators.ComplexCalc“> <host> <baseAddresses> <add baseAddress="http://localhost:8080"/> </baseAddresses> </host> <endpoint address=“complex”               binding="basicHttpBinding“ bindingConfiguration=“NoCookies”               contract="calculators.IComplexCalc"/> </service> The client defines an endpoint at the client configuration that matches a service endpoint to which it sends it’s requests. <client> <endpoint name="ComplexCalcEP" address="http://localhost:8080/complex” binding=“basicHttpBinding" bindingConfiguration="NoCookies“  contract="calculators.IComplexCalc"/> </client>
  18. A host can be built on top of any Windows process. This means that a thick client (Console, WinForms, or Windows Presentation Foundation (WPF)) can host a WCF service. Hosting will be discussed in detail in module 3. The configuration for hosting a service is put under WCF configuration section : <system.serviceModel> The base class for WCF hosts is ServiceHostBase.(bold?) In reality, the class used to create a host is ServiceHost.(bold?) Hosts created in code must be opened explicitly. Commercial hosts (e.g. IIS, WAS, or AppFabric) are opened automatically. This code snippet demonstrates a host that is created in code. The first host uses the configuration file for all endpoints configuration. The second host defines the endpoint in code. One of the new features of WCF 4 is configuration defaults for default endpoints, which makes host creation even simpler. In WCF 4, you can run the following code without a configuration file. A host will be created, and an endpoint will open. ServiceHost myHost = new ServiceHost(typeof(ComplexCalc), new Uri("http://localhost:8080/Complex") )); myHost.Open(); WCF will choose the binding automatically, and create the endpoint.
  19. Sending a message from A to B is not all there is to be done. Something must process the message: serialize / deserialize it, create an instance of the service, and call the correct method. There are several dispatchers that are responsible for the message processing before the service is invoked. It is possible to intervene with the dispatchers’ processing using behaviors.
  20. The mechanism to configure the dispatchers is called behaviors There are many predefined behaviors that allow configuration of different aspects in the WCF framework. Some of the behaviors can be set only in code, while some can be set in both code and configuration. Some of the aspects configured by behaviors are developer oriented (for example, concurrency, instancing, and serialization). Some of the aspects configured by behaviors are deployment oriented (X.509 stores, Throttling).
  21. You can group several behaviors together. You can define several behavior groups. In this configuration snippet, a group called “limitCalls” is created. Some of the aspects configured by behaviors are developer-oriented—for example, concurrency, instancing, and serialization. Some of the aspects configured by behaviors are deployment-oriented—for example, X.509 stores, and throttling. Deployment-oriented settings cannot be set in code. The natural location for developer-oriented settings is inside the code. Behaviors can be attached to a service declaratively by decorating the service implementation class with the behavior attribute. Behaviors can be attached to a service imperatively using the following code: var myHost = new ServiceHost(typeof(ComplexCalc)); var metadataBehavior = new ServiceMetadataBehavior( ); metadataBehavior.HttpGetEnabled = true; myHost.Description.Behaviors.Add(metadataBehavior);
  22. http://www.asp.net/vnext/overview/videos/signalr-and-web-sockets
  23. All things OData: http://odata.org, for CRUD Operation on RESTFUL Web Service The Open Data Protocol (OData) is a Web protocol for querying and updating data that provides a way to unlock your data and free it from silos that exist in applications today. OData does this by applying and building upon Web technologies such as HTTP, Atom Publishing Protocol (AtomPub) and JSON to provide access to information from a variety of applications, services, and stores
  24. The Windows Azure Service Bus provides a hosted, secure, and widely available infrastructure for widespread communication, large-scale event distribution, naming, and service publishing. The Service Bus provides connectivity options for Windows Communication Foundation (WCF) and other service endpoints – including REST endpoints -- that would otherwise be difficult or impossible to reach http://msdn.microsoft.com/en-us/library/windowsazure/ee732537.aspx
  25. . Endpoints can be located behind network address translation (NAT) boundaries, or bound to frequently-changing, dynamically-assigned IP addresses, or both can be reached through this technology. The Service Bus provides both “relayed” and “brokered” messaging capabilities. In the relayed messaging pattern, the relay service supports direct one-way messaging, request/response messaging, and peer-to-peer messaging. Brokered messaging provides durable, asynchronous messaging components such as Queues, Topics, and Subscriptions, with features that support publish-subscribe and temporal decoupling: senders and receivers do not have to be online at the same time; the messaging infrastructure reliably stores messages until the receiving party is ready to receive them.
  26. http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-relay/
  27. The base URI for all endpoints within my “pluralsight” service namespace is http://pluralsight.servicebus.windows.net/. If you browse to this base address, you’ll receive an Atom feed representing your Service Bus registry. They are “trees” because of the hierarchical nature of the namespace (names within name within names). The way you project Service Bus names onto URI’s is as follows: [scheme]://[service-namespace].servicebus.windows.net/[name1]/[name2]/...   The Service Bus supports three URI schemes: “sb”, “http”, and “https”. You’ll use “http” and “https” for all HTTP-based endpoints and the “sb” scheme for all other TCP-based endpoints. The service-namespace portion of the host name identifies a unique naming tree within the entire Service Bus namespace, which is completely controlled by the namespace owner. For example, all names within my “pluralsight” namespace must start with either sb://pluralsight.servicebus.windows.net/ or http(s)://pluralsight.servicebus.windows.net/, depending on the protocol. Everything after the base URI is part of the user-defined namespace. I can create a very large number of names within my namespace through name hierarchies. For example, suppose we have an office in Boston, Salt Lake City, and Los Angeles, and each one needs to publish endpoints. We could assign each office a unique name and give the office control over defining names within its hierarchy: sb://pluralsight.servicebus.windows.net/boston/ sb://pluralsight.servicebus.windows.net/saltlakecity/ sb://pluralsight.servicebus.windows.net/losangeles/   Then suppose each of the offices needs to expose an endpoint for a (location specific) training registration service. They could accomplish that by adding “training” to the end of their URI’s: sb://pluralsight.servicebus.windows.net/boston/training sb://pluralsight.servicebus.windows.net/saltlakecity/training sb://pluralsight.servicebus.windows.net/losangeles/training   And if the Boston office, as the headquarters, needs to expose a payment processing service, it can simply create another endpoint name using “payment” within its namespace: sb://pluralsight.servicebus.windows.net/boston/training/payment   These different service endpoints don’t have to be hosted on the same server, on the same network or even in the same geography. It’s the job of the Service Bus, and specifically the relay service, to determine where the endpoints are physically located at resolution time. The Service Bus does not provide an API for directly interacting with the naming system. Instead, you access the naming system through the service registry functionality.
  28. Service Bus Port Settings http://msdn.microsoft.com/en-us/library/windowsazure/ee732535.aspx
  29. One way one sender one receiver..
  30.  Service Bus provides a binding called netEventRelayBinding. This binding enables a publish/subscribe communication pattern over WCF, which is not available from any of the built-in WCF bindings. The netEventRelayBinding binding allows multiple applications to subscribe to messages sent to an endpoint. Any messages sent to that endpoint are received by all applications. The Service Bus implements the netEventRelayBinding by allowing multiple listeners to register themselves at a URI specified by the first sender. Each service host that has an endpoint listening on that same URI implicitly becomes a subscriber. When a client sends a message to that URI, the message is delivered to all service endpoints currently subscribed. In this scenario, the back-end system plays the role of the WCF client and broadcasts (publishes) a message to all subscriber
  31. Two way between sender & receiver
  32. One message one consumer