.net

Servicio Web para consultar WHOIS

Webservicex.net pone a disposición de los programadores un servicio web para realizar solicitudes WHOIS para obtener información de un dominio.

Podéis realizar la conexión contra la dirección:

http://www.webservicex.net/whois.asmx

Anuncios

Servicio Web de Traducción

Webservicex.net pone a disposición de los programadores un servicio web para realizar traducciones online.

Podéis realizar la conexión contra la dirección:

http://www.webservicex.net/TranslateService.asmx

Según indica la ayuda del propio webservice: “Convertir texto de un idioma a otro. Idiomas soportados son inglés a chino, inglés a francés, inglés a alemán, inglés a italiano, inglés a japonés, inglés a coreano, portugués a inglés, español a inglés, chino a inglés, francés a inglés, francés a alemán, alemán a inglés, alemán a francés, italiano a inglés, japonés a inglés, coreano a inglés, portugués a inglés, ruso a inglés y español a inglés.”

Microsoft FxCop 1.36 Beta 2

FxCop es una herramienta de análisis de código que comprueba código administrado .NET de ejecutables y librerías para la conformidad con Microsoft .NET Framework Design Guidelines. Se utiliza para inspeccionar los ejecutables y librerías analizando más de 200 defectos en las siguientes áreas:

  • Biblioteca de diseño
  • Globalización
  • Convenciones de nombres
  • Rendimiento
  • La interoperabilidad y la portabilidad
  • Seguridad
  • Uso

FxCop incluye tanto la GUI y de línea de comandos versiones de la herramienta y apoya el análisis. 1.x NET,. NET y 2,0. NET 3.x componentes.

Requisito imprescindible para la certificación de aplicaciones para “Microsoft Partner Program” y “Web Services and the .Net Framework”.

Podéis encontrarlo en:

http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&displaylang=en

 

Para más información podéis consultar http://www.lionbridge.com/lionbridge/en-US/services/outsourced-testing/product-certification-programs/microsoft/Platform-Test-for-ISV-Solutions.htm

Extracción de enlaces de una página Web haciendo uso de expresiones regulares

En este artículo se vera como generar aplicaciones basadas en expresiones regulares para extraer información de interés para su futura manipulación.

Muchas veces necesitamos desarrollar un procedimiento o función que extraiga información importante de un documento de texto, por ejemplo los URLS de una página Web para generar un Spider o Robot. Gracias al uso de expresiones regulares crear este tipo de aplicaciones es bastante sencillo.

En el siguiente ejemplo se hará uso de los espacios de nombre (Namespaces).

Desde Visual Studio 2005.

Generar una forma Windows

Para este código se utilizara el Espacio de Nombres System, System.Data, System.Net, System.Text, System.Text.RegularExpressions y System.Collections

' Versión VB .Net
Imports System
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim listadoURL As New ArrayList()
        listadoURL = UrlList("http://www.e-mision.net/crazyhouse")
    End Sub

    Public Function UrlList(ByVal url As String) As ArrayList
        ' Se crea un arreglo de bytes
        Dim resultHTML() As Byte

        ' Se crea un objeto de la clase ArrayList 
        Dim linksArray As New ArrayList

        ' Se crea un objeto de la clase WebClient class 
        Dim myWebClient As New WebClient

        ' Se extrae el contenido HTML del url proporcionado por el usuario
        resultHTML = myWebClient.DownloadData(url)

        ' Crear un objeto UTF8 que describe como esta codificado el contenido de la página 
        Dim utf8Enc As New UTF8Encoding

        ' Se obtiene la codificación UTF8 del resultado resultHTML
        Dim myResultString As String = utf8Enc.GetString(resultHTML)

        ' Se convierte el resultado a minúsculas para facilitar el uso de la expresión regular.
        myResultString = myResultString.ToLower()

        ' Se genera una expresión regular para revisar y extraer los URL               
        Dim regularexpre As New Regex("href\s*=\s*(?:(?:\(?[^\]*)\)|(?[^\s]* ))")

        ' Extraer aquellas cadenas que cumplen con la expresión y se almacenan en una colección 
        Dim collectionurls As MatchCollection = regularexpre.Matches(myResultString)

        ' Se adicionan las cadenas(URLs) al arreglo
        For Each res As Match In collectionurls
            For Each t As Group In res.Groups
                linksArray.Add(t.Value)
            Next
        Next

        ' Se retorna el arreglo
        Return linksArray
    End Function
End Class

 

// Versión C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Text.RegularExpressions;
using System.Collections;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ArrayList listadoURL = new ArrayList();
            listadoURL = UrlList("http://www.e-mision.net/crazyhouse");
        }
        public ArrayList UrlList(string url)
        {

            // Se crea un arreglo de bytes
            byte[] resultHTML;

            // Se crea un objeto de la clase ArrayList 
            ArrayList linksArray = new ArrayList();

            // Se crea un objeto de la clase WebClient class 
            WebClient myWebClient = new WebClient();

            // Se extrae el contenido HTML del url proporcionado por el usuario
            resultHTML = myWebClient.DownloadData(url);

            // Crear un objeto UTF8 que describe como esta codificado el contenido de la página 
            UTF8Encoding utf8Enc = new UTF8Encoding();

            // Se obtiene la codificación UTF8 del resultado resultHTML
            string myResultString = utf8Enc.GetString(resultHTML);

            // Se convierte el resultado a minúsculas para facilitar el uso de la expresión regular.
            myResultString = myResultString.ToLower();

            // Se genera una expresión regular para revisar y extraer los URL               
            Regex regularexpre = new Regex("href\s*=\s*(?:(?:\(?[^\]*)\)|(?[^\s]* ))");

            // Extraer aquellas cadenas que cumplen con la expresión y se almacenan en una colección 
            MatchCollection collectionUrls = regularexpre.Matches(myResultString);

            // Se adicionan las cadenas(URLs) al arreglo
            foreach (Match res in collectionUrls)
            {
                foreach (Group t in res.Groups)
                {
                    linksArray.Add(t.Value);
                }
            }

            // Se retorna el arreglo

            return linksArray;
        }
    }
}

Con este ejemplo se ha aprendido como utilizar expresiones regulares para manipular información relevante.

Publicado en http://www.programar.net por Rubén Darío Sánchez

Información WMI sobre la placa base (MotherBoard)

La clase WMI maneja información muy relevante de los componentes del sistema. Un ejemplo es la obtención de los datos de la placa base.

Desde Visual Studio 2005.

Generar un formulario Windows

Para este código se utilizara el Espacio de Nombres System.Management.dll, el cual hay que incorporar como referencia.

Imports System.Management
Public Class Form1
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim mo As System.Management.ManagementObject
        Dim moq As System.Management.ObjectQuery = New System.Management.ObjectQuery("Select * from Win32_MotherboardDevice")
        Dim mos As New System.Management.ManagementObjectSearcher(moq)
        For Each mo In mos.Get()
            MessageBox.Show("Availability = " & mo("Availability") & vbCrLf & _
                            "Caption = " & mo("Caption") & vbCrLf & _
                            "ConfigManagerErrorCode = " & mo("ConfigManagerErrorCode") & vbCrLf & _
                            "ConfigManagerUserConfig = " & mo("ConfigManagerUserConfig") & vbCrLf & _
                            "CreationClassName = " & mo("CreationClassName") & vbCrLf & _
                            "Description = " & mo("Description") & vbCrLf & _
                            "DeviceID = " & mo("DeviceID") & vbCrLf & _
                            "ErrorCleared = " & mo("ErrorCleared") & vbCrLf & _
                            "ErrorDescription = " & mo("ErrorDescription") & vbCrLf & _
                            "InstallDate = " & mo("InstallDate") & vbCrLf & _
                            "LastErrorCode = " & mo("LastErrorCode") & vbCrLf & _
                            "Name = " & mo("Name") & vbCrLf & _
                            "PNPDeviceID = " & mo("PNPDeviceID") & vbCrLf & _
                            "PowerManagementSupported = " & mo("PowerManagementSupported") & vbCrLf & _
                            "PrimaryBusType = " & mo("PrimaryBusType") & vbCrLf & _
                            "RevisionNumber = " & mo("RevisionNumber") & vbCrLf & _
                            "SecondaryBusType = " & mo("SecondaryBusType") & vbCrLf & _
                            "Status = " & mo("Status") & vbCrLf & _
                            "StatusInfo = " & mo("StatusInfo") & vbCrLf & _
                            "SystemCreationClassName = " & mo("SystemCreationClassName") & vbCrLf & _
                            "SystemName = " & mo("SystemName"), "Información de la placa Base")
        Next mo
    End Sub
End Class

Por supuesto, este ejemplo, variara en función de la información que WMI pueda recabar de dicho dispositivo.

Puedes obtener más información en http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_motherboarddevice.asp.

Generación y descarga de archivos vía Web en tiempo de ejecución

En este artículo se tratará como generar archivos en tiempo de ejecución y retornarlos como descarga.

Muchas veces en las aplicaciones Web se desea generar un archivo para que se descargue pero no se desea almacenar en el servidor. Este archivo puede ser por ejemplo un documento de texto cuyo contenido puede ser el retornado por una base de datos o un reporte específico.

En este artículo veremos como generar un documento en el servidor para ser descargado a partir de la información digitada por un usuario en un campo de texto.

Desde Visual Studio 2005.

Generar una forma Web con un campo de texto multilínea y un botón

Para este código se utilizara el Espacio de Nombres System.IO

En el evento Clic del botón adicionar el código que se explica a continuación.

' Versión VB .Net
Imports System.IO
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Generar un MemorySteam donde se guardara la información temporalmente 
        Dim mystream As New MemoryStream

        ' Generar un StreamWriter para almacenar la información en el MemoryStream 
        Dim writer As New StreamWriter(mystream)

        ' El StreamWriter debe tener la posibilidad de AutoFlus para que se limpie el buffer despues de cada llamada 
        writer.AutoFlush = True

        ' Escribir en el MemoryStream el contenido digitado por el usuario 
        writer.Write(TextBox1.Text)

        Response.Clear()

        ' En la respuesta http adicionar los encabezados que describen la información de archivo 

        ' El contenido es un archivo llamado documento.txt de tipo attachment 
        Response.AppendHeader("Content-Disposition", "attachment; filename=documento.txt")

        ' La longitud del contenido es del tamano de la longitud del Stream (Nuestro documento) 
        Response.AppendHeader("Content-Length", mystream.Length.ToString())

        ' Se define el tipo de contenido 
        Response.ContentType = "application/octet-stream"

        ' Se escribe la cadena de caracteres binarios al output Stream HTTP 
        Response.BinaryWrite(mystream.ToArray())

        ' Se envía el buffer actual al usuario. En este caso el documento 
        Response.End()
    End Sub
End Class
// Versión C#

// Generar un MemorySteam donde se guardara la información temporalmente 
MemoryStream mystream = new MemoryStream(); 

// Generar un StreamWriter para almacenar la información en el MemoryStream 
StreamWriter writer = new StreamWriter(mystream); 

// El StreamWriter debe tener la posibilidad de AutoFlus para que se limpie el buffer despues de cada llamada 
writer.AutoFlush = true; 

// Escribir en el MemoryStream el contenido digitado por el usuario 
writer.Write( this.TextBox1.Text); 

Response.Clear(); 

// En la respuesta http adicionar los encabezados que describen la información de archivo 

// El contenido es un archivo llamado documento.txt de tipo attachment 
Response.AppendHeader( "Content-Disposition", "attachment; filename=documento.txt"); 

// La longitud del contenido es del tamano de la longitud del Stream (Nuestro documento) 
Response.AppendHeader( "Content-Length", mystream.Length.ToString()); 

// Se define el tipo de contenido 
Response.ContentType = "application/octet-stream"; 

// Se escribe la cadena de caracteres binarios al output Stream HTTP 
Response.BinaryWrite(mystream.ToArray()); 

// Se envía el buffer actual al usuario. En este caso el documento 
Response.End();

Con este ejemplo hemos aprendido como generar archivos en un memorystream y retornarlos al cliente en una Respuesta HTTP.

Publicado en http://www.programar.net por Rubén Darío Sánchez

Conocer el País de Origen por la IP

El Web Sevice de programar.net permite conocer el país desde el cual se esta conectando un usuario a un sitio Web teniendo en cuenta si dirección IP.

Es un servicio complementario al que podéis encontrar en CualEsMiIP.

Este servicio se encuentra en: http://www.programar.net/webservices/ip-a-pais.asmx

Para poder consumir este servicio Web necesitamos primero conocer la dirección ip del usuario que se esta conectando al sitio. Esta se puede conocer de la siguiente manera:

string ip= Request.UserHostAddress; 

Una vez obtenida la dirección IP del usuario es necesario hacer uso del servicio Web. Para esto se debe:

  • Añadir una referencia Web desde visual Studio.net
  • Consumir el servicio Web e imprimir el resultado
net.programar.www.IpaPais pais1= new iptest.net.programar.www.IpaPais();
Response.Write(ipapais.Pais1(ip)); 

El uso de este servicio Web tiene bastantes aplicaciones como la de manejar estadísticas detalladas de los usuarios que visitan un sitio Web o desplegar publicidad relativa al país del visitante.

El código completo se puede utilizar al cargar la pagina:

// Versión C#
private void Page_Load( object sender, System.EventArgs e)
{ 
     string ip=Request.UserHostAddress;
     net.programar.www.IpaPais ipapais= new iptest.net.programar.www.IpaPais();
     Response.Write(ipapais.Pais(ip)); 
} 

Publicado en http://www.programar.net por Rubén Darío Sánchez

Conocer la IP de salida a Internet y el Proxy

El Web Service de e-mision.net permite conocer la IP y el Proxy de Internet, devolviendo la información.

Es un servicio complementario al que podéis encontrar en CualEsMiIP.

Este servicio se encuentra en: http://ws.e-mision.net/cualesmiip.asmx

Para hacer un ejemplo, al crear un proyecto nuevo podéis incluir el siguiente código.

' Versión VB .Net 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim otmp As New ws_e_mision.CualEsMiIP
    MessageBox.Show("IP Externa: " & otmp.DameIP.ToString & vbcrlf & "Proxy de Conexión: " & otmp.DameProxy)
End Sub

Ejemplo de Ping en .Net 2.0

.NET 2.0 dispone de un nuevo espacio de nombres pensado específicamente para crear aplicaciones de diagnóstico de redes. Se trata de System.Net.NetworkInformation.

En él encontramos clases para obtener información sobre las interfaces de red de un equipo, información trasegada por la red, recibir notificaciones (por ejemplo de que se ha modificado la dirección de una tarjeta), etc… Es muy interesante echarle un vistazo.

Para hacer un primer ejemplo con ella usaremos la clase Ping, que permite (obviamente) hacer un “ping” ICMP a cualquier nodo de una red. Permite hacerlo de forma síncrona o asíncrona. En la versión anterior de la plataforma había que hacerlo “a pelo” y era bastante complicado. Ahora es sencillísimo.

Por ejemplo, el siguiente código realiza cuatro pings a Google y devuelve los resultados de cada petición.

' Versión VB .Net
Imports System.Net
Imports System.Net.NetworkInformation
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        Dim eco As New System.Net.NetworkInformation.Ping
        Dim res As System.Net.NetworkInformation.PingReply
        Dim ip As IPAddress

        ' Dirección de Google
        ip = IPAddress.Parse("66.249.87.104")
        For i = 1 To 4
            res = eco.Send(ip)

            Console.Write("Respuesta desde " & res.Address.ToString & ": bytes:" & _
                          res.Buffer.Length & " tiempo=" & res.RoundtripTime & " (" & _
                          res.Status.ToString & ")" & vbCrLf)
        Next

    End Sub
End Class

En la consola veremos aparecer algo similar a esto:

Respuesta desde 66.249.87.104: bytes:32 tiempo=102 (Success)
Respuesta desde 66.249.87.104: bytes:32 tiempo=95 (Success)
Respuesta desde 66.249.87.104: bytes:32 tiempo=94 (Success)
Respuesta desde 66.249.87.104: bytes:32 tiempo=97 (Success)

Es muy fácil crear una aplicación clónica del “ping” de la línea de comandos de Windows, o mejor aún, crear una versión con Windows Forms que haga más cosas y sea más fácil de usar. ¡El que se anime que nos lo mande y lo publicaremos!

Esta clase Ping es muy útil para comprobar a intervalos regulares si un servidor está funcionando o no, o hacer un barrido de una red para descubrir qué nodos están activos.

Publicado en Campus MVP