.NET SoapClient: simple cliente para servicios SOAP

Ya hace varios años que se pusieron de moda las Web APIs, pero hasta la fecha, los servicios por medio del protocolo SOAP siguen siendo de lo más usado. En .NET tenemos los Web Services (ASMX) y WCF, que permiten crear servicios bajo este protocolo. La facilidad de crearlos y consumirlos en este framework es parte de lo que los hace tan populares hasta hoy en día.
Leer más “.NET SoapClient: simple cliente para servicios SOAP”

Anuncios

C#: Métodos con parámetros opcionales

En éste artículo explico la forma de crear métodos en C# con parámetros opcionales, lo cual permite omitirlos al invocar al método.

En ciertos casos, podemos encontrarnos en la situación de tener un método con cierta cantidad de parámetros (pocos o muchos), de los cuales algunos los usamos en ciertos casos, y otros no.

Leer más “C#: Métodos con parámetros opcionales”

C#. Convertir números a letra

Basado en una función que encontré en Internet (no recuerdo dónde :(), creé esta función de extensión para el tipo de dato int, para convertir de número a letra.

Leer más “C#. Convertir números a letra”

Cerrar sesión en ASP.NET (HTTPSessionState)

Ayer nos topamos en el trabajo con este detalle, y aunque al principio batallamos para encontrar solución, en realidad es algo sencillo.

ASP.NET utiliza un objeto HttpSessionState para permitirnos guardar variables en una sesión, es decir, mientras el usuario está en nuestro sitio Web sin cerrar el navegador.

Leer más “Cerrar sesión en ASP.NET (HTTPSessionState)”

Optimizar la sentencia for

Algo que encontré una vez en Internet hace poco (no recuerdo bien en dónde) que me llamó mucho la atención es cómo podemos optimizar una sentencia for.

Leer más “Optimizar la sentencia for”

Inserciones condicionales

Cuando hacemos una inserción como ésta:

public void EsStoredProcedure(ref SqlCommand comando, bool esSP) {
    if (esSP)
        comando.CommandType = CommandType.StoredProcedure;
    else
        comando.CommandType = CommandType.Text;
}

Estamos haciendo mucho rollo para darle valor a una sola variable. Esto no solo afecta estéticamente a nuestro programa. También ocupa algunos bits de más si podemos resumirlo a una sola línea.

En C#, una inserción condicional es cuando “incluimos” el if dentro de la inserción, de esta manera:

public void EsStoredProcedure(ref SqlCommand comando, bool esSP) {
    comando.CommandType = (esSP ? CommandType.StoredProcedure : CommandType.Text);
}

La inserción condicional se divide en tres partes: la condición (if), el resultado si la condición es positiva (true) y el resultado si la condición es negativa (false). La condición es seguida por un signo de interrogación, y los dos resultados se dividen con un signo de dos puntos.

En VB.NET, existe una función llamada Iif, que hace más o menos lo mismo:

Public Sub EsStoredProcedure(ByRef comando As SqlCommand, ByVal esSP As Boolean) 
    comando.CommandType = Iif(esSP, CommandType.StoredProcedure, CommandType.Text)
End Sub 

La diferencia es que C# evalúa solamente la condición y la inserción que se va a realizar, mientras VB evalúa las tres expresiones en la función Iif. Esto es un punto negativo, pues nos podemos topar con esta situación:

Public Function ObtenerDato(ByRef tabla As DataTable) As String
    Return Iif (tabla.Rows.Count > 0, tabla.Rows(0)("columna").ToString(), "")
End Function

En VB se evalúan las tres expresiones durante la ejecución. Suponiendo que la tabla no tiene ninguna fila, la aplicación generará un error de tipo NullReferenceException, pues la segunda parte de la función llama a una columna dentro de una fila inexistente.

Por cosas como ésta, prefiero C# sobre VB.NET.

C# – Propiedades

En .NET podemos crear y utilizar un elemento especial, denominado Propiedad, que aunque a simple vista parece ser una variable cualquiera, puede esconder una funcionalidad tan compleja como lo necesitemos.

Leer más “C# – Propiedades”