Data Transport Standard - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

Data Transport Standard

Description:

Gary Sandler - PESC. 2. Data ... null; private String sourceIDCode = null; ... Gary Sandler, ELM Resources (510) 903-7960. gsandler_at_elmresources.com ... – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 63
Provided by: nch81
Category:

less

Transcript and Presenter's Notes

Title: Data Transport Standard


1
Data Transport Standard
  • Nathan Chitty - PESC
  • Gary Sandler - PESC

2
Data Transport Standard - DTS
  • DTS uses Internet technologies to facilitate real
    time data exchange and transaction processing
  • DTS builds on stable technologies, not specific
    products
  • DTS, once implemented, reduces programming and
    per-transaction costs through standardization

3
DTS Defined
  • Data Transport Standard is a specification not a
    product
  • Established by Postsecondary Education Standards
    Council (PESC) for exchanging data for
  • Inquiries
  • Reports
  • Transactions

4
DTS Defined
  • A specification for an adjunct to or a
    replacement for existing data transport
    mechanisms
  • PGP / GnuPG encryption
  • SecretAgent w/ Email
  • FTP and SecureFTP

5
DTS Benefits
  • A Web Services implementation
  • Delivery confirmation included no guessing
  • All requests get a response
  • All submissions get an answer of some kind
  • Facilitates real time data exchange

6
DTS Benefits
  • Includes automatic data encryption
  • Uses digital signature standards
  • Platform independent
  • Strong authentication with non-repudiation

7
Benefits To System Providers
  • Add value to schools systems
  • Schools want transport added to systems and are
    generally not concerned with the technologies
  • Easier to build one transport protocol for all
    recipients
  • Just as CommonRecord created the drive to build
    one XML format

8
Benefits to Service Providers
  • As everyone implements DTS, the need to support
    other transports will drop
  • If any school implements DTS, service providers
    will have to support it
  • Also provides a single communication
    infrastructure option for internal systems

9
DTS Specification
  • Specification covers
  • Technical interchange rules and processes
  • Recommended best practices
  • Technical Specification is the pure Simple Object
    Access Protocol (SOAP) interface
  • Implementation Guide is for both .Net and Java
    reference implementations

10
DTS Specification
  • Reference implementation examples are available
  • Specification does not cover
  • Business rules for transaction processing
  • Operational oversight, monitoring or escalation

11
Data Transport Issues in Higher Ed
  • E-mail is not reliable or flexible enough
  • No guarantee of delivery
  • No guarantee of order of delivery for sequence
    dependent data
  • No automatic confirmation of receipt or facility
    for retransmit

12
Data Transport Issues in Higher Ed
  • E-mail is not reliable or flexible enough
    (continued)
  • No synchronous response available
  • Email size limitations

13
Data Transport Issues in Higher Ed
  • FTP data exchange has own challenges
  • Possible to overwrite earlier files
  • No confirmation of receipt
  • No synchronous response

14
Data Transport Issues in Higher Ed
  • Encryption today is always separate and subject
    to its own
  • Issues
  • Maintenance
  • Failures

15
DTS Addresses These Transport Issues
  • DTS addresses
  • The confirmation issue with a send-receive
    protocol confirmation is built in
  • The order of delivery problem by actively
    delivering and receiving the data no
    unconfirmed hand-offs

16
DTS Addresses These Transport Issues
  • DTS addresses
  • The size problem through data compression
  • The FTP overwrite problem by not using filenames

17
DTS Addresses These Transport Issues
  • DTS addresses
  • The lack of a synchronous response by building in
    a required synchronous response, even if only for
    handling status
  • The encryption issue by using standard HTTPS for
    encryption the same technology as for online
    banking

18
DTS Technical Workgroup
  • Task Create a written specification for
    real-time exchange of data between organizations
  • Meets business requirements
  • Standards based
  • Standard technologies (Java, .Net)
  • Payload Insensitive
  • Secure and reliable

19
DTS Technologies
  • Global XML Web Service Architecture (GXA),
    generally accepted as the foundation for building
    Web Services
  • WSDL (Web Service Definition Language)
  • SOAP (Simple Object Access Protocol)
  • WS-I (Web Service Interoperability)
  • WS-S (Web Service Security)

20
DTS Technologies
  • WS-Security (Digital Signatures)
  • Strong authentication with non-repudiation
  • X.509 encryption keys and certificate authorities
  • SSL encryption of HTTP streams

21
Anticipated Architectures
  • Immediate processing
  • Request and processed Result Response
  • Push/Push deferred processing
  • Request and Acknowledge Response
  • Request with Result and Acknowledge Response
  • Push/Pull deferred processing
  • Request and Acknowledge Response (just send)
  • Request for Result and Result Response

22
Immediate
23
Push/Push
24
Push/Pull
25
DTS Analogy
  • DTS is the definition of the Pipe and the
    structure of its contents
  • The Pipe is the internet
  • The content is SOAP
  • The end points/junctions are Web Services
  • The sources are Web Service enabled clients

26
DTS Analogy
  • DTS defines how others can connect to the Pipe
    already installed
  • Any connections must have certain threads
  • Any connections must handle two way traffic
    independent of how the traffic will be used

27
DTS Analogy
  • By knowing about the pipe and the type of
    connections, any plumber can use his/her own
    tools to make connections just so long as the
    threads match

28
Extending the Analogy
  • We all have plumbing and fixtures
  • Very unlikely we all have the same type of
    fixtures
  • Yet our water companies still deliver to us all
  • All our fixtures use (process) it
  • All our drains return it

29
How Did We Do It?
  • Created basic HelloWorld service and client
  • Worked interoperable
  • Added simple Headers to HelloWorld
  • Was not interoperable
  • Added complex Header to HelloWorld
  • Was not interoperable

30
Why SOAP Headers
  • To answer routing and processing expectations
    without opening the payload
  • Remain payload insensitive
  • Allow extensibility for new processes

31
DTS SOAP Headers
  • DTSRequestRouting
  • DTSRequestServiceExpectation
  • DTSRequestPayloadType
  • DTSRequestSignature
  • DTSResponseRouting
  • DTSResponseAcknowledge
  • DTSResponsePayloadType
  • DTSResponseSignature

32
Convoluted Filename vs Header Elements
  • A B ltX.Y.ZMgt
  • A File Type, B Encrytption, X.Y.Z key
    identifier, M Unique message ID
  • Encryption unnecessary because using HTTPS
  • DTSRequestPayloadType A
  • DTSRequestRouting
  • SourceIDSubCode X, SourceID Y(.Z)
  • UUID M

33
Interop Problem with SOAP Headers
  • xsitype attribute in Header elements
  • Java includes and requires this attribute
  • .Net does not

34
All about SOAP
  • ltsoapHeadergt
  • ltDTSRequestPayloadType xsitype"DTSRequestPa
    yloadType" xmlns"http//www.datatransportstandar
    d.com"gt
  • ltvaluegtCRC01Requestlt/valuegt
  • lt/DTSRequestPayloadCodegt

35
SOAP is the Key
  • The SOAP transmitted across the wire is of
    primary importance
  • Element names
  • Type attribute
  • Not Namespace moniker (Java uses one by default,
    .Net does not)
  • How you get the correct SOAP is not important

36
SOAP Differences That Do Not Matter
Java ltns1DTSRequestSignature soapenvmustUnder
stand"0" xsitype"ns1DTSRequestSignature"
xmlnsns1"http//www.datatransportstandard.com"gt
ltns1valuegtSignatureValuelt/ns1valuegt lt/ns1DTS
RequestSignaturegt .Net ltDTSRequestSignature
xsitype"DTSRequestSignature"
xmlns"http//www.datatransportstandard.com"gt lt
valuegtSignatureValuelt/valuegt lt/DTSRequestSignature
gt
37
Reference Implementation Architecture
  • Client Application
  • Client Core
  • Service Core
  • Service Application

38
Client Application
  • Knows nothing of SOAP or Web Services
  • Implements Client Core Interface
  • Setters and Getters of DTS specific elements
  • Houses specific business logic

39
Client Core
  • Knows nothing of business logic
  • Uses properties set to construct the SOAP
  • Interface for setting send and getting
    returned elements
  • Handles the communication to Service Core- DTS
    Specification

40
Service Core
  • Accepts transmissions from Client Core
  • Implements Service Application Interface
  • Setters and Getters of DTS specific elements
  • Creates return SOAP
  • Format return acknowledgement or data from
    Service Application
  • Construct SOAP faults

41
Service Core (continued)
  • Isolated business logic
  • Examples
  • Invoke Service Application based on payload
  • Place payload in queue

42
Service Application
  • Interface for setting sent and getting to be
    returned elements
  • Houses specific business logic
  • Knows nothing of SOAP or Web Services

43
Connecting the layers
44
Connecting the layers
45
Connecting the layers
46
Connecting the layers
47
Connecting the layers
48
Additional DTS Information
  • Visit PESC at www.pesc.org
  • Materials available include
  • Executive summaries
  • Specifications
  • Reference (proof of concept) implementations

49
Adding SOAP Headers
  • Change WSDL Still has problems
  • Create Container Classes
  • Container Classes require serialization/de-seriali
    zation directives

50
Adding SOAP Headers
  • Augment Service Code
  • Augment Client Code

51
Java Creating the Container Classes for the
Service (IN)
  • package com.datatransportstandard.www.serializable
  • import java.io.Serializable
  • public class DTSRequestRouting implements
    Serializable
  • private String sourceID null
  • private String sourceIDCode null
  • private String recipientID null
  • private String recipientIDCode null
  • private String uuid null
  • private String transmissionDateTime null
  • public String getSourceID() return sourceID
  • public void setSourceID(String newSourceID)
  • sourceID newSourceID
  • public String getRecipientID() return
    recipientID
  • public void setRecipientID(String
    newRecipientID)
  • recipientID newRecipientID
  • public String getRecipientIDCode() return
    recipientIDCode
  • public void setRecipientIDCode(String
    newRecipientIDCode)
  • recipientIDCode newRecipientIDCode
  • public String getUUID() return uuid
  • public void setUUID(String newUUID)
  • uuid newUUID

52
Java Creating the Container Classes for the
Service (OUT)
  • public String getRecipientID() return
    recipientID
  • public void setRecipientID(String
    newRecipientID)
  • recipientID newRecipientID
  • public String getRecipientIDCode() return
    recipientIDCode
  • public void setRecipientIDCode(String
    newRecipientIDCode)
  • recipientIDCode newRecipientIDCode
  • public String getUUID() return uuid
  • public void setUUID(String newUUID)
  • uuid newUUID
  • package com.datatransportstandard.www.serializable
  • import java.io.Serializable
  • public class DTSResponseRouting implements
    Serializable
  • private String sourceID null
  • private String sourceIDCode null
  • private String recipientID null
  • private String recipientIDCode null
  • private String uuid null
  • private String transmissionDateTime null
  • public String getSourceID() return sourceID
  • public void setSourceID(String newSourceID)
  • sourceID newSourceID

53
Java Examples (Service)
  • Modify the WSDD
  • ltbeanMapping languageSpecificType"javacom.datatr
    ansportstandard.www.serializable.DTSRequestRouting
    " qname"ns2DTSRequestRouting"
    xmlnsns2"http//www.datatransport.com"/gt
  • ltbeanMapping languageSpecificType"javacom.datatr
    ansportstandard.www.serializable.DTSResponseRoutin
    g" qname"ns3DTSResponseRouting"
    xmlnsns3"http//www.datatranportstandard.com"/gt
  • Augment the Code (inbound)
  • MessageContext ctx MessageContext.getCurrentCon
    text()
  • SOAPEnvelope requestEnv ctx.getRequestMessage(
    ).getSOAPEnvelope()
  • SOAPHeaderElement requestHeader
    requestEnv.getHeaderByName("http//www.datatransp
    ortstandard.com",
  • DTSRequestRouting")
  • DTSRequestRouting incontainer
    (DTSRequestRouting) requestHeader.getObjectValue(
    )
  • System.out.println(SourceId
    incontainer.getSourceId())

54
Java Examples (Service)
  • Augment the Code (outbound)
  • DTSResponseRouting outcontainer new
    DTSResponseRouting()
  • outcontainer.setSourceId(TEST SOURCE ID)
  • outcontainer.setSourceIdType(TEST SOURCE ID
    TYPE)
  • SOAPHeaderElement responseHeader new
    SOAPHeaderElement(http//www.datatransportstandar
    d.com
  • ,DTSResponseRouting)
  • responseHeader.setObjectValue(outcontainer)
  • SOAPEnvelope responseEnv ctx.getResponseMessage(
    ).getSOAPEnvelope()
  • responseEnv.addHeader(responseHeader)

55
Java Examples (Client)
  • Augment the Code (General)
  • QName qn new QName(http//www.datatransportstan
    dard.com,DTSRequestRouting)
  • call.registerTypeMapping(DTSRequestRouting.class,
    qn,
  • new BeanSerializerFactory(DTSRequestRouting.c
    lass, qn),
  • new BeanDeserializerFactory(DTSRequestRouting
    .class, qn))
  • QName qn1 new QName(http//www.datatranpsortsta
    ndard.com,DTSResponseRouting)
  • call.registerTypeMapping(DTSResponseRouting.class
    , qn1,
  • new
  • BeanSerializerFactory(DTSResponseRouting.class,
    qn1),
  • new BeanDeserializerFactory(DTSResponseRoutin
    g.class, qn1))

56
Java Examples (Client)
  • Augment the Code (outbound)
  • DTSRequestRouting outcontainer new
    DTSRequestRouting()
  • outcontainer.setSourceId(TEST SOURCE ID)
  • outcontainer.setSourceIdType(TEST SOURCE ID
    TYPE)
  • SOAPHeaderElement requestHeader new
    SOAPHeaderElement(http//www.datatransportstanda
    rd.com, DTSRequestRouting)
  • requestHeader.setObjectValue(outcontainer)
  • call.addHeader(requestHeader)

57
Java Examples (Client)
  • Augment the Code (inbound)
  • SOAPEnvelope responseEnv call.getMessageContext(
    ).getResponseMessage().getSOAPEnvelope()
  • SOAPHeaderElement responseHeader
    responseEnv.getHeaderByName(http//www.datatransp
    ortstandard.com,DTSResposneHeader)
  • DTSResponseHeader incontainer
    (DTSResponseHeader) responseHeader.getObjectValue(
    )
  • System.out.println(Source Id
    intcontainer.getSourceId())

58
.Net Creating the Container classes for Service
  • XmlTypeAttribute(Namespacehttp//www.datatransp
    ortstandard.com)
  • XmlRootAttribute(ElementNameDTSRequestRouting,
    Namespacehttp//www.datatransportstandard.com,
    IsNullablefalse)
  • XmlInclude(typeof(DTSRequestRouting))
  • public class DTSRequestRouting
    System.Web.Services.Protocols.SoapHeader
  • public string UUID
  • public string transmissionDateTime
  • public string sourceID
  • public string sourceIDCode
  • public string recipientID
  • XmlTypeAttribute(Namespacehttp//www.datatransp
    ortstandard.com)
  • XmlRootAttribute(ElementNameDTSResponseRouting
    , Namespacehttp//www.datatransportstandard.com
    , IsNullablefalse)
  • XmlInclude(typeof(DTSResponseRouting))
  • public class DTSResponseRoutingElements
    System.Web.Services.Protocols.SoapHeader
  • public string UUID
  • public string transmissionDateTime

59
.Net Augment the Service
  • Add declarations to service Class
  • public DTSRequestRouting DTSRequestRoutingVal
  • public DTSResponseRoutingElements DTSResponseRout
    ingVal
  • public SoapUnknownHeader unknownHeaders
  • Add serialization directives to WebMethod()
  • SoapHeaderAttribute("DTSRequestRoutingVal")
  • SoapHeaderAttribute("DTSResponseRoutingVal",
    DirectionSoapHeaderDirection.Out)
  • SoapHeader("unknownHeaders")

60
.Net Creating the Container classes for Client
  • XmlTypeAttribute(Namespace"http//www.datatransp
    ortstandard.com")
  • XmlRootAttribute(ElementName"DTSRequestRouting",
    Namespace"http//www.datatransportstandard.com",
    IsNullablefalse)
  • XmlInclude(typeof(DTSRequestRouting))
  • public class DTSRequestRoutingElements
    System.Web.Services.Protocols.SoapHeader
  • public string UUID
  • public string transmissionDateTime
  • public string sourceID
  • public string sourceIDCode
  • public string recipientID
  • XmlTypeAttribute(Namespace"http//www.datatransp
    ortstandard.com")
  • public class DTSRequestRouting
    DTSRequestRoutingElements
  • XmlTypeAttribute(Namespace"http//www.datatransp
    ortstandard.com")
  • XmlIncludeAttribute(typeof(DTSResponseRouting))
  • XmlRootAttribute("DTSResponseRouting",
    Namespace"http//www.datatransportstandard.com",
    IsNullablefalse)
  • public class DTSResponseRouting
    System.Web.Services.Protocols.SoapHeader

61
.Net Augment the Client
  • Add declarations to Client Web Reference/Proxy
    Class
  • public DTSRequestRoutingElements
    DTSRequestRoutingVal
  • public DTSResponseRouting DTSResponseRoutingVal
  • Add serialization directives to WebMethod()
  • SoapHeaderAttribute("DTSRequestRoutingVal")
  • SoapHeaderAttribute("DTSResponseRoutingVal",
    DirectionSoapHeaderDirection.Out)

62
Contact Information
We appreciate your feedback and comments. We can
be reached at
Nathan Chitty, Nelnet, Inc.(904)
281-7235nathan.chitty_at_nelnet.net Gary Sandler,
ELM Resources (510) 903-7960 gsandler_at_elmresource
s.com
Write a Comment
User Comments (0)
About PowerShow.com