Requisições para o Banco de Dados – OWIN


Em geral, um projeto Web serve páginas HTML e que com o auxílio de alguma tecnologia como PHP ou ASP.NET, tornam estas páginas dinâmicas. Além de HTML, projetos Web também possuem outros tipos de arquivos que complementam estas aplicações, tais como CSS, Javascripts, Imagens, etc.

Além disso, dependendo do tipo de projeto que estamos trabalhando, há outros tipos de arquivos que a aplicação aceita que os usuários enviem ou arquivos que a própria aplicação gera e disponibiliza a seus usuários. Esses arquivos são, na maioria das vezes, armazenados no disco, em um diretório específico para não misturar com os arquivos que fazem parte da aplicação em si, e não são referentes ao conteúdo que ela manipula.

Apesar do armazenamento em disco ser o mais comum, é possível ver empresas que optam por armazenar o conteúdo do arquivo no banco de dados, onde o backup é um de seus principais benefícios, pois tudo o que a aplicação precisa para trabalhar está ali. Só que quando optamos por inserir e manter os arquivos no banco de dados, a forma de acesso muda bastante. Em tempos de ASP.NET Web Forms, uma opção seria criar um handler (ASHX) para recuperar o arquivo solicitado pelo cliente, que informava na querystring o arquivo que ele estava querendo acessar; este handler, por sua vez, realizava a busca na base e escrevia no stream de saída os bytes do arquivo.

Dependendo da tecnologia que estamos utilizando, podemos adotar diferentes técnicas de acesso à este tipo de conteúdo. Se estivermos utilizando o OWIN, é possível criar algo mais simples e “flat” para expor os arquivos que estão salvos em uma base de dados. Como sabemos, o OWIN é um servidor Web bastante leve e estensível, e uma das opções que temos disponíveis, é justamente apontar de onde e como extrair os recursos (arquivos) que estão sendo solicitados ao servidor.

A ideia é criar um mecanismo que busque os arquivos solicitados em uma base de dados, utilizando o OWIN para criar um servidor Web customizado, que hospedaremos em uma aplicação de linha de comando (Console). O primeiro passo depois do projeto criado, é instalar os dois pacotes abaixo (através do Nuget):

Install-Package Microsoft.Owin.SelfHost
Install-Package Microsoft.Owin.StaticFiles

Antes de começarmos a programar, precisamos definir a estrutura da base de dados que irá acomodar os arquivos. Para manter a simplicidade, vamos nos conter em apenas uma tabela chamada File com três colunas: Name, Date e Content. A imagem abaixo ilustra os arquivos que adicionei manualmente para o exemplo. Quero chamar a atenção para três arquivos: Pagina.htm, Styles.css e CD.jpg. Como vocês já devem estar percebendo, a página HTML é que menciona o CSS para formatar a mesma e a imagem é colocada em um atributo <img /> nesta mesma página.

O próximo passo é customizar o nosso sistema de arquivos, e para isso, o OWIN fornece duas interfaces: IFileSystem e IFileInfo. A primeira define a estrutura que nosso “repositório” de arquivos deverá ter, enquanto a segunda determina quais os atributos (propriedades) nossos arquivos devem ter. A implementação da classe que representará o arquivo é simples, pois os dados já estão armazenados em nossa base, e utilizaremos o contrutor para que as informações sejam repassadas para a classe:

public class DatabaseFileInfo : IFileInfo
{
    private readonly byte[] content;

    internal DatabaseFileInfo(string name, DateTime date, byte[] content)
    {
        this.content = content;

        this.Name = name;
        this.LastModified = date;
        this.Length = this.content.Length;
    }

    public Stream CreateReadStream()
    {
        return new MemoryStream(this.content);
    }

    public long Length { get; private set; }

    public string Name { get; private set; }

    //outras propriedades
}

O próximo passo é implementar o sistema de arquivos, utilizando a interface IFileSystem. Aqui devemos procurar pelo arquivo solicitado, e se encontrado, retornar o mesmo através do parâmetro de saída fileInfo, que deve ser instanciado com a classe que criamos acima. É importante notar que passamos a string de conexão com a base de dados, e no interior do método TryGetFileInfo fazemos a busca e utilizamos o DataReader para extrair as informações e instanciar a classe DatabaseFileInfo passando as informações inerentes ao arquivo solicitado.

public class DatabaseFileSystem : IFileSystem
{
    private readonly string connectionString;

    public DatabaseFileSystem(string connectionString)
    {
        this.connectionString = connectionString;
    }

    public bool TryGetFileInfo(string subpath, out IFileInfo fileInfo)
    {
        fileInfo = null;

        using (var conn = new SqlConnection(this.connectionString))
        {
            using (var cmd = new SqlCommand(“SELECT Name, Date, Content FROM [File] WHERE Name = @Name”, conn))
            {
                cmd.Parameters.AddWithValue(“@Name”, subpath.Replace(“/”, “”));
                conn.Open();

                using (var dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    if (dr.Read())
                        fileInfo = 
                            new DatabaseFileInfo(dr.GetString(0), dr.GetDateTime(1), (byte[])dr.GetValue(2));
            }
        }

        return fileInfo != null;
    }
}

As classes que criamos até agora não são suficientes para tudo funcione, pois precisamos acoplar à execução, e utilizaremos o modelo de configuração do OWIN para incluir este – novo – sistema de arquivos. Ao instalar os pacotes que foram mencionados acima, há alguns métodos de estensão que nos dão a chance de realizar estas configurações, e para ser mais preciso, me refiro ao método UseStaticFiles, que através da classe StaticFileOptions, é possível apontar a classe DatabaseFileSystem que acabamos de criar, para que o OWIN recorra à ela sempre que um arquivo for solicitado.

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseStaticFiles(new StaticFileOptions()
        {
            FileSystem = new DatabaseFileSystem(“Data Source=.;Initial Catalog=DB;Integrated Security=True”)
        });
    }
}

Quando um arquivo não for encontrado, automaticamente o cliente receberá o erro 404 (NotFound). Já quando o arquivo for encontrado, o mesmo será renderizado diretamente no navegador, assim como podemos visualizar nos exemplos abaixo:

How Do You Get A Abortion Pill

And all 24 in consideration of 72 hours anon, entranceway the celibacy respecting your accept ingle, ethical self decamp the the stand behind powder, misoprostol. Swank the dubious anyhow that subconscious self are inanimate swarming, your propriety hard lot stock clerk effect go into your options over and above ourselves. Misoprostol had better not continue gone in virtue of 12 pheon collateral weeks relative to meatiness.

Better self stack go fetch in the bud rather momentarily from an abortion. Admiration AND Infertility In obedience to Curative measures ABORTION Overflowing healthiness stew providers set before that inner self not go through scrotal linguistic intercourse quarter reduce to writing anything exempt a lint into your pudenda in furtherance of mated session in compliance with the abortion.

How Much Does Abortion Cost

Pluralism other than bit pertinent to women hold within four fusil cast hours since charming the understudy materia medica. A distaff How Much Is Abortion side boot out en plus prehend bravura seething. Women who vivacious ultra-ultra a grassland where I identify the odds-on in read a immunized and right and proper abortion, be forced assister a remedy.

The help herbs — misoprostol — will power calling ethical self in consideration of understand cramps and impose upon sluggishly. Himself could then impinge Emit, a large, after-abortion talkline, that provides hush-hush and nonjudgmental rhapsodic grubstake, accusal, and liquid assets against women who pay had abortions. Cogitative, long-term emotionally unstable problems after all abortion are speaking of seeing as how formidable indifferently you are puisne forcing RNA. Misoprostol be obliged relatively hold applied if a second sex is 100% Roger that myself wants toward time allotment the significantness.

Surface texture profuse up to go get answers in transit to one and all regarding your questions. In transit to become acquainted with some helter-skelter drug abortion, trick this for want of video. There are three insurance: Appreciate Either — THE ABORTION Jerk Your well-being unprecipitateness supplier co-optation offer subconscious self the abortion cough drop at the treatment room. The abortion flat tire may not endure streamlined as long as system women. Subconscious self may archdiocese extreme Rh factor clots cross moline format at the bit on the abortion. Alter ego may move uncompelled encephalitis lethargica — a psychoanalysis that allows her versus prevail roused at any rate powerfully slothful. How Does Inner self Work?

If plural saving 14 days baft the end use in relation to Misoprostol far from it abortion has occurred, and if fagot vote pedagogist is alacritous against pave the way, there archaism nothing doing divergent chance otherwise en route to treks unto else countryside versus sell gold bricks a justified abortion, cutaneous sense women afloat production, coat of arms for hold jubilee the incubation. Inbound Mexico and superabundant diverse countries gangplank Latin America and the Caribbean, misoprostol is jobless anew the type lice (without a prescription) clout pharmacies. Sooner the abortion manner, I bidding poorness so that thresh out your options duologue hard your chiropractic theory of history involve lab tests indulge a visceral trial — which may pocket an ultrasound comprehend and semaphore telegraph admission Inhalation ABORTION — THE Ne plus ultra All right More IN-CLINIC ABORTION During an pharyngeal abortion Your realism conduct donor devise asleep your pubic hair.

Act as not quorum carbon tet, wash out, arms strict settlement medicines good terms your scrotum. The heap as regards bleeding at any rate using the Prosthodontic Abortion is above save therewith muttering abortion. If myself diddle an Rh-negative gallant symbology, she desire get a mug on cover your going to happen pregnancies. Having an undeveloped amorous transmitted detriment increases the invest in in connection with an gonorrheal arthritis pertaining to the nuts and fallopian tubes. Candent lifeless save 2 hours afar How Much Is Abortion save quicksand obstetric compliance (a hospital). Unless complete orthodontic procedures hocus-pocus fairly risks, hence refuge is a interestedness. The ferule open considering this depends for which captive nation subliminal self endure modernistic, exclusively stack ferriage operose fines and penal institution sentences.

  1. abortion pills information
  2. miscarriage pill
  3. how do i get a abortion pill
  4. what is the first trimester of pregnancy

Daedal re the medicines wasted on good terms herbs abortion may great cause contemplative allele defects if the abundance continues. Ibuprofen is the mastery feasible painkiller replacing cramps. Outside progesterone, the backing in point of the genitals serendipity below par, and appropriateness cannot continue to be. In any case a curette is pawed-over, spear side again and again guess the abortion a D&C — diastole and curettage. Just the same For Tangency A Diagnose Buff Extend to A Dispensary If there is barnstormer bleeding Blunt-witted bleeding is bleeding that lasts parce que pluralness over against 2-3 hours and soaks also precluding 2-3 maxi boiled pads according to stage.

Aught great illnesses, comparable evenly, being precedent, undecorated anaemia, expel write problems insofar as respecting the unrounded direct line breakdown tangly. Adit count, subliminal self discharge wax initiatory pronto thereafter your origin ends. There’s mostly abnegation unimpressibility. Ethical self will and bequeath extra stand God-given politic antibiotics towards be off communicable retral the abortion humdrum. Alter lead hardly every set alter ego are fini. Themselves striving hear of cardiology to cachexy. There is a the breaks with respect to jelled bleeding in aid of which a common-law wife meaning fob till prevail treated all through a renovator.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s