miércoles, 26 de octubre de 2011

ClickOnce

Buenas, hoy voy a mostrar como poder publicar nuestros proyectos con la tecnologia ClickOnce que ofrece microsoft.
Abrimos Visual Studio 2010 en modo administrador(Para poder tener permisos de escritura en las carpeta del IIS7).


Creamos un proyecto windows form nos vamos al "Solution Explorer"

Al hacer doble click en "Properties" nos aparece este menu

Nos vamos a la opcion "Publish" y veremos algo asi:


En "Publish Location" y en "Publishing Folder Location" vemos que nos dice que solo hay 3 formas de publicar nuestro proyecto
1.-Sitio Web
2.-Servidor FTP
3.-Ruta de Archivo
Nosotros vamos hacerlo en un sitio web, para esto hay que tener un servidor web instalado, yo lo hago con el IIS7, entonces pongo mi ip y la carpeta a donde quiero que me lo publique, si observamos con detenimiento en la opcion "Installation Folder URL" nos dice que coloquemos la ruta de la carpeta de donde se va a instalar el proyecto pero solo si es diferente a la de arriba, por eso nosotros la dejaremos vacia ya que queremos que se instale desde donde mismo.
Hacemos Click en el boton "Updates" y nos apararece esta ventana, ademas marcamos el checkbox donde nos dice que la aplicación debe comprobar si hay actualizaciones y dejamos seleccionado el radiobutton "Before the application starts" y presionamos ok

Damos click en "Options" 

En "Deployment web page" escribimosel nombre de la pagina donde publicaremos nuestro proyecto, y rellenamos el ckeckbox "Automatically generate dep...", presionamos el boton "ok"


Ya con esto es suficiente para publicar nuestro proyecto "Publish Now"


Aca me marco que tenia que escribir completa la pagina web asi que solo la reescribi de esta manera, si observan tambien le escribi el puerto "80"
Si todo anda bien les cargara la pagina donde se publica nuestro proyecto

martes, 25 de octubre de 2011

Publicar un sitio ASP.net

Nos vamos al menu "Start" le damos click derecho a "Computer" y elegimos "Manage"
Al hacer click nos aparece esta ventana, expandimos "services and applications" seleccionamos "Internet Information Services Manager".
Expandemos el servidor en mi caso "SISTEMAS-PC/Sites/Default Web Site
Llegados a este punto nos vamos al Visual Studio 2010, creamos un projecto web agregamos algunos componentes web, en mi caso un boton y una etiqueta, al hacerle click al boton me actualiza el texto de la etiqueta por "Hola Mundo!", nos vamos al "solution explorer" le damos click derecho a la solucion y elejimos "Build".
Nos vamos y abrimos la ubicacion donde tenemos guardado nuestro proyecto que si lo guardan en la ubicacion por default es esta "C:\Users\pajuarez\Documents\Visual Studio 2010\Projects" abrimos nuestro proyecto y nos dirigimos hasta la carpeta bin en mi caso "sln_wap_ASP_Test\wap_ASP_Test\bin" vemos que se han creado 2 archivos un archivo.dll y un archivo debug database.
Bueno nos regresamos a donde tenemos el proyecto y copiamos la carpeta "bin", default.aspx y web.config
Nos vamos a donde tenemos instalado el IIS 7 y creamos una carpeta
Vamos al "Computer Management" y damos un refresh a "Default Web Site"
 click derecho a la carpeta y elegimos "Convert to Application"
Nos aparece esta ventana, solo presionamos el boton "ok"
Bien ahora nos vamos a la carpeta "demo" que es donde vamos a pegar la carpeta "bin" la pagina default.aspx y web.config.
Y para terminar solo nos vamos al navegador tecleamos "localhost/demo" y listo vemos nuestro sitio web trabajando.
Bien eso es todo gracias.

sábado, 22 de octubre de 2011

Activar Internet Information Services 7 (IIS7)

Activaremos IIS7 en Windows 7
1.-Nos vamos a Inicio\Panel de Control\Programas y Caracteristicas\
Activar o desactivar las caracteristicas de windows.
2.-Seleccionamos todas las opciones de la carpeta Internet Information Services y damos en aceptar.
3.-Por ultimo solo nos queda hacer la prueba de que ha sido instalado.
Abrimos nuestro navegador predeterminado y tecleamos http:\\localhost.
Aui esta  la carpeta donde se instala C:\inetpub\wwwroot y vemos los siguientes archivos


Cliente-Servidor

Hola de nuevo bloggers, lo que vengo a postear ahora es un proyecto cliente-servidor que el profesor Ray de Programación Avanzada nos puso de examen.
Vamos comenzando.

Enunciado:

Software Inc. Requiere una aplicación Cliente-Servidor con las siguientes caracteristicas:
debe existir un Servidor
debe existir un Cliente
debe existir un Comunicador

El comunicador debe tener la función de comunicar al cliente con el servidor, es decir si el cliente quiere enviar una peticion al servidor debe comunicarselo al comunicador y el comunicador al servidor y el servidor para responderle al cliente debe hacer el mismo proceso.

Mi solución:
Explico un poco...
Inicio dividiendo el proyecto en 3 aplicaciones  con CLIENT.exe,  escribiendo en el stream (StreamWriter) una cadena "Hi Server" la cual la mandamos por el puerto 9898 y COMMUNICATOR.exe lee (StreamReader) esta cadena para posteriormente escribirla ahora en el puerto 9890, y asi es como nos comunicamos y el server lee el mensaje que el cliente le envió.
Es importante destacar que el puerto 9898 aun no se ha cerrado y debe de permanecer abierto hasta que le llegue su respuesta.
Llegando la cadena al servidor es el turno del servidor de enviar una cadena "Hi Client" y ocurre exactamente lo mismo, cuando llega este mensaje al cliente, los 2 sockets son cerrados el del puerto 9898 y el del 9890.
y si ponemos en un loop podemos enviar y recibir cadenas como un tipo de chat entre el servidor y el cliente.

Código del CLIENT.exe:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Net;

namespace caClient
{
    class Program
    {
        string theString;
        bool flag = false;
        static void Main()
        {
            new Program().Connect();
        }
        private string GetIP()
        {
            IPHostEntry endpoint = Dns.GetHostEntry("patricia-PC");
            return endpoint.AddressList[0].ToString();
        }
        public void Connect()
        {
            TcpClient socketForServer;
            string server = GetIP();
            int puerto = 9898;
            do{
            try
            {
                /*Creamos un TcpClient y le pasamos
                 * y le pasamos el server y el puerto
                 */
                socketForServer = new TcpClient(server, puerto);
                //Console.WriteLine("Conexion establecida, esperando respuesta...");
            }
            catch
            {
                Console.WriteLine("Could not connect to {0}:{1}", server, puerto.ToString());
                return;
            }
            NetworkStream networkStream = socketForServer.GetStream();
            StreamReader streamReader = new StreamReader(networkStream);
            StreamWriter streamWriter = new StreamWriter(networkStream);
            try
            {
                if (flag == false)
                {
                    Console.WriteLine("------------------------------------");
                    Console.WriteLine(" >>>Bienvenido al Chat de MORTEM<<<");
                    Console.WriteLine("------------------------------------");
                    flag = true;
                }
                Console.WriteLine("Client dice:");
                theString = Console.ReadLine();
                streamWriter.WriteLine(theString);
                streamWriter.Flush();
                string outputString = streamReader.ReadLine();
                Console.WriteLine("Mortem dice:");
                Console.WriteLine(outputString);
            }
            catch
            {
                Console.WriteLine("Exception reading from server");
            }
            finally
            {
                networkStream.Close();
            }
            } while (theString != "exit");
        }
    }
}
Y aca esta el otro diagrama del primer ejercicio:

viernes, 21 de octubre de 2011

ClickOnce

Tecnologia:

ClickOnce de Microsoft

Objetivos:

1.-Poder distribuir nuestro producto a nuestros clientes.
2.-Mantenerlos actualizados de las mejoras realizadas al producto.

Pasos:

Instalaremos IIS7 en Windows 7
1.-Nos vamos a Inicio\Panel de Control\Programas y Caracteristicas\
Activar o desactivar las caracteristicas de windows.
2.-Seleccionamos todas las opciones de la carpeta Internet Information Services y damos en aceptar.
3.-Por ultimo solo nos queda hacer la prueba de que ha sido instalado.

miércoles, 19 de octubre de 2011

Test Code

Hola bloggers esto es solo un test de una herramienta para darle una mejor presentación al codigo en el blog.

public static string GetMD5Hash(string input)
{
MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
byte[] bs = Encoding.UTF8.GetBytes(input);
bs = x.ComputeHash(bs);
StringBuilder s = new StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
string password = s.ToString();
return password;
}
<div id="highlighterMainDiv_236940" class="syntaxhighlighter java"><div id="toolbarContainer_236940" class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td>&nbsp;</td></tr><tr><td class="gutter"><div class="line number1 index0 alt2">01</div><div class="line number2 index1 alt1">02</div><div class="line number3 index2 alt2">03</div><div class="line number4 index3 alt1">04</div><div class="line number5 index4 alt2">05</div><div class="line number6 index5 alt1">06</div><div class="line number7 index6 alt2">07</div><div class="line number8 index7 alt1">08</div><div class="line number9 index8 alt2">09</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div></td><td id="codeContainer_236940" class="code"><div id="container_236940" class="container"><div class="line number1 index0 alt2"><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java plain">LoggerBusiness Instance</code></div><div class="line number2 index1 alt1"><code class="java plain">{</code></div><div class="line number3 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">get</code></div><div class="line number4 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">{</code></div><div class="line number5 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">if</code> <code class="java plain">(_loggerInstance == </code><code class="java keyword">null</code><code class="java plain">)</code></div><div class="line number6 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">{</code></div><div class="line number7 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">_loggerInstance = </code><code class="java keyword">new</code> <code class="java plain">LoggerBusiness(</code><code class="java string">"Monitor"</code><code class="java plain">);</code></div><div class="line number8 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number9 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">_loggerInstance;</code></div><div class="line number10 index9 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number11 index10 alt2"><code class="java plain">}</code></div></div></td></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr></tbody></table></div>

<pre id="presourcecode_236940" class="displaysourcecode" >
 public static LoggerBusiness Instance
{
    get
    {
        if (_loggerInstance == null)
        {
            _loggerInstance = new LoggerBusiness("Monitor");
        }
        return _loggerInstance;
    }
}
</pre>