Há alguma boas ferramentas para a integração GWT com ASP.Net?

votos
7

Há alguma boas ferramentas disponíveis para usar GWT (Google Web Toolkit) com um aplicativo de servidor ASP.Net? O modelo de programação e ferramentas para GWT são bastante agradáveis, no entanto, seria bom se o backend poderia permanecer em C # / ASP.Net.

Existe actualmente uma boa solução disponível para isso?

Publicado 19/05/2009 em 22:56
fonte usuário
Em outras línguas...                            


8 respostas

votos
24

Eu estou trabalhando em um projeto GWT onde ASP.NET é minha única opção no servidor. Eu descobri que, ao mesmo tempo que exige um pouco de trabalho extra, JavaScript sobreposição tipos podem torná-lo fácil. Não importa o que a tecnologia o seu servidor está usando, desde que ele pode responder com dados serializados JSON. Por exemplo, se você tem uma classe Contato em C #:

public class Contact 
{
  public int Id { get; set; }
  public string LastName { get; set; }
  public string FirstName { get; set; }
  public string Email { get; set; }
}

Projete seu servidor para que ele retorna este serializada como JSON. Eu uso ASP.NET MVC para este porque requer muito pouco trabalho. Aqui está um exemplo muito simples, onde vamos supor que Contato tem um método estático que, dado um id, irá retornar uma instância de contacto:

public class ContactController : Controller 
{
  public ActionResult GetContact (int id) 
  {
    return Json(Contact.GetById(id), JsonRequestBehavior.AllowGet);
  }
}

Agora, em sua aplicação GWT, criar um tipo de sobreposição JavaScript para o seu contacto:

import com.google.gwt.core.client.JavaScriptObject;

public class Contact extends JavaScriptObject {
  protected Contact() { }

  public final native int getContactId() /*-{ return this.Id; }-*/;
  public final native String getLastName() /*-{ return this.LastName; }-*/;
  public final native String getFirstName() /*-{ return this.FirstName; }-*/;
  public final native String getEmail() /*-{ return this.Email; }-*/;

  public static final native Contact createFromJson(String json) /*-{
    return eval('(' + json + ')');
  }-*/;
}

Em seguida, em seu projeto GWT, use uma solicitação HTTP para comunicar com o servidor:

public class ContactLoader {
  private int id; 

  public ContactLoader(int id) {
    this.id = id;
  }

  public void beginLoad() {
    String url = "/YourService/GetContact/?id=" + id;
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
    try {
      @SuppressWarnings("unused")
      builder.sendRequest(null, new RequestCallback() {
        @Override
        public void onResponseReceived(Request req, Response resp) {
          Contact contact = Contact.createFromJson(req.getText());
          // do something with your contact.  In my project, I
          // fire an event here for which the contact is the payload
        }

        @Override
        public void onError(Request request, Throwable exception) {
          // handle your error
        }
    catch (Exception exception) {
      // handle your error
    }
  }
}

Também é possível usar tipos genéricos com os tipos de sobreposição. Por exemplo, eu nunca retornar um objeto nua, eu sempre usar um contêiner genérico para o transporte para que eu possa lidar facilmente com o relatório de erros no lado do cliente.

C #:

public class ServerResponse<T> 
{
  public T Payload { get; set; }
  public bool Success { get; set; }
  public String Message { get; set; }
}

Java:

public class ServerResponse<T extends JavascriptObject> 
  extends JavaScriptObject {
  protected ServerResponse() { }

  public final native T getPayload() /*-{ return this.Payload; }-*/;
  public final native boolean getSuccess() /*-{ return this.Success; }-*/;
  public final native String getMessage() /*-{ return this.Message; }-*/;
}

Isto deixa-me devolver o meu contacto, uma série de contatos ou o que quer. Ela também ajuda a reduzir a duplicação em sua lógica de carregamento de dados.

Este é um exemplo simples demais, mas espero que seja o suficiente para limpar o caminho para qualquer pessoa que necessite de ajuda com um não-Java back-end. Outro recurso que eu achei útil que discute tipos de sobreposição é " JSON Análise com tipos JavaScript sobreposição em GWT " por Matt Raible.

Respondeu 09/01/2011 em 00:06
fonte usuário

votos
7

De acordo com o FAQ GWT , você deve ser capaz de fazer isso.

O coração de AJAX está fazendo leitura de dados chamadas / gravação para um servidor da aplicação JavaScript em execução no navegador. GWT é "RPC agnóstico" e não tem requisitos específicos sobre o protocolo é usado para emitir solicitações RPC, ou mesmo que língua o código do servidor é escrito em. Embora GWT fornece uma biblioteca de classes que faz com que as comunicações RPC com um servidor J2EE extremamente fácil , você não é obrigado a usá-los. Em vez disso você pode construir solicitações HTTP personalizados para recuperar, por exemplo, JSON ou dados formatados em XML.

Eu não estou ciente de quaisquer projectos para simplificar a lógica de serialização / desserialização objeto, porém, se essa foi a sua pergunta.

O código GWT do lado do cliente é compilado para javascript, portanto, não importa qual servidor você usa para servi-lo.

Respondeu 19/05/2009 em 23:19
fonte usuário

votos
2

Qualquer pessoa lendo esta pergunta: por favor, ignore a resposta aceita. É completamente enganado. O OP quer usar GWT com um backend ASP.Net, ele não quer produzir GWT usando ASP.Net. Qualquer linguagem backend que pode produzir JSON / JSONP pode integrar rapidamente com GWT via sobreposições Javascript.

Respondeu 31/05/2011 em 15:47
fonte usuário

votos
2

Ter um olhar para a biblioteca inteligente GWT - sua camada de ligação de dados pode chamar diretamente serviços web SOAP (.asmx padrão).

Respondeu 14/06/2010 em 11:52
fonte usuário

votos
2

Eu estive olhando para a mesma coisa - eu encontrei algo semelhante ao que GWT faz para ASP.Net chamado Script #. Ele é escrito pelo mesmo cara que era o principal responsável para ASP.NET AJAX - Nikhil Kothari. O site é: http://projects.nikhilk.net/ScriptSharp

Ele basicamente toma código C # e compila-lo para Javascript - a mesma coisa que o GWT faz (só ele faz isso com Java)

Eu honestamente acho que GWT pode trabalhar com ASP.NET e até mesmo ASP.NET MVC - Eu acho que você precisa de JSON ou XML servindo manipuladores de genéricos (.ashx) em ASP.NET para GWT para trabalhar. Eu ainda não tentei me ..

Perdoe-me se eu confundir ninguém ..

Respondeu 27/01/2010 em 16:55
fonte usuário

votos
1

Tente SharpKit , ele permite que você escrever em C #, e converter para JavaScript durante a compilação. Também disponível como um executável de linha de comando. Ele suporta muitas bibliotecas web populares, como jQuery, ele também suporta full C # 4 sintaxe da linguagem e .NET 4.0.

Respondeu 22/10/2011 em 20:24
fonte usuário

votos
0

A resposta de smcmahon realmente ajudou a minha empresa obter este curso, e agora estamos fazendo isso regularmente - o desenvolvimento de front-end usando GWT eo backend com as tecnologias .NET / MS.

Eu fui um desenvolvedor MS toda a minha vida - mais recente frontend silverlight com backend .net. Demorou cerca de um mês no valor do trabalho, mas finalmente foi implementado um processo suave para desenvolver aplicativos única página do GWT em Eclipse, usando serviços .NET backend / web desenvolvidos no Visual Studio 2010. No lado do .NET recebemos / transferir todos os objetos em JSON ao invés de XML (usamos Newtonsoft JSON gerador porque .NET padrão geração JSON de serviços web WCF deu problemas, especialmente com as datas). No lado do GWT usamos tipos de sobreposição.

Nós escrevemos um aplicativo que gera código (a partir do aplicativo .NET) e automaticamente grava-lo para o nosso projeto GWT - ele gera todas as classes que precisamos e também escreve funções para fácil chamadas para os serviços web. Além de tudo isso, fomos capazes de obter os serviços .NET Web funcionando enquanto nós executar o aplicativo em GWT, o que torna maneira fácil de depurar. então, quando estamos a fazer com mudanças de projeto, nós compilamos para javascript / html - copiar isso para estúdio visual, e implantar nosso projeto. não poderia ser mais simples.

Levou um monte de trabalho para descobrir tudo isso com a ajuda de esta discussão, mas foi totalmente vale a pena uma vez que fizemos uma vez que somos uma loja de microsoft em linha reta com backend servidor SQL e servidores Windows IIS. Silverlight foi ótimo, mas agora estamos nos movendo para o ponto onde os funcionários estão recebendo almofadas e precisam rodar aplicativos em seus telefones também.

Usamos UiBinder para a interface. Amo o designer GUI / xml disposição declarativa, e modularidade. ainda pode usar qualquer HTML / CSS queremos por ter os painéis UiBinder HTML na interface do usuário. O designer UiBinder até reconhece etiquetas CSS3 e torna-los melhor do que o IE9 faz.

GWT foi uma grande solução, e Java era muito fácil de aprender vindo de um fundo C #.

Respondeu 19/07/2013 em 23:21
fonte usuário

votos
0

Se você estiver usando SmartGWT, inclui um RestDataSource que fornece um protocolo pré-construídos JSON ou XML que você pode implementar em .NET. Esta série de artigos do nosso wiki público mostra como construir um backend ASP.NET MVC para RestDataSource que implementa todas as operações CRUD 4, transações de banco de dados e suporte para SmartGWT AdvancedCriteria (usando NHibernate):

http://wiki.smartclient.com/display/Main/Integrating+with+ASP.Net+MVC

Neste caso particular, SmartClient foi usada em vez de SmartGWT, mas todo o código infra-estrutura é idêntica (SmartGWT apenas fornece apoio para GWT SmartClient, é o mesmo código sob a capa). O código front-end é trivial e facilmente traduzidos para SmartGWT.

Este código na wiki é tudo gratuito, e assim é a edição de SmartGWT necessário para construir o front-end (que é open source sob a LGPL).

Respondeu 08/05/2013 em 23:15
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more