Zn Tuesday 22 May 12 Zn Pharo Conference May 2012 Sven Van - - PowerPoint PPT Presentation

zn
SMART_READER_LITE
LIVE PREVIEW

Zn Tuesday 22 May 12 Zn Pharo Conference May 2012 Sven Van - - PowerPoint PPT Presentation

Zn Tuesday 22 May 12 Zn Pharo Conference May 2012 Sven Van Caekenberghe Tuesday 22 May 12 Zinc HTTP Components Tuesday 22 May 12 started Sept 2010 included in Pharo 1.3, 1.4, 2.0 Tuesday 22 May 12 WWW HTTP Tuesday 22 May 12 [ | ]


slide-1
SLIDE 1

Zn

Tuesday 22 May 12
slide-2
SLIDE 2

Zn

Pharo Conference May 2012 Sven Van Caekenberghe

Tuesday 22 May 12
slide-3
SLIDE 3

Zinc

HTTP

Components

Tuesday 22 May 12
slide-4
SLIDE 4

started Sept 2010 included in Pharo 1.3, 1.4, 2.0

Tuesday 22 May 12
slide-5
SLIDE 5

HTTP WWW

Tuesday 22 May 12
slide-6
SLIDE 6

[ | ]

Understandability

Tuesday 22 May 12
slide-7
SLIDE 7

HTTP

Framework

Tuesday 22 May 12
slide-8
SLIDE 8

Client / Server

Tuesday 22 May 12
slide-9
SLIDE 9

Request Response Client Server

Tuesday 22 May 12
slide-10
SLIDE 10

Model

Tuesday 22 May 12
slide-11
SLIDE 11

ZnRequest ZnResponse ZnClient ZnServer

Tuesday 22 May 12
slide-12
SLIDE 12

ZnRequest

Tuesday 22 May 12
slide-13
SLIDE 13

ZnRequest

ZnRequestLine ZnHeaders ZnEntity

ZnMessage

Tuesday 22 May 12
slide-14
SLIDE 14

ZnRequest

ZnRequestLine ZnHeaders

ZnMessage

Tuesday 22 May 12
slide-15
SLIDE 15

ZnRequest

ZnRequestLine Verb URI ZnHeaders key:value * ZnEntity type/length/content

ZnMessage

Tuesday 22 May 12
slide-16
SLIDE 16

ZnResponse

Tuesday 22 May 12
slide-17
SLIDE 17

ZnRespone

ZnStatusLine ZnHeaders ZnEntity

ZnMessage

Tuesday 22 May 12
slide-18
SLIDE 18

ZnResponse

ZnStatusLine ZnHeaders

ZnMessage

Tuesday 22 May 12
slide-19
SLIDE 19

ZnResponse

ZnStatusLine Code Reason ZnHeaders key:value * ZnEntity type/length/content

ZnMessage

Tuesday 22 May 12
slide-20
SLIDE 20

example

Tuesday 22 May 12
slide-21
SLIDE 21

ZnClient new get: ‘http://zn.stfx.eu/zn/small.html’.

Tuesday 22 May 12
slide-22
SLIDE 22

ZnRequest

GET /zn/small.html HTTP/1.1 Host: zn.stfx.eu User-Agent: Zinc...

ZnMessage

Tuesday 22 May 12
slide-23
SLIDE 23

ZnResponse

HTTP/1.1 200 OK Date: Tue, 08 May.. Server: Zinc... text/html, 113B <html>...</html>

ZnMessage

Tuesday 22 May 12
slide-24
SLIDE 24

Framework

Tuesday 22 May 12
slide-25
SLIDE 25

Core

Tuesday 22 May 12
slide-26
SLIDE 26

Zinc-HTTP-Core

  • ZnMessage
  • ZnRequest
  • ZnResponse
  • ZnHeaders
  • ZnRequestLine
  • ZnStatusLine
Tuesday 22 May 12
slide-27
SLIDE 27

Zinc-HTTP-Core

  • ZnEntity
  • ZnStringEntity
  • ZnByteArrayEntity
  • ZnStreamingEntity
Tuesday 22 May 12
slide-28
SLIDE 28

Zinc-HTTP-Core

  • ZnEntity
  • ZnMultiPartFormDataEntity
  • ZnApplicationFormUrlEncodedEntity
  • ZnMimePart
Tuesday 22 May 12
slide-29
SLIDE 29

Support

Tuesday 22 May 12
slide-30
SLIDE 30

Zinc-HTTP-Support

  • ZnUrl
  • ZnMimeType
Tuesday 22 May 12
slide-31
SLIDE 31

Zinc-HTTP-Support

  • Networking
  • Authentication & Authorization
  • Sessions, Cookies
  • Constants, Parameters, Settings
  • Utils
Tuesday 22 May 12
slide-32
SLIDE 32

Streaming

Tuesday 22 May 12
slide-33
SLIDE 33

Zinc-HTTP-Streaming

  • Binary IO
  • Bivalent Output
  • Character Encoding/Decoding
  • Chunked, Gzip Transfer
Tuesday 22 May 12
slide-34
SLIDE 34

Exceptions

Tuesday 22 May 12
slide-35
SLIDE 35

Zinc-HTTP-Exceptions

  • Protocol specific
  • Implementation Limits
  • Parsing Errors
Tuesday 22 May 12
slide-36
SLIDE 36

Logging

Tuesday 22 May 12
slide-37
SLIDE 37

Zinc-HTTP-Logging

  • Announcement based
  • Destinations
  • Transcript
  • File
  • Stdout
  • Memory
Tuesday 22 May 12
slide-38
SLIDE 38

Client

Tuesday 22 May 12
slide-39
SLIDE 39

Zinc-HTTP-Client-Server

  • ZnClient
  • build requests
  • execute requests
  • process responses
  • manage state
Tuesday 22 May 12
slide-40
SLIDE 40

Correct HTTP Client Use

  • ZnClient offers
  • URI construction
  • error handling
  • retry management
  • response handling
  • accept/content-type matching
Tuesday 22 May 12
slide-41
SLIDE 41

MCHttpRepository>>allFileNames | index | self displayProgress: 'Updating ', self description during: [ index := ZnClient new systemPolicy; beOneShot; signalProgress: true; accept: ZnMimeType text; ifFail: [ :exception | self error: 'Could not access ', location, ': ', exception printString ]; url: self locationWithTrailingSlash; queryAt: 'C' put: 'M;O=D'; username: self user password: self password; get ]. ^ self parseFileNamesFromStream: index readStream

Tuesday 22 May 12
slide-42
SLIDE 42

Smalltalk HTTP Scripting

  • ZnClient does
  • streaming downloads & uploads
  • follows redirects
  • write/read content representations
  • proxies, cookies, sessions
  • authentication, login, ...
Tuesday 22 May 12
slide-43
SLIDE 43

Server

Tuesday 22 May 12
slide-44
SLIDE 44

Zinc-HTTP-Client-Server

  • ZnServer
  • run protocol
  • infrastructure
  • delegate #handleRequest:
  • delegate #authenticateRequest:do:
Tuesday 22 May 12
slide-45
SLIDE 45

Zinc-HTTP-Client-Server

  • ZnServer
  • ZnDefaultServerDelegate
  • ZnStaticFileServerDelegate
  • ZnMonticelloServerDelegate
Tuesday 22 May 12
slide-46
SLIDE 46

Seaside

Tuesday 22 May 12
slide-47
SLIDE 47

ZnZincServerAdaptor default in/for Pharo

complete Seaside3 functionality efficient binary data transfer

Tuesday 22 May 12
slide-48
SLIDE 48

Documentation

Tuesday 22 May 12
slide-49
SLIDE 49

Zn Paper / PBE2 Chapter Class / Method Comments 220+ Unit & Functional Tests QA = CI + IDE + Production

Tuesday 22 May 12
slide-50
SLIDE 50

http://zn.stfx.eu

Zinc HTTP Components

Tuesday 22 May 12
slide-51
SLIDE 51

Zn

May the source be with you

Tuesday 22 May 12
slide-52
SLIDE 52

Zn

Tuesday 22 May 12