fazendo uma aplicação cliente/servidor (e algumas dicas...)

48
Fazendo uma aplicação cliente/servidor (e algumas dicas…)

Upload: makoto-miyagawa

Post on 03-Jul-2015

96 views

Category:

Technology


2 download

DESCRIPTION

Apresentação feita na UFAM dia 09/09/2014 demonstrando como consumir webservices REST em iOS através da biblioteca AFNetworking. O exemplo utilizado foi de lista de tarefas.

TRANSCRIPT

Page 1: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Fazendo uma aplicação cliente/servidor (e algumas dicas…)

Page 3: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Bemol

Page 4: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Principais projetos

Pré-venda Móvel (2012)

• Sistema de orçamento móvel no iPod

• Agilidade no atendimento ao cliente

Page 5: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Principais projetos

Quiosque (2013)

• Terminal de auto-atendimento no iPad

• Consulta de informações e pagamento de prestações

Page 6: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

O que eles têm em comum?

Page 7: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Modelo cliente/servidor

Page 8: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Proposta: Webserver + Client

Page 9: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Protocolo REST

Métodos HTTP !

GET POST PUT

DELETE

CRUD !

Create (INSERT) Read (SELECT)

Update (UPDATE) Destroy (DELETE)

Page 10: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Protocolo REST

GET /clientes => SELECT * FROM clientes GET /clientes/1 => SELECT * FROM clientes WHERE id = 1 POST /clientes => INSERT INTO clientes VALUES … PUT /clientes/1 => UPDATE clientes SET … WHERE id = 1

Page 11: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Serialização e mapeamento

{ “cliente”: { “nome” : “João”, “idade” : 30, “casado” : true } }

@interface Cliente : NSObject { NSString *nome; NSNumber *idade; NSNumber *casado; } @end

Page 12: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Checklist

" Chrome: REST Console

# Ruby

" Xcode (+ Command line tools)

Page 13: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

http://goo.gl/YHvJtG

Page 14: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

REST Console

Page 15: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

RubyGems e Bundler

Page 16: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

RubyGems e Bundler

$ sudo gem install bundler $ cd server $ bundle install

Page 17: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

DataMapper

Page 18: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Object Relational Mapper

SELECT * FROM cliente =

Cliente.all()

Page 19: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Object Relational Mapper

INSERT INTO cliente VALUES … =

Cliente.create(:nome => …)

Page 20: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Criar tabela

class Tarefa include DataMapper::Resource ! property :id, Serial, :key => true property :titulo, String, :required => true property :descricao, String property :concluido, Boolean, :default => false end

database.rb

Page 21: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Webserver: Hello World

get '/' do 'Hello World!' end

app.rb

Page 22: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Webserver: GET /tarefas

get '/tarefas' do content_type :json ! tarefas = Tarefa.all.collect {|t| t.attributes} ! tarefas.to_json end

app.rb

Page 23: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Webserver: POST /tarefas

post '/tarefas' do content_type :json ! conteudo = JSON.parse(request.body.read) nova_tarefa = Tarefa.create(conteudo) ! nova_tarefa.attributes.to_json end

app.rb

Page 24: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Cocoapods

Page 25: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Cocoapods

$ sudo gem install cocoapods $ cd client/Todo\ List $ pod init $ pod install

Page 26: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

AFNetworking

Page 27: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

AFNetworking

{ “cliente”: { “nome” : “João”, “idade” : 30, “casado” : true } }

@{ @“cliente”: @{ @“nome” : @“João”, @“idade” : @30, @“casado” : @YES } }

Page 28: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

Page 29: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

@interface TDTarefa : NSObject !@property (nonatomic, strong) NSNumber *idTarefa; @property (nonatomic, strong) NSString *atividade; @property (nonatomic, strong) NSNumber *concluido; !- (BOOL)isConcluido; - (instancetype)initFromDictionary:(NSDictionary *)dict; -(NSDictionary *)dictionaryRepresentation; !@end

TDTarefa.h

Page 30: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

@protocol TDTodoListDelegate <NSObject> - (void)todoListGetListaSuccess:(NSArray *)array; - (void)todoListRequestFailed:(NSError *)error; @end !@interface TDTodoList : NSObject !@property (nonatomic, weak) id<TDTodoListDelegate> __weak delegate; !- (void)buscarLista; @end

TDTodoList.h

Page 31: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

- (void)buscarLista { AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; ! [manager GET: parameters: success: failure:]; }

TDTodoList.m

Page 32: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

- (void)criarTarefa:(TDTarefa *)tarefa { AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; ! [manager POST: parameters: success: failure:]; }

TDTodoList.m

Page 33: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

- (void)atualizarTarefa:(TDTarefa *)tarefa { AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; [manager PUT: parameters: success: failure:]; }

TDTodoList.m

Page 34: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Client: To-do list

URL: http://todo-ufam.herokuapp.com

Page 35: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

E as dicas?

Page 36: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Debugging

- breakpoint: All Exceptions - breakpoint condicional - breakpoints com ação - lldb: p e po

Page 37: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Cocoapods

Page 38: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Alcatraz

Page 39: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Alcatraz

KSImageNamed

Page 40: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Alcatraz

OMColorSense

Page 41: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

CocoaControls

Page 42: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

RestKit

Page 43: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Heroku

Page 44: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

NSHipster

Page 45: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

iOS Dev Weekly

Page 46: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

objc.io

Page 47: Fazendo uma aplicação cliente/servidor (e algumas dicas...)

Dúvidas?