miércoles, 19 de noviembre de 2014

Los 8 principios básicos de SOA

Según Thomas Erl, existe 8 principios básicos para la implementación de la arquitectura SOA. Estos son los siguientes.

  1. Carácter contractual de los servicios
  2. Bajo acoplamiento, 
  3. Abstracción de la implementación, 
  4. Reusabilidad, 
  5. Autonomía, 
  6. Carencia de estado (statelessness), 
  7. Capacidad de ser descubiertos 
  8. "Orquestabilidad” y susceptibilidad a composición. 
Los principios que influyen directamente en el Retorno de Inversión son: la Reusabilidad, la 
Capacidad de ser descubiertos y la Orquestabilidad.



miércoles, 24 de septiembre de 2014

Búsqueda de palabras dentro de todos los procedimientos almacenados

Les dejo una consulta muy útil para buscar palabras dentro de todos los procedimientos de la base de datos SQL. Esto es útil si requieren buscar todas las consultas que usan el comando DELETE y evitarías abrir una a una cada procedimiento para ver cual de todas usa este comando.

/*
Buscar en todos los procedimientos almacenados y 
listar el nombre del procedimiento y la fila donde se encuentra la palabra de la búsqueda
*/

SET NOCOUNT ON
 
DECLARE @ColumnName AS VARCHAR(255)
SET @ColumnName = 'DELETE'
 
IF OBJECT_ID('tempdb..#tmpOperacion') IS NOT NULL
        DROP TABLE #tmpOperacion
 
DECLARE @idSP AS INT

DECLARE @tmpTABLE AS TABLE(
  NombreSP NVARCHAR(255),
  TextoSP NVARCHAR(MAX))
 
SELECT @idSP = MIN(OBJECT_ID)
FROM sys.procedures
 
WHILE @idSP IS NOT NULL
BEGIN
    DECLARE @nameSP AS VARCHAR(255)
 
    SELECT TOP 1 @nameSP = RTRIM(LTRIM(name))
    FROM sys.procedures
    WHERE OBJECT_ID = @idSP
 
    IF OBJECT_ID('tempdb..#tmpText') IS NOT NULL
        DROP TABLE #tmpText
 
    CREATE TABLE #tmpText (idRow int identity(1,1), textRow NVARCHAR(MAX))
 
    INSERT INTO #tmpText(textRow) EXEC sp_helptext @nameSP
 
    DECLARE @idRow AS INT
    
    SELECT @idRow = MIN(idRow) FROM #tmpText
 
    WHILE @idRow IS NOT NULL
    BEGIN
 
        DECLARE @textRow AS NVARCHAR(MAX)
        
        BEGIN TRY
        
   SELECT TOP 1 @textRow = UPPER(textRow) FROM #tmpText WHERE idRow = @idRow
   
      IF (SELECT CHARINDEX(@ColumnName, @textRow)) > 0
   BEGIN
    INSERT INTO @tmpTABLE (NombreSP, TextoSP)
    VALUES (@nameSP, @textRow)
    BREAK
   END
  END TRY
  BEGIN CATCH
   --NO REGISTRA EL ERROR
  END CATCH

        SELECT @idRow = MIN(idRow)
        FROM #tmpText
        WHERE idRow > @idRow
    END
 
    IF OBJECT_ID('tempdb..#tmpText') IS NOT NULL
        DROP TABLE #tmpText
 
    SELECT @idSP = MIN(OBJECT_ID)
    FROM sys.procedures 
    WHERE OBJECT_ID > @idSP
    
END

SELECT NombreSP, TextoSP FROM @tmpTABLE ORDER BY NombreSP
 
SET NOCOUNT OFF

Espero que les sirva de ayuda y que le facilite la vida.

jueves, 31 de julio de 2014

Tipos Anónimos en .NET

Estuve probando lo útil que puede ser declarar tipos anónimos en .NET, ya que en otros lenguajes con javascript esto ya existe. Esto hace mas fluido el desarrollo y mas divertido, sin tener que preocuparnos en la declaración de la variable o subir y bajar el cursor de tu pantalla para ir a la parte declarativa (normalmente arriba del código) y bajar a la parte que se usará la variable.

A continuación, dejo 2 pequeñas pruebas para crear un objeto y un arreglo, muy útiles si es que se desea almacenar valores, definir alguna entidad o usar de repositorio temporal en el desarrollo.

Lo primero es una prueba donde declararemos y asignaremos valores al objeto anónimo.

var anonObject = new { name = "apple", diam = 4 };

Como se puede ver, se declaro un objeto con 2 atributos y en ese instante se le asigno valores. Con esto se obtuvo un objeto del tipo anónimo.


Ahora se declararemos un arreglo del tipo anónimo que contenga objetos de tipo anónimos.

var anonArray = new[] { new { name = "apple", diam = 4 }, new { name = "grape", diam = 1 }};

Como se verá, se declaro un arreglo que contendrá 2 objetos anónimos iguales que el ejemplo anterior.


En conclusión, el uso de tipos anónimos mejora la fluidez del desarrollo y es una prueba que el lenguaje C#, como la plataforma .NET, sigue en constante evolución en beneficio de los desarrolladores, ya que desde mi punto de vista, facilita el desarrollo y aprendizaje de este lenguaje.



jueves, 5 de junio de 2014

Síntesis Perfecta


Caso 1: Urgente e Importante, se debe actuar 
Caso 2: Urgente y No Importante, se debe delegar
Caso 3: No Urgente e Importante, se debe planificar
Caso 4: No Urgente y No Importante, se debe posponer


martes, 27 de mayo de 2014

Instalar y Conectar el Visual Studio 2005 al Team Foundation Server 2010

Para integrar un proyecto desarrollado en VS 2005 con TFS 2010 se deberá tener en cuenta los siguientes pasos.

En primer lugar, se debe proceder a la instalación de las herramientas del VS 2005 y TFS 2010

Paso 1: Verificar la versión del VS ya que el detalle de este tutorial es usar VS 2005


Paso 2: Descargar los siguientes componentes antes de proceder con sus instalaciones, tener en cuenta que la versión de VS 2005 que uso esta en ingles y los componentes a descargar serán en ingles.


Paso 3: Instalar el "Visual Studio Team System 2005 Team Explorer"


Paso 4: Instalar el "Visual Studio 2005 Service Pack 1"


Paso 5: Instalar el "Visual Studio Team System 2005 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010 (Installer)"


En segundo lugar, procederemos a configurar el VS 2005 para que se pueda conectar al TFS 2010

Paso 1: Dar clic sobre la opción del menu "Tools" y seleccionar la opción "Connect to Team Foundation Server...".


Paso 2: Dar clic al boton "Servers...".


Paso 3: Dar clic al boton "Add..." .


Paso 4: Ingresar colocando la URL donde se aloja el proyecto. Ejm: https://tfsXX.discountasp.net:443/tfs/YourCollectionName


Paso 5: Dar clic al boton "Close".

Paso 6: Seleccionar el proyecto que desea acceder y dar clic el boton "OK"


viernes, 4 de abril de 2014

MONGOLAB con API REST - Parte 4

Ahora nos toca ver como eliminar un objeto de nuestra colección como parte de la continuación del paso 3. Donde ya se vio como actualizar un objecto en MongoLab usando REST API.

Para empezar, tenemos que obtener el "id" del objeto que se desea eliminar y con este "id" se procede a armar una URL compuesta, en donde se marca en color celeste el "id" tal como se ve a continuación. 


Con POSTMAN se ejecuta la URL con método DELETE para que elimine el registro que tenga dicho "id".


A continuación, se verifica que no exista el objeto en la colección "cambio". Para ello, accedemos a la pantalla principal de nuestra cuenta en MongoLab. Es allí que se puede constatar que ya no se tiene ningún objeto en la colección.


Si deseamos hacer la misma verificación pero usando REST API, se tendrá que usar la misma URL utilizada para eliminar.


Pero esta ves la URL usará el método GET como se ve a continuación.


 El resultado de esta consulta devolverá que no tiene ningún objecto en dicha colección, tal como se mostró desde la web MongoLab.


Con este procedimiento se puede eliminar objetos de una colección mediante la utilización del "id", ya que este es único y evita eliminar otros objetos que tengan valores similares.



MONGOLAB con API REST - Parte 3

Seguimos con tercera parte de las pruebas usando el API REST de MongoLab, antes de empezar debemos tener en cuenta todo lo explicado en la parte 2.

Ahora se procederá a actualizar los valores del objeto anteriormente creado y agregar un nuevo atributo. Para ello, es importante tener el "id" que se mostró anteriormente.

En primer lugar, con este "id" se procederá a construir una nueva URL, en donde se marca de color celeste el "id" que deberá estar dentro de esta URL.


Con la URL se ingresará en el POSTMAN usando el método GET para poder consultar los datos de dicho objeto.


Como resultado nos muestra los datos que actualmente tiene el objeto.


En segundo lugar, procederemos a agregarle un nuevo atributo al objeto, es decir, queremos que aparte se pueda almacenar una fecha. Para ello, utilizamos la misma URL compuesta del ejemplo anterior pero con la diferencia que el método será PUT y se agregará un mensaje en formato JSON que indica que se desea agregar dicho atributo y valor al objeto actual.


El resultado es el mismo objeto pero con un nuevo atributo de fecha.


Por último, procederemos ha actualizar el valor del atributo fecha para el mismo objeto. Para ello, utilizaremos el mismo URL compuesta con el método PUT y el mensaje JSON pero con un valor diferente.


El resultado es el mismo objeto pero con un nuevo valor en el atributo de fecha.

Con esto se puede demostrar lo fácil que es modificar un objeto mediante el API REST de MongoLab.

Seguimos con la parte 4