locked
Wcf + Wcf Ria Services RRS feed

  • Pergunta

  • Bom dia a todos.

    Estava a tentar utilizar os wcf services juntamente com os Ria services.

    A minha ideia era "enviar" como paramatro, um objecto do tipo Entity (criado pelo Ria Services), para um método que esta no wcf service.

    O problema é que o meu wcf service não conhece a Entididade gerada pelo Ria.

     

    O código do meu serviço:

    using System.Runtime.Serialization;
    using System.ServiceModel.Activation;
    namespace ExRiaWcf.Web
    {
      [KnownType(typeof(SalesOrderHeader))]
      [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
      public class ServicoOrder : IServicoOrder
      {
        public int AlteraQuantidadeLinhas(SalesOrderHeader original)
        {
          return 1;
        }
      }
    }
    
    

     

    A entidade criada pelo Ria Services

    [DataContract(Namespace="http://schemas.datacontract.org/2004/07/ExRiaWcf.Web")]
      public sealed partial class SalesOrderHeader : Entity
      {
        
    ...
      }
    

    Chamada do lado do cliente ao servico:

     private void btAlterarLin_Click(object sender, RoutedEventArgs e)
        {
          ServiceReferenceOrder.ServicoOrderClient servico = new ServiceReferenceOrder.ServicoOrderClient();
          servico.AlteraQuantidadeLinhasCompleted += new System.EventHandler<ServiceReferenceOrder.AlteraQuantidadeLinhasCompletedEventArgs>(servico_AlteraQuantidadeLinhasCompleted);
          servico.AlteraQuantidadeLinhasAsync(MySalesOrderHeader);
        }
    

    O Erro:

    Cannot convert from 'ExRiaWcf.Web.SalesOrderHeader' to 'ExRiaWcf.ServiceReferenceOrder.SalesOrderHeader'

    Cumprimentos,

    Sérgio Magalhães

    quinta-feira, 21 de outubro de 2010 09:49

Todas as Respostas

  • Ola.

    Serviços possuem essa característica mesmo. Com WebServices isso também ocorre.

    Na verdade esse não é um erro, mas sim uma "Abordagem".

    Eu acredito que a forma de resolver isso seria:

    1) Usar o RIA Services puro.

    Somente usando RIA isso não ocorre certo? Pois ele serializa todas as classes do seu Model, fazendo com que seja transparente o uso delas na sua camada de interface.

    Mas o RIA possui outras limitações, essa thread aborda justamente isso.

    ou

    2) Usar somente WCF,

    Que não possui as limitações chatinhas do RIA, mas também vai exigir que vc repense um pouco a forma de expor os serviços da sua aplicação. Digo isso porque uma classe A usada no serviço A será também diferente da classe A usada no serviço B.

    Bons estudos!


    quinta-feira, 28 de outubro de 2010 11:15
  • Boa tarde Luiz.

    Se utilizar só os RiaServices funcionar tudo bem.

    Mas esta solução era para contornar um problema que os RiaServices têm, enviar para um método um objecto do tipo Master/Details, que nos WcfServices funciona.

    Pelo que tenho visto acho que a minha alternativa vai ser mesmo utilizar os WcfServices.

     

    Cumprimentos,

    Sérgio Magalhães

     

    quarta-feira, 3 de novembro de 2010 16:33
  • Pois é Antonio.

    Hoje eu acredito que o melhor é usar WCF em detrimento do RIA Services. Pelo menos nos cenários que eu trabalhei o WCF foi muito mais fácil e transparente de utilizar do que o RIA Service.

    Boa Sorte.

    quarta-feira, 17 de novembro de 2010 15:37