Modelando Componentes WCF

Você pode criar modelos de componentes Windows® Communication Foundation (WCF), como contratos de serviço, de mensagem e de dados.
Por Que e Quando Desempenhar Esta Tarefa
Ao projetar componentes WCF em UML, considere as seguintes descrições de cada componente.

Contratos de serviço

Um contrato de serviço especifica a assinatura de um serviço, os dados que ele troca e outros dados contratualmente exigidos. Serviços são grupos de operações. Para criar um contrato de serviço, você deve modelar as operações e especificar seu agrupamento. Em modelos de aplicativos WCF, crie primeiro um contrato de serviço modelando uma interface e aplicando o estereótipo «ServiceContract». Em seguida, defina as operações criando uma operação UML, estereotipada como um método C#, e aplicando o estereótipo «OperationContract».

Qualquer operação que não tiver o estereótipo «OperationContract» não será operação de serviço, e após a geração de código, não será exposta para uso de clientes de serviços WCF. Operações desse tipo só poderão ser chamadas por objetos em seu escopo de acesso declarado.

Contratos de mensagem

Utilizados para suportar a geração de esquema de mensagens SOAP. Normalmente, você utilizará um contrato de mensagem se quiser definir uma mensagem que inclua cabeçalhos SOAP customizados ou onde quiser compor uma mensagem de diversos tipos de contrato de dados.

Quando um esquema SOAP é gerado pelo serializador de contrato de dados, você deve seguir regras específicas. Por exemplo, o elemento de corpo SOAP nos serviços compatíveis com WS-I Basic Profile só pode conter um elemento filho. Em muitos casos, você pode precisar controlar esse esquema, em vez de utilizar o comportamento padrão do serializador de contrato de dados, que é onde o atributo MessageContract e reproduzido.

O atributo MessageContract é utilizado em uma classe que define os tipos ou contratos de dados que serão incluídos em um cabeçalho ou corpo de mensagem. O código de exemplo a seguir mostra uma classe de contrato de dados denominada SearchCriteria que é incluída em uma classe de contrato de mensagem denominada FindEmployeeRequest.

Contratos de dados

Contrato de dados é um contrato formal entre um serviço e um cliente que descreve de maneira abstrata os dados a serem trocados. Isto é, para se comunicar, o cliente e o serviço não precisam compartilhar os mesmos tipos, apenas os mesmos contratos de dados. Um contrato de dados define precisamente, para cada parâmetro ou tipo de retorno, quais dados são serializados (transformados em XML) para serem trocados.

Base de Contrato de Dados

O Windows Communication Foundation (WCF) utiliza um mecanismo de serialização chamado Serializador de Contrato de Dados por padrão para serializar e desserializar dados (convertê-los em/de XML). Todos os tipos primitivos .NET Framework, como inteiros e cadeias, bem como determinados tipos tratados como primitivos, como DateTime e XmlElement, podem ser serializados sem nenhuma outra preparação e são considerados como tendo contratos de dados padrão. Muitos tipos .NET Framework também têm contratos de dados existentes. Para uma lista completa de tipos serializáveis, consulte Tipos Suportados pelo Serializador de Contrato de Dados.

Novos tipos complexos que você cria devem ter um contrato de dados definido para que eles sejam serializáveis. Por padrão, o DataContractSerializer deduz o contrato de dados e serializa todos os tipos publicamente visíveis. Todas as propriedades e campos públicos de leitura/gravação do tipo são serializados. Você pode excluir os membros da serialização utilizando IgnoreDataMemberAttribute. Pode também criar explicitamente um contrato de dados utilizando os atributos DataContractAttribute e DataMemberAttribute. Isso normalmente é feito aplicando o atributo DataContractAttribute ao tipo. Esse atributo pode ser aplicado a classes, estruturas e enumerações. O atributo DataMemberAttribute deve então ser aplicado a cada membro do tipo de contrato de dados para indicar que se trata de um membro de dados, ou seja, deve ser serializado. Para obter mais informações, consulte Tipos Serializáveis.


Feedback