WCF Load Test

31/08/2010 20:28

Estava procurando alguma ferramenta para testes de unidade com WCF, e a dica me foi dada pelo MVP Israel Aece (fera em WCF).

WCF Load Test

The WCF Load Test for VS 2008 adds support for ASMX web services. Download it from here.

Features:

  • The tool has the following main features:
  • Replay of captured scenario in a unit test that can be included in a load test.
  • Support for the DataContractSerializer.
  • Support for message contracts.
  • ASMX support (beta)
  • Support for proxies generated using svcutil.
  • Support for clients that create proxies at run time from contract interfaces.
  • Supports calls to multiple services in a single scenario.
  • Supports multiple calls to the same service operation.
  • Filtering by SOAP action of which messages in the trace to replay.
  • Readable and modifiable code is generated.
  • Automatic association of trace message with proxy method (requires all operations to have a unique SOAP action).
  • Support for client and server side traces.
  • A command line tool for processing traces and generating code.
  • Visual Studio 2005/2008 integration (Team Developer, Team Test, Team Suite and for 2008 also Professional)) that can be used instead of the command line tool.

WCF ,



WCFExtras

26/08/2010 14:58

Segue uma biblioteca com algumas extensões interessante para o WCF, disponível no CodePlex.

WCFExtras

A collection of useful WCF extensions including Soap Header support, WSDL documentation and more.

The WCF platform is very extensible and allows you to easily add features that are not part of the core product. This project contains some extensions I needed in a WCF based project:

  • SOAP Header support for WCF
  • Adding WSDL Documentation from Source Code XML Comments
  • Override SOAP Address Location URL
  • Single WSDL file for better compatibility with older SOAP tools.

WCF



Biblioteca de apoio para criação de cliente JavaScript de WCF

23/08/2010 15:25

Em meus estudos recentes de WCF encontrei uma biblioteca JavaScript que facilita o trabalho de criação de clientes Web. Trata-se do ProxyService.js, desenvolvida pelo MVP Rick Strahl. A biblioteca utiliza JSON e jQuery para realizar a consulta ao serviço WCF, deixando a tarefa bem simples para o desenvolvedor.

Abaixo coloquei um exemplo simples de como podemos criar um client JavaScript para invocar um serviço WCF. No final do artigo você encontra o download da solução completa.

O código abaixo mostra como devemos escrever nossa interface de serviço.

using System.ServiceModel;
using System.ServiceModel.Web;

namespace WCFTestes
{
    [ServiceContract(Namespace = "", Name = "Servicos")]
    public interface IServicos
    {
        [OperationContract]
        [WebInvoke(
            BodyStyle = WebMessageBodyStyle.WrappedRequest, 
            ResponseFormat = WebMessageFormat.Json)]
        string Ping(string value);
    }
}

O detalhe importante no código acima é decorar o método Ping com o atributo WebInvoke, conforme vemos nas linhas 10 a 12. Dessa forma, o formato resultante será do tipo JSON. Será necessário adicionar uma referência a System.ServiceModel.Web.

Em seguida, vemos como devemos decorar o nosso método (linha 6) para que possamos compatibilizar o serviço com o client JavaScript.

using System.ServiceModel;
using System.ServiceModel.Activation;

namespace WCFTestes
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    public class Servicos : IServicos
    {
        public string Ping(string value)
        {
            return string.Format("Hello {0}", value);
        }
    }
}

Por fim, devemos criar um behavior no web.config indicando o atributo enableWebScript, conforme a linha 13, e devemos associar o behavior criado ao endpoint (linha 6).

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <services>
        <service name="WCFTestes.Servicos" 
                 behaviorConfiguration="WCFTestes.ServicosBehavior">
            <endpoint behaviorConfiguration="WCFTestes.AtividadeAspNetAjaxBehavior" 
                      binding="webHttpBinding" contract="WCFTestes.IServicos"/>
        </service>
    </services>
    <behaviors>
        <endpointBehaviors>
            <behavior name="WCFTestes.AtividadeAspNetAjaxBehavior">
                <enableWebScript/>
                <webHttp/>
            </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="WCFTestes.ServicosBehavior">
                <serviceMetadata httpGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

Os detalhes acima descritos são importantes para que o serviço WCF consiga gerar um response que pode ser lido pelo client JavaScript.

Para utilizar a biblioteca ServiceProxy.js você deve fazer como no exemplo abaixo. Na linha 2 criamos o proxy passando como parâmetro o endereço do nosso serviço WCF. Da linha 5 a 10 invocamos o serviço passando como primeiro parâmetro o nome do WebMethod, em seguida passamos os parâmetros do WebMethod. Em seguida, manipulamos o resultado, exibindo o resultado em um alert.

<script language="javascript">
    var proxy = new ServiceProxy("http://localhost:50564/Servicos.svc/");
    
    function InvokeWCF() {
        proxy.invoke("Ping", { value: "Leandro" },
                  function(result) 
                  {
                      alert(result);
                  },
                  onPageError);           
    }

    function onPageError(error) {
        alert("Ocorreu um erro: " + error.message);
    }
</script>

O código-fonte completo deste post pode ser baixado no link abaixo.

WCF , , ,



Mais uma capa: Transact-SQL na Easy .net Magazine

09/08/2010 10:58

capa_easynet3_gA revista digital Easy .net Magazine edição 3 já está disponível no site da DevMedia. Dessa vez escrevi o artigo da capa: “SQL Server – Introdução à linguagem SQL e Banco de Dados”.

Esta série de artigos apresentará uma introdução à T-SQL, a linguagem para desenvolvimento em banco de dados criados no Microsoft SQL Server. Através de exemplos práticos veremos como podemos utilizar o SQL Server Management Studio para aprender os fundamentos e conceitos de desenvolvimento em banco de dados.

Além deste, você encontra outros artigos: Web Services, .NET Framework e a continuação do curso de C#. A revista é voltada para o público iniciante, que está tendo os primeiros contatos com tecnologias de desenvolvimento.

Boa leitura!

Easy .net Magazine, Artigos , ,



Pex for fun

21/07/2010 11:45

Sempre achei a ideia do Pex fantástica. Ele se propõe a criar testes unitários automatizados a partir da análise do comportamento do código, combinando analises dinâmicas e estáticas. Como resultado ele cria um set de testes com alta cobertura de código (code coverage).

Hoje vi uma dica do @mauricionaniche no Twitter para uma demo do Pex (clique na imagem abaixo). É muito divertido além de ser uma forma criativa de explicar como o Pex funciona. Dá pra ficar horas brincando lá.

pexforfun

Dicas



Serviço WCF não roda no IIS 7

19/07/2010 10:43

Essa é uma dica simples pra quem está iniciando no desenvolvimento com WCF. Caso apareça uma mensagem indicando que não é possível processar arquivos com a extensão “*.svc” vá na opção de Recursos do Windows (Painel de Controle \ Todos os Itens do Painel de Controle \ Programas e Recursos \ Ativar ou desativar recursos do Windows) e marque as opções destacadas abaixo.

IIS7 e WCF

Se isso não funcionar, peça ajuda a esse moço aqui.

Dicas



.Net Architects Podcast 15 - Legado

12/07/2010 20:50

Neste episódio Alexandre Valente, Emmanuel Brandão, Giovanni Bassi, Leandro Daniel e Vinicius Quaiato discutem o tema legado, esse tema surgiu de alguns tweets entre Leandro Daniel , Vinicius Quaiato e Emmanuel Brandão.

Alguns dos temas abordados foram:

  • O que é legado?
  • Código sem teste é legado?
  • Porque manter um legado?
  • Porque migrar um legado?
  • Evoluir ou reescrever um sistema legado?
  • Quem deve identifica um legado?

 

Ouça o podcast e veja outras informações no site .Net Architects Podcast.

Podcasts ,



Reverb Vodcast #1 – NDepend x Unused Methods

03/07/2010 13:55

Esse é o primeiro Reverb Vodcast, em um formato um pouco diferente de outros vodcasts, para demonstrar o uso de ferramentas e tecnologias relacionadas ao desenvolvimento de software.

Para o primeiro episódio, resolvi aproveitar uma dúvida do @vquaiato no Twitter e criar uma demo mostrando como o NDepend pode ser utilizado para procurar métodos que não estão sendo usados dentro de um assembly.

Para acompanhar os próximos vodcasts, assine o RSS. Fiquem à vontade para comentar, espero que gostem!

Reverb Vodcast #1 from Leandro Daniel on Vimeo.


Créditos:

Desenvolvido por: Leandro Daniel
NDepend: http://www.ndepend.com
Música: Macaco Bong

Podcasts ,