Blog


Artigos técnicos sob medida para agregar o máximo de conhecimento possível.

OOP


Programação Orientada a Objetos

A programação Orientada a objetos (POO) é uma forma especial de programar, mais próximo de como expressaríamos as coisas na vida real do que outros tipos de programação. Com a POO temos que aprender a pensar as coisas de uma maneira distinta, para escrever nossos programas em termos de objetos, propriedades, métodos e outras coisas.

Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. C++, C♯, VB.NET, Java, Object Pascal, Objective-C, Python, SuperCollider, Ruby e Smalltalk são exemplos de linguagens de programação orientadas a objetos

ActionScript, ColdFusion, Javascript, PHP (a partir da versão 4.0), Perl (a partir da versão 5) e Visual Basic (a partir da versão 4) são exemplos de linguagens de programação com suporte a orientação a objetos.

Referência: Programação Orientada a Objetos

Tags: OOP
Autor: Leonardo Moreira

Conceitos Básicos de OOP

Classe

representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos. Exemplo de classe: Os humanos

Objeto/Instância de uma classe

Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas à ele, assim como se relacionar e enviar mensagens a outros objetos. Exemplo de objetos da classe Humanos: João, José, Maria

Atibutos/Campos

São características de um objeto. Basicamente a estrutura de dados que vai representar a classe. Exemplos: Funcionário: nome, endereço, telefone, CPF,...; Carro: nome, marca, ano, cor, …; Livro: autor, editora, ano. Por sua vez, os atributos possuem valores. Por exemplo, o atributo cor pode conter o valor azul. O conjunto de valores dos atributos de um determinado objeto é chamado de estado

Propriedades

Uma propriedade é um membro que oferece um mecanismo flexível para leitura, gravação ou calcular o valor de um campo particular. Propriedades podem ser usadas como se elas fossem membros de dados públicos, mas são métodos realmente especiais chamados acessadores. Isso permite que os dados sejam acessados facilmente e ainda ajuda a promover a segurança e a flexibilidade dos métodos.

Métodos

É uma ação que um objeto pode fazer.

Construtor

São métodos de classe que são executadas automaticamente quando um objeto é criado. Um construtor pode ser vazio e assim sendo não precisa de implementação na classe ou com algum desenvolvimento para inicialização e este sim deve ser feito. Pode também haver sobrecarga de construtor e esse deve ser indicado na criação do objeto

Destrutor

São utilizados para destruir instâncias de classe. (Veja a parte de Garbage Collector)

Modificadores de acesso

Classes e membros de classes podem especificar qual nível de acesso eles provêm para outras classes

Public É de acesso publico e todos podem acessar no mesmo assembly ou outro assembly que é referenciado

PrivateO tipo ou membro pode ser acessado via código pela mesma classe

ProtectedO tipo ou membro pode ser acessado via código pela mesma classe ou em uma classe derivada

InternalO tipo ou membro pode ser acessado via código pelo mesmo assembly mas não por outro assembly

Protected InternalO tipo ou membro pode ser acessado via código pelo mesmo assembly ou por alguma outra classe derivada em outro assembly

Interface

É um contrato entre a classe e o mundo externo. Quando uma classe implementa uma interface, ela está comprometida a fornecer o comportamento publicado pela interface

Nasmespace

São referências para organização lógica de classes e interfaces

Referência: Conceitos Básicos de OOP

Download: Conceitos POO

Tags: OOP
Autor: Leonardo Moreira

Os alicerces da POO

Qualquer linguagem orientada a objetos deve oferecer suporte à :
- Abstração
- Encapsulamento
- Herança
- Polimorfismo
O C# comporta completamente OOP. Falando em um contexto geral, uma linguagem que não suporta qualquer um destes conceitos é desqualificada como uma linguagem orientada a objetos como por exemplo a linguagem C. Sendo estes os alicerces da POO

Tags: OOP
Autor: Leonardo Moreira

Abstração

Abstração é um dos pilares da OOP e pode ser definido como a capacidade de representar cenários complexos usando termos simples

Pode-se tomar um exemplo da vida real para ilustrar o conceito: um carro é uma abstração de um veículo que um indivíduo pode utilizar com o objetivo de mover-se de um ponto a outro.

No dia-a-dia, ninguém dirá: “Vou abrir a porta daquele veículo movido a combustível, entrarei, me sentarei, darei a partida no motor, pisarei na embreagem, engatarei a primeira marcha, acelerarei, controlarei a direção em que o carro irá se mover utilizando o volante”. Tamanha explicação não se faz necessária pois todo o conceito daquilo foi abstraído para algo que conhecemos como "carro".

Da mesma forma, imagine a confusão para qualquer pessoa entender a seguinte frase: "Quando abro aquele programa em meu computador, surge uma tela que tem várias caixas retangulares, normalmente brancas, nas quais eu posso clicar dentro e começar a digitar. Algumas dessas caixas já trazem algo escrito, e outras aparecem completamente vazias". Seria muito mais fácil substituir toda esta explicação apenas dizendo "O programa tem uma tela com diversos TextBox". Mais uma vez, o complexo objeto que se parece com uma caixa retangular, e permite ao usuário digitar dentro dela (além de possuir outros atributos e ações), foi sabidamente abstraído para a palavra TextBox

Tags: OOP
Autor: Leonardo Moreira

Encapsulamento

Encapsulamento pode ser definido como a tarefa de tornar um objeto o mais auto-suficiente possível que em programação orientada a objetos significa separar o programa em partes, as mais isoladas possíveis

Utilizando o exemplo do carro visto no post de Abstração, de maneira intuitiva deixou-se de abordar os detalhes técnicos de como o motor de um carro funciona. Existem tantos detalhes a serem explicados sobre o funcionamento do motor de um carro que a maioria das pessoas provavelmente desistiriam de utilizar um carro caso precisassem entender como funciona cada parte daquilo. Basicamente, uma pessoa não precisa daquele entendimento. Apenas saber que o motor é o dispositivo que propulciona o carro já é o suficiente. A maior parte dos detalhes do motor está “encapsulada” dentro do mesmo, e pessoas utilizando o carro não precisam lidar diretamente com o motor.

Exemplo em C#: Encapsulamento

Tags: OOP
Autor: Leonardo Moreira

Polimorfismo

Literalmente, polimorfismo significa “muitas formas” ou “o estado de existir em muitas formas”. No mundo da programação, polimorfismo é muitas vezes definido como a “capacidade de objetos diferentes possuirem métodos de mesmo nome e mesma lista de parâmetros que quando chamados executam tarefas de maneiras diferentes”.

Usando o conceito de polimorfismo podemos ter objetos diferentes que possuam algum método de mesmo nome e assinatura, e chamar estes métodos de modo genérico

Seguindo com o exemplo do carro, pode-se dizer que carro “é-um” veículo. Pode-se também dizer que moto “é-um” veículo, e o mesmo vale para bicicleta. Todo veículo possui algum meio para acelerar, não importa qual mecanismo é usado para isso, e o mecanismo geralmente é diferente, principalmente se comparado um carro (que usa um motor) à uma bicicleta (que usa pedais, corrente e coroa). Colocado em outras palavras, temos objetos diferentes (carro, moto, bicicleta), que derivam de uma mesma classe (veículo). Esta classe possui um método Acelerar, e deste modo, podemos utilizar os diferentes objetos de modo polimórfico, invocando um método de mesmo nome, mas que possui implementação e comportamento diferente em cada um dos objetos.

Referência: Herança

Tags: OOP
Autor: Leonardo Moreira

Herança

Herança pode ser definida como a capacidade de uma classe herdar atributos e comportamento de uma outra classe

Basta um passeio ao redor da cidade para descobrir-se que existem vários tipos e modelos de carros lá fora. Carros de passeio, carros de corrida, carros conversíveis, carros com volante do lado esquerdo e outros do lado direito, carros de diferentes cores, fabricantes, etc. Cada vez que um novo carro é criado, não é necessário “reinventar a roda”, e começar todo um projeto novamente. Diversos conceitos abstraídos e encapsulados no objeto carro já foram planejados, testados e aprovados, e por isso não faz sentido gastar-se tempo e recursos para fazer tudo aquilo de novo. Todo carro terá um meio de propulsão, direção, acelerador e freio, rodas e pneus, e deste modo, todo novo carro pode herdar estas características e funcionamento de um projeto já existente. Caso seja necessário criar um novo carro que seja quase igual a todos os outros, mas que possua algumas coisas diferentes (por exemplo, utilizando um câmbio automático ao invés de manual), o projetista pode herdar o novo carro a partir do projeto básico, e então adicionar as características específicas do novo carro ao novo projeto.

Abaixo segue um exemplo de Herança:

Existem alguns termos utilizados frequentemente, e o leitor precisa estar familiarizado com eles. Chama-se subclasse a classe criada derivada de uma outra classe, a qual por sua vez é chamada superclasse, ou classe-base. Diz-se também que a subclasse é uma especialização de sua superclasse, ou então que a superclasse é uma generalização de suas subclasses.

A Figura acima mostra uma representação gráfica destes termos. A seta preta que conecta a classe Homem (SubClasse) à classe Humano (SuperClasse) indica que Homem é-um Humano. A verde indica que a classe Homem é uma especialização da classe Humano, e a seta azul indica que a classe Humano é uma generalização da classe Homem.

Além disso, a herança é definida com um relacionamento “é-um” (ou é-uma). Por exemplo, pode-se dizer que o homem é-um ser-humano, ou que um calhambeque é-um carro

Referência: Herança

Tags: OOP
Autor: Leonardo Moreira

.NET, C#, MVC


Garbage Collector e IDisposable

Garbage Collector (GC)

A resposta para a pergunta de como controlar o GC é: Você não controla. A memória vai ser liberada quando o GC quiser.

O GC funciona de um modo complexo baseado em gerações (geração 0, 1, 2, 3, ...) e a cada XX mb ele passa atingindo ou não seu objetivo e promovendo caso tenha sobrado para outra geração e assim vai fazendo. O processo as vezes pode demorar deixando os objetos vivos e consumindo memória por mais tempo que o necessário.

Já que os desenvolvedores não tem muito controle sobre o processo de liberação da memória, para que serve o destrutor da classe? A resposta: para liberar recursos não-gerenciados. Ou seja, ao contrário do que pensamos, implementar um destrutor na verdade faz com que o objeto seja um pouquinho mais custoso para ser liberado do que se ele não tivesse um.

Memory Leak: É um vazamento de memória e ninguém mais conseguiria acessar aquele lugar para liberar a memória

IDisposable

A interface IDisposable server para controlarmos a liberação de recursos não gerenciados. Ela está intimamente ligada à palavra chave “using”.

O que podemos entender por recursos não gerenciados (já que a memória é gerenciada): Kernel objects, File handles, GDI handles e outros handles do sistema operacional, sockets, semáforos, mutexes, etc.

A interface “IDisposable” é que ajuda no controle destes recursos. Quando você implementa esta interface ela obriga a implementação do método “Dispose”, que vem da idéia de liberar recursos não gerenciados e está intimamente ligada com a palavra chave “using”.

O que mostra que quando usamos a palavra chave “using” implicitamente o método IDisposable.Dispose é executado quando termina o escopo do using, justamente para liberarmos os recursos não gerenciados.

Referência: Garbage Collector e IDisposable

Tags: .NET, C#
Autor: Leonardo Moreira

Quando criar um aplicativo MVC

MVC - Prós

Tecnologia de ponta e atual

Torna mais fácil gerenciar a complexidade ao dividir as responsabilidades em model, view e controller

Não utiliza o view state e nem formulários baseados no servidor. Isto torna a estrutura MVC ideal para desenvolvedores que desejam controle completo sobre o comportamento do aplicativo.

Testabilidade. Fornece um melhor suporte para desenvolvimento controlado por testes (TDD – test-driven development).

Reusabilidade

Manutenção facilitada

Total controle do HTML e JavaScript gerado

MVC - Contras

Não é tão RAD quanto o WebForms

Não disponibiliza controle prontos “drag and drop”

A curva de aprendizado é maior, há mais coisas para aprender

Mais coisas para controlar, por ex, sessão de usuário

É necessário desenvolver mais código

Web Forms - Prós

Utiliza view state e isso pode facilitar o gerenciamento de informações de estado

Ela funciona bem com pequenas equipes de desenvolvedores e Web designers que desejem tirar proveito do grande número de componentes disponíveis para um rápido desenvolvimento do aplicativo.

Em geral, é menos complexo para o desenvolvimento de aplicativos, pois os componentes (a classe Page, controles e assim por diante) estão extremamente integrados e, normalmente, exigem menos código do que o modelo MVC.

É RAD (Muito rápido de desenvolver)

HTML e JavaScript automático. “sem necessidade de programar”

Controles ricos

Designer Visual

Web Forms - Contras

Não se tem muito controle do HTML e JavaScript gerado.

Alguns controles não estão em conformidades com o W3C.

Difícil integração com frameworks JavaScript.

Problemas para utilizar SEO

Comum entre MVC e Web Forms

Ambos são ASP.Net

Rodam no IIS

Acessam dados livremente (ADO.Net, LINQ, Entity Framework)

São desenvolvidos no Visual Studio

O que motivaria fazer em MVC ao invés de utilizar o Web Forms

Controle total do HTML e JavaScript gerado. Seu site não vai ter o CSS quebrado ou uma função JS desconhecida gerada pelo ASP.Net. Além de facilitar a compatibilidade com os browsers.

Possibilidade de testar a UI. No WebForms isso é quase impossível, uma vez que não conhecemos o código que ele irá gerar. Para quem usa TDD é essencial ter todas as camadas testadas.

Reaproveitamento de código. O código que é gerado com MVC é seu, você o conhece e o reaproveita onde quiser.

Aperfeiçoamento no conhecimento de CSS, HTML e JavaScript. Essas tecnologias por mais que bem conhecidas estão em alta

Referência: MVC x Web Forms

Tags: .NET
Autor: Leonardo Moreira

MVC

É um padrão de arquitetura de software (design pattern) que separa a representação da informação da interação do usuário com ele

Model

consiste nos dados da aplicação, regras de negócios, lógica e funções

View

Pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores

Controller

Faz a mediação da entrada, convertendo-a em comandos para o modelo ou visão

Interação entre os componentes

Um controller envia comandos para o model para atualizar o seu estado por exemplo, editando um documento. O controller também pode enviar comandos para a view associada para alterar a apresentação da view do model (por exemplo, percorrendo um documento).

Um model armazena dados e notifica suas views e controllers associados quando há uma mudança em seu estado. Estas notificações permitem que as views produzam saídas atualizadas e que os controllers alterem o conjunto de comandos disponíveis. Uma implementação passiva do MVC monta estas notificações, devido a aplicação não necessitar delas ou a plataforma de software não suportá-las.

A view gera uma representação (view) dos dados presentes no model.

Referência: MVC

Tags: .NET
Autor: Leonardo Moreira

Tipos por Valor e Tipos por Referência

Quando declaramos alguma variável, dependendo do tipo de dados que estamos declarando essa variável a mesma pode conter diretamente o valor ou simplesmente uma referência para um lugar na memória onde está esse valor.

Tipos por Valor

Tipos como Int, Double e Char são tipos por valor pois variáveis que são baseados em tipos de valor diretamente contêm valores. Atribuindo uma variável do tipo de valor para outro copia o valor contido

Tipos por Referência

Tipos como Classes e Interface são tipos por referência

Na prática, quando trabalha-se com estruturas grandes (como classes por exemplo), que contém uma série de propriedades e consequentemente um espaço maior na memória, é muito mais inteligente e econômico trabalhar com referências.

Variável de tipo de referência copia uma referência ao objeto e não o objeto.

Referência: Tipos

Tags: .NET
Autor: Leonardo Moreira

SignalR

Aprendi o SignalR no curso que fiz para tirar a minha certificação 70-486

O que é o ASP.NET SignalR?

O ASP.NET SignalR é um biblioteca ASP.NET que facilita a implementação de aplicações web real-time, ele combina uma biblioteca ASP.NET Server Side, e uma biblioteca JavaScript client, a qual ajuda a manter a comunicação server-client.

O site do projeto é o: SignalR.net

Referência: SignalR

Tags: .NET
Autor: Leonardo Moreira

Banco de Dados & Entity Framework


Conceitos Entity Famework

É uma das principais ferramentas de persistência presentes na plataforma .NET, sendo parte integrante do pacote de tecnologias ADO.NET.

O Microsoft Entity Framework é uma ferramenta de mapeamento objeto relacional (ORM – Object Relational Management), que permite aos desenvolvedores trabalhar com classes (entidades) que correspondem a tabelas em um banco de dados, tornando transparente o acesso a estes dados e principalmente, eliminando a necessidade de escrever código de banco de dados (SELECT, INSERT, UPDATE, DELETE) na aplicação

O Entity Framework - EF, permite aos desenvolvedores trabalhar com dados na forma de propriedades e objetos específicos do domínio como clientes e produtos, etc, sem ter que relacioná-los com as tabelas do banco de dados e as colunas onde os dados estão armazenados. Isto é possível pela elevação do nível de abstração no qual os desenvolvedores podem trabalhar quando estão tratando com os dados e pela redução do código que é necessário para manter as aplicações orientadas a dados.

Referência: Entity Framework

Tags: Entity Framework
Autor: Leonardo Moreira

Lazy Loading, Eagerly Loading e Explicity Loading ...

Entity Framework suporta 3 maneiras de carregar dados relacionados e são eles: Lazy Loading, Eager Loading e Explicity Loading

Lazy Loading

Lazy Load é o mecanismo utilizado pelos frameworks de persistência para carregar informações sobre demanda. Esse mecanismo torna as entidades mais leves, pois suas associações são carregadas apenas no momento em que o método que disponibiliza o dado associativo é chamado. Assim quando objetos são retornados por uma consulta, os objetos relacionados não são carregados ao mesmo tempo, ao invés, eles são carregados automaticamente quando a propriedade de navegação for acessada. É também conhecido como "lazy loading".

Eagerly Loading

Eager Load é o mecanismo pelo qual uma associação, coleção ou atributo é carregado imediatamente quando o objeto principal é carregado.

Explicity Loading

Mesmo com Lazy Loading desativado ainda é possível carregar "preguiçosamente" entidades relacionadas, mas deve ser feito com uma chamada explícita. Para fazer isso você usa o método "Load" na entrada da entidade relacionada

Referência: Lazy, Eager e Explicity Loading

Tags: Entity Framework
Autor: Leonardo Moreira

Code First, Model First e Database First

Code First

O code-first (introduzido no Entity Framework 4.1) é comumente usado quando se quer ter um controle maior há nível de código-fonte do modelo de dados gerado, pois as classes são escritas usando a metodologia POCO e, em seguida, é que o banco de dados é gerado a partir dessas classes, apresentando assim total independência com o arquivo (. EDMX).

Este fluxo é indicado quando você quer ter o controle total de todos os aspectos do ciclo de desenvolvimento, incluindo o desenvolvimento do banco de dados. Nele você vai fazer tudo via código e vai definir manualmente as suas classes, relacionamentos e mapeamentos para posteriormente gerar um banco de dados.

Basicamente criamos classes POCO que são mapeadas para as entidades;

Referência: Code First

Model First

Diferentemente do Code-First está abordagem nos permite modelar nossa base de dados de forma visual através dos recursos do próprio Visual Studio, através da criação de um arquivo .EDMX

Esta abordagem apresenta algumas das vantagens: como não há necessidade de conhecimentos específicos da estrutura do banco de dados e nem de como o próprio Entity Framework funciona. Por outro lado, isso pode causar algumas dores de cabeça no futuro em relação a manutenções e alterações nas regras de negócio da aplicação.

Esse fluxo é indicado quando você não tem um banco de dados e prefere trabalhar em um ambiente visual ao projetar seu modelo e banco de dados. Uma vez feito isso, você pode gerar código para criar o banco de dados e todas as suas tabelas, bem como gerar a entidade ou classes a serem usados no código.

Basicamente criamos o Modelo conceitual primeiro e depois é gerado o script para criar o banco de dados;

Referência: Model First

Database First

Esse fluxo de trabalho é indicado se você já tem um banco de dados ou se preferir usar outra ferramenta para criar seu banco de dados. O DataBase First parte do seu banco de dados e utiliza a engenharia reversa para criar as classes (entidades) e os mapeamentos. Este modelo mapeia todas as tabelas do banco de dados, visões, procedimentos armazenados e colunas em classes, métodos e propriedades

Basicamente mapeamos para um Banco de dados que já existe

Referência: Code First, Model First e Database First

Tags: Entity Framework
Autor: Leonardo Moreira

WCF


O que é WCF

O WCF é uma estrutura para a construção de aplicações orientadas a serviços. É uma parte da .NET Framework que fornece um modelo unificado de programação para construir de forma rápida aplicações distribuidas orientadas a serviço (SOA).

O WCF é a plataforma da Microsoft disponível desde o .NET Framework 3.0 utilizada para cuidar da comunicação entre sistemas. O WCF é uma união de Web Service, WSE, Remoting e COM+, tudo isso em uma única plataforma, simples de usar, robusta e de fácil integração.

O WCF é uma plataforma que une recursos antes espalhados em um único ponto, tornando a plataforma robusta. Os recursos de customização estão facilitados, podendo ser acessados e modificados através de arquivos de configuração como Web.Config e App.Config.

O que é um serviço WCF ?

Toda comunicação com um serviço WCF ocorre através de endpoints do serviço. Os endpoints fornecem aos clientes o acesso às funcionalidades oferecidas por um serviço WCF.

Tags: WCF
Autor: Leonardo Moreira

Componentes que fazem parte de um serviço WCF

Service Class

Uma classe de serviço WCF que implementa um serviço com um conjunto de métodos

Host Environment

Este é o grande diferencial do WCF pois podemos usar qualquer tipo de aplicação como host. Um Host Environment pode ser uma aplicação Console, um Windows Service, um Web Service, uma aplicação WIndows Forms ou o Internet Information Service no caso de um web service normal

EndPoints

Todas as comunicações com um serviço WCF irão acontecer via endpoints. O endpoint é composto de 3 partes (ABC´s endpoints) :

- Address - Consiste em especificar um endereço que define onde o endpoint esta hospedado. Cada endpoint possui um endereço especificado com ele que é usado para identificar e localizar o endpoint. (Geralmente é definido pela instância da classe Uri)

- Binding - Especifica como o cliente irá se comunicar (qual transporte será usado: Http, Tcp, Ipc, WS, MSMQ, etc.) com serviço e o endereço onde o endpoint esta hospedado. A definição do Binding pode ser feita no arquivo de configuração ou via programação.

- Contract - Especifica um contrato que define quais métodos da classe de Serviço serão acessíveis via endpoint, onde cada endpoint poderá expor um conjunto diferente de métodos; (O contrato é representado por uma Interface que deverá ser decorada com o atributo ServiceContract)

Tags: WCF
Autor: Leonardo Moreira

Um pouco mais sobre o EndPoint

Um endpoint é o que um serviço expôe. Um endpoint contém três principais características que chamamos de ABC (Address, Binding e Contract). Uma analogia para estas características seria que o Address é onde o serviço está hospedado, Binding é como o serviço pode ser acessado, e Contract seria o que pode ser visto no serviço.

Cada serviço precisa ter um endereço (Address) que define onde o mesmo reside

Cada serviço deve possuir também um contrato (Contract) que define o que o serviço vai fazer

Cada serviço também deve possuir uma vinculação (Binding) que define como se comunicar com o serviço

Então no WCF o relacionamento entre o endereço (Address), o contrato (Contract) e a vinculação (Binding) é chamada de EndPoint

Ou seja : Address + Binding + Contract = Endpoint (o famoso ABC's endpoints)

Tags: WCF
Autor: Leonardo Moreira

Tipos de Contratos

ServiceContract

É uma decoração feita na Interface que servirá como contrato e deve ser feito a decoração obrigatoriamente pois caso contrário ocorre uma excessão

OperationContract

Nem sempre todos os membros expostos pela Interface devem ser expostos para o serviço e, justamente por isso, todas as operações que serão disponibilizadas devem ser decoradas com o atributo OperationContract

DataContract

Os data contracts são uma forma que se tem de publicar possíveis estruturas de dados que podem ser trocadas durante o envio e recebimento de uma mensagem

A utilização do atributo DataContractAttribute determina que uma classe poderá ser exposta através de um serviço WCF, e deve ser aplicado a todas as classes que estão referenciadas, como parâmetro ou tipo de retorno, em um contrato (Interface). Já os tipos primitivos, como String, DateTime, Int32, não precisam disso, já que podem ser serializados diretamente.

DataMember

Já o atributo DataMemberAttribute deve ser aplicado nos campos e propriedades que o tipo possui e que devem ser expostos através do serviço. Esse atributo irá controlar a visibilidade do campo ou da propriedade para os clientes que consomem o serviço, não importando o modificador de acesso (public, private, etc.) que possui

Referência 1: Tipos de Contratos 1

Referência 2: Tipos de Contratos 2

Tags: WCF
Autor: Leonardo Moreira

Scripts


Knockout

o KnockoutJS é uma biblioteca JavaScript (Open Source) que simplifica a construção de interfaces gráficas dinâmicas, usando o padrão MVVM. (Model-View-ViewModel)

Knockout (KO) é uma biblioteca JavaScript , da mesma forma que a jQuery, que o ajuda a criar interfaces ricas com um correspondente modelo de dados

Recursos presentes no Knockout

- Biblioteca JavaScript Open Source;

- Funciona do lado do cliente;

- Usa o padrão MVVM ( separação lógica negócio / interface );

- Suporta diversos navegadores;

- Utiliza binding declarativos - Associa elementos DOM com o modelo de dados usando uma sintaxe simples;

- Binding bidirecional : interface-> modelo e modelo-> interface;

- Suporte a templating - Gera uma interface com usuário rica como uma função do modelo de dados;

Referência: Knockout

Tags: Scripts
Autor: Leonardo Moreira

jQuery

jQuery é a biblioteca JavaScript mais usada em aplicações web atualmente

jQuery simplifica a maneira de como acessar os elementos DOM tornando mais fácil a navegação pelas páginas

A biblioteca possui poderosos recursos Ajax, manipulação de eventos e efeitos de animação, permitindo um rápido desenvolvimento de aplicações web

JavaScript é uma linguagem e JQuery é uma biblioteca escrita usando JavaScript

Referência: jQuery

Tags: Scripts
Autor: Leonardo Moreira

JavaScript

JavaScript é a linguagem de programação mais popular do mundo.

Foi originalmente implementada como parte dos navegadores web para que scripts pudessem ser executados do lado do cliente e interagissem com o usuário sem a necessidade deste script passar pelo servidor, controlando o navegador, realizando comunicação assíncrona e alterando o conteúdo do documento exibido.

Foi concebida para ser uma linguagem script com orientação a objetos baseada em protótipos, tipagem fraca e dinâmica e funções de primeira classe

Começou a ser bastante utilizada do lado do servidor através de ambientes como o node.js

Referência: JavaScript

Tags: Scripts
Autor: Leonardo Moreira

Angular js

É um framework MVC(Model-View-Controller) JavaScript mantido pelo Google, que tem como objetivo simplificar o desenvolvimento de aplicações WEB.

Por que usar?

Certas aplicações tem como principal característica a alta complexidade e dinamismo de suas páginas HTML, fazendo com que parte da lógica seja empurrada para o Cliente(Javascript). Esses tipos de aplicação necessitam de uma maior organização do código no front-end e o AngularJS consegue realizar essa tarefa muito bem, permitindo que você quebre o seu código em partes, separando assim suas responsabilidades. Além de contar com Two-Way Data Binding e incentivar o uso de Dependency Injection.

Referência: Angularjs

Tags: Scripts
Autor: Leonardo Moreira

 

Voltar