PRECISO DE ALGUÉM PARA ME AJUDAR COM TESTES

 Tópico anterior Próximo tópico Novo tópico

PRECISO DE ALGUÉM PARA ME AJUDAR COM TESTES

C#

 Compartilhe  Compartilhe  Compartilhe
#469809 - 17/12/2016 07:45:44

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


Kkkk eu ja gosto de enxugar, consegui um plugin (eu acho) q remove as referencias nao usadas, amei, ver aquela lista enorme diminuir muito....



#469811 - 17/12/2016 11:08:13

LAMPIAO
SAO CAETANO DO SUL
Cadast. em:Setembro/2004


Citação:
:
Muito obrigado à todos os que ajudaram! Os testes indicam que o pacote está ok e que posso gravar o vídeo, o primeiro da série sobre Angular e Visual Studio Code!

LAMPIAO, o systemjs está ali porque esse pacote é remanescente de um outro que já uso aqui. Na verdade poderia tirar esse dependência, mas já que está funcionando, como diria meu avô, "o que abunda, não atrapalha".


Blz Kerplunk,

Dei uma rápida pesquisada no Express, você citou que irá produzir novos vídeos com o angular 2, pretende mostrar algo com o Express?

É possível fazer tudo que faço hoje numa API feita no C#, ou seja, ter os recursos que tenho hoje numa WebAPI feita no C#, ter o mesmo no Express?

Esse 'fazer tudo' que me refiro, é a parte da NF-e, porque o resto são validações e crud normal que qualquer linguagem faz.

É possível fazer essa parte da NF-e, porque no C# é simples, hoje por exemplo se eu quero gerar uma nota, o sistema gera e me retorna uma reposta se foi ok ou não e já mostra numa tabela no frontend o status da nota, se quero ver o danfe, faço a solicitação e a resposta vem em forma de um pdf representando o Danfe.

A única coisa que acho ruim em tudo isso, é o custo de manter isso no Azure, com essa variação do dólar e esse governo corrupto que temos aqui.

Bom é isso, ficaria grato com sua visão sobre isso.

Abraços




#469827 - 18/12/2016 00:16:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Na verdade com express é até mais fácil que com o C#. Foi com ele que vi as vantagens do uso de DBaaS. E sim, é totalmente possível. com pouquíssimas linhas de código e já está pronto. O "calcanhar de Aquiles" é a péssima integração com SQL Server. Mas se você usar MySQL como banco de dados, então estará no paraíso. Um exemplo de como fica:

var express = require('express');
var mysql = require('mysql');
var bodyParser = require('body-parser');

connectionpool = mysql.createPool({
    host: 'localhost',
    user: 'seu usuario',
    password: 'sua senha',
    database: 'seu db'
});


var app = express();

app.use(express.static(__dirname + "/public"));

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.get('/api/clientes/:id', function (req, res) {
    connectionpool.getConnection(function (err, connection) {
        if (err) {
            console.error('CONNECTION error: ', err);
            res.statusCode = 503;
            res.send({
                result: 'error',
                err: err.code
            });
        } else {
            console.log(req.params.id);
            connection.query('SELECT * FROM customers where id=? ', req.params.id, function (err, rows, fields) {
                if (err) {
                    console.error(err);
                    res.statusCode = 500;
                    res.send({
                        result: 'error',
                        err: err.code
                    });
                }
                res.send(rows
                );
                connection.release();
            });
        }
    });
});
app.get('/api/clientes/', function (req, res) {
    connectionpool.getConnection(function (err, connection) {
        if (err) {
            console.error('CONNECTION error: ', err);
            res.statusCode = 503;
            res.send({
                result: 'error',
                err: err.code
            });
        } else {
            console.log("tudo");
            connection.query('SELECT * FROM customers', "", function (err, rows, fields) {
                if (err) {
                    console.error(err);
                    res.statusCode = 500;
                    res.send({
                        result: 'error',
                        err: err.code
                    });
                }
                res.send(rows
                );
                connection.release();
            });
        }
    });
});

var port = 8080;
app.listen(port);
console.log("Server rodando na porta #" + port);


Só aqui, tenho um método GET para busca geral da tabela "customers" e um passando parâmetros. Simples, direto, sem muita delonga. A serialização é automática, basta passar o resultado do Select como retorno que o express se encarrega.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#469832 - 18/12/2016 12:32:33

LAMPIAO
SAO CAETANO DO SUL
Cadast. em:Setembro/2004


Última edição em 18/12/2016 13:12:57 por LAMPIAO

Citação:
:
Na verdade com express é até mais fácil que com o C#. Foi com ele que vi as vantagens do uso de DBaaS. E sim, é totalmente possível. com pouquíssimas linhas de código e já está pronto. O "calcanhar de Aquiles" é a péssima integração com SQL Server. Mas se você usar MySQL como banco de dados, então estará no paraíso. Um exemplo de como fica:

var express = require('express');
var mysql = require('mysql');
var bodyParser = require('body-parser');

connectionpool = mysql.createPool({
    host: 'localhost',
    user: 'seu usuario',
    password: 'sua senha',
    database: 'seu db'
});


var app = express();

app.use(express.static(__dirname + "/public"));

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.get('/api/clientes/:id', function (req, res) {
    connectionpool.getConnection(function (err, connection) {
        if (err) {
            console.error('CONNECTION error: ', err);
            res.statusCode = 503;
            res.send({
                result: 'error',
                err: err.code
            });
        } else {
            console.log(req.params.id);
            connection.query('SELECT * FROM customers where id=? ', req.params.id, function (err, rows, fields) {
                if (err) {
                    console.error(err);
                    res.statusCode = 500;
                    res.send({
                        result: 'error',
                        err: err.code
                    });
                }
                res.send(rows
                );
                connection.release();
            });
        }
    });
});
app.get('/api/clientes/', function (req, res) {
    connectionpool.getConnection(function (err, connection) {
        if (err) {
            console.error('CONNECTION error: ', err);
            res.statusCode = 503;
            res.send({
                result: 'error',
                err: err.code
            });
        } else {
            console.log("tudo");
            connection.query('SELECT * FROM customers', "", function (err, rows, fields) {
                if (err) {
                    console.error(err);
                    res.statusCode = 500;
                    res.send({
                        result: 'error',
                        err: err.code
                    });
                }
                res.send(rows
                );
                connection.release();
            });
        }
    });
});

var port = 8080;
app.listen(port);
console.log("Server rodando na porta #" + port);


Só aqui, tenho um método GET para busca geral da tabela "customers" e um passando parâmetros. Simples, direto, sem muita delonga. A serialização é automática, basta passar o resultado do Select como retorno que o express se encarrega.


Entendi, o cruel é voltar a usar os tradicionais métodos de interação com o banco de dados, hoje eu tenho algo assim:

  namespace Pluto.Api.Controllers.Persons.Customer
{
    [Authorize]
    [RoutePrefix("api/persons")]
    public class CustomerController : BaseApiController
    {
        [HttpPost]
        [Route("person-action")]
        public Task<IHttpActionResult> CreateOrUpdate(Person person)
        {
            try
            {
                Services.Customer.CreateOrUpdate(person);
                var response = Request.CreateResponse(HttpStatusCode.OK, Messages.SuccessfulOperation);
                return Task.FromResult(ResponseSuccess(response));
            }
            catch (Exception ex)
            {
                return Task.FromResult(ResponseError(HttpStatusCode.BadRequest, ex.Message));
            }
        }        
    }
}


O controller é bem enxuto, eu tenho métodos que são herdados de um controller base e nesse método é feito toda a mágica, a validação e consequentemente a interação com o banco de dados, e o resultado final vem em forma de sucesso ou não.

O encapsulamento, eu já sei que dá para fazer no express, existe algum ORM para ele? para não ter que usar SQL puro, porque meu amigo fazer na mão não é o ideal, o objeto person no exemplo ai, contem lista de contatos, lista de endereços, entre outras coisas, não que seja impossível fazer, mas muito trabalhoso usando o método tradicional.

Hoje a simples inclusão de um novo cliente, já vindo com uma lista de contatos, endereços, etc e já validados eu tenho isso:

  
_db.Persons.Add(person);
_db.SaveChanges();
transaction.Commit();


Raramente eu faço perguntas, mas como eu não conheço a tecnologia e sei que você já conhece, nada mais justo do que lhe perguntar, eu quero entender se dá para reutilizar, herdar, encapsular e as opções de ORM, não sei se seria algo precisamente para o Express, ou para o Node, creio eu que seria algo para o Node, e o express apenas o usaria.

Bom é isso, vou fazer uns testes com o exemplo que você passou, muito obrigado.

Abraços




#469834 - 18/12/2016 19:40:21

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Ah não, em comparação com EF, o express é lixo. Ele é mais indicado para aprendizado do que necessariamente para uso em ambientes de produção. Até existe um ORM para ele, mas como disse, em comparação com o EF nem vale a pena cogitar. Pela simplicidade e resultados mais diretos, ele é muito melhor para iniciantes aprenderem os princípios Client/server. Sinceramente nunca usei para nenhum sistema em produção.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#469840 - 19/12/2016 11:46:07

LAMPIAO
SAO CAETANO DO SUL
Cadast. em:Setembro/2004


Citação:
:
Ah não, em comparação com EF, o express é lixo. Ele é mais indicado para aprendizado do que necessariamente para uso em ambientes de produção. Até existe um ORM para ele, mas como disse, em comparação com o EF nem vale a pena cogitar. Pela simplicidade e resultados mais diretos, ele é muito melhor para iniciantes aprenderem os princípios Client/server. Sinceramente nunca usei para nenhum sistema em produção.


Eita Kerplunk, que balde de agua fria, rsrs.

Dei uma pesquisada e tem esse aqui tambem sequelizejs, teria que ter tempo para testar a integração, acho que vale mais usar em aplicações simples e que não são críticas, Mas tem aquele ditado, em time que esta ganhando não se mexe, é tão simples e intuitivo fazer as coisas no C# e EF, que achar algo que faça o mesmo não é tão simples assim. Mesmo o .Net Core, não esta tão preparado quanto o .Net tradicional que já esta consolidado no mercado.

Olhando o ORM que você passou e o sequelize, em ambos os casos, não são tão simples e diretos assim, e olhando os exemplos, são todos brutos, não se faz uso das boas práticas, como herança, encapsulamento, reflections, esses padrões que a gente aprende usando linguagem orientada a objetos.

Em todo caso eles não deixam de serem um opção, é que nem o angular 2, além dele existem vários por ai, vai do gosto e do nível de conhecimento de cada um.

A idéia inicial era ter algo do mesmo nível, mas que fosse mais barato manter isso na nuvem, hoje uso o Azure, e a cobrança é em dólar, e por incrivel que pareça é mais barato manter hospedado no data center do leste dos estados unidos, do que manter no data center do rio grande do sul ai na sua terra, só no brasil mesmo com esses bandidos no governo, só trazendo o ‎Kim Jong-un para fazer um estagio aqui no brasil para ver se ainda tem jeito.

Grande abraço



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário