SharePoint Latin Rotating Header Image

.NET Framework 3.5

Programación de WebParts de SharePoint 2010 con Visual Studio 2010, pan comido para un desarrollador .NET

Tú como programador .NET seguramente has escuchado hablar de SharePoint y muy probablemente en las bolsas de trabajo encuentras que un plus en tu currículo como programador es saber SharePoint o programar en SharePoint. Bien, pues aquí tienes un video que publique en mi canal de YouTube donde como programador puedes conocer lo siguiente de SharePoint:


  • Que son los WebParts
  • Como están constituidos
  • Que elementos o clases usamos para construirlos
  • Como programarlos y con qué herramientas
  • Como empaquetarlos para su portabilidad

Date el tiempo ver este video, especialmente desde la demostración ya que se explica y se muestra lo básico de la construcción de un webpart, múltiples enfoques de empaquetamiento e incluso hasta el uso de AJAX.



Oportunidad de Negocio

Si usted tiene la necesidad de dar una solución basada en tecnología para resolver algún problema de negocio y requiere de un especialista técnico capaz de hacer su visión realidad, entonces le pido que descargue y llene el siguiente cuestionario inicial de oportunidad y lo haga llegar a haarongo@prodigy.net.mx con la finalidad de revisarlo, evaluarlo y potencialmente producir una propuesta de solución. Gracias!



Validando la contraseña de las cuentas de una implementación SharePoint

Me pidieron que validara las cuentas que utilizamos para instalar SharePoint en un ambiente de producción y pues la gente de la mesa de soporte al ver que mi petición no tiene tanta urgencia “según ellos” y  conforme a sus acuerdos de niveles de servicio me informaron que en una semana me tendrían la respuesta a mi solicitud. El problema a solucionar es que no se sabía si la contraseña X era la misma que se usó en todas las cuentas de SharePoint, en total fueron 9 cuentas y dado que en una semana ni siquiera estaré aquí físicamente me vi en la necesidad de encontrar una solución alterna rápidamente.


Las cuentas a validar fueron:


POLLOLOCO\SP_farm
POLLOLOCO\SP_services
POLLOLOCO\SP_web
POLLOLOCO\SP_search
POLLOLOCO\SP_sync
POLLOLOCO\SP_superuser
POLLOLOCO\SP_superreader
POLLOLOCO\SP_crawl
POLLOLOCO\SP_unattended


Estimado lector, para solucionar tu problema, ¿qué harías si en algún momento de tu vida fuiste un apasionado programador .NET y sabes que puedes hacer al respecto?, ¿Te esperarías a que la gente de mesa de soporte de acuerdo a sus prioridades te responda?, ¿serias un radical y con el poder que el conocimiento te da resolverías tú mismo tus problemas, claro sin que muera nadie?


En mi caso decidí bajar Visual Studio 2012 Express for Windows Desktop y escribir una aplicación de consola que utilizando el namespace de System.DirectoryServices pudiese consultar el active directory en cuestión y validar las credenciales que necesito validar. En tan solo 12 minutos ya tenía mi instancia de Visual Studio 2012 Express for Windows Desktop instalada, durante la descarga busqué en internet y encontré que desde la versión 3.5 del .NET Framework se incluyó una nueva funcionalidad para gestión de active directory la cual se encuentra en System.DirectoryServices.AccountManagement y pues utilizando la clase PrincipalContext pude invocar el método ValidateCredentials con el cual sabría si la cuenta X o Y era válida.


El código lo comparto aquí:


using System;
using System.Text;
using System.DirectoryServices.AccountManagement;

namespace TestAccount
{

    class Program
    {

        static void Main(string[] args)
        {

            bool isValidAccount = false;

            Console.WriteLine("Domain Name (NetBios):");
            string domainName = Console.ReadLine();

            Console.WriteLine("User account:");
            string accountName = Console.ReadLine();

            Console.WriteLine("Password:");
            string accountPassword = Console.ReadLine();

            try
            {

                if (string.IsNullOrEmpty(domainName) || string.IsNullOrEmpty(accountName) || string.IsNullOrEmpty(accountPassword))
                    throw new ArgumentNullException();

                using (PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName))
                {                    
                    isValidAccount = context.ValidateCredentials(accountName, accountPassword);
                }

                Console.WriteLine("{0}\\{1} - {2}",domainName, accountName, isValidAccount.ValidNotValidString());              
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: {0}",ex.Message);
            }
            finally
            { 
                Console.ReadKey(); 
            }       
            
        }
    }

    public static class BooleanExtensions
    {
        public static string ValidNotValidString(this bool value)
        {
            return value ? "Valid account" : "Not Valid account, check username or password!";
        }
    }
}

 


Y la solución aquí también la puedes encontrar en el attachment, dentro esta el ejecutable compilado.


PD. Cuando el equipo de la mesa de ayuda me contacte de 5 días, que le debería de decir en respuesta?


Saludos

Creando una Lista Personalizada en Visual Studio 2012 para SharePoint 2010

Date la oportunidad de experimentar como Visual Studio 2012 simplifica la construcción y empaquetamiento de componentes SharePoint 2010 y 2013. De momento dejo este video para que veas lo simple que es crear una lista personalizada con algunos campos especiales.


Documentando Granjas SharePoint con SharePoint Documentation Toolkit

Hoy quiero comentar sobre una herramienta que todo consultor o empresa que ofrece servicios SharePoint debería de tener. Sucede que con cada nuevo cliente y/o proyecto tenemos que conocer la granja donde potencialmente estaremos soportando o instalando nuestros desarrollos, en ese sentido hay que ser muy cuidadosos de no impactar configuración existente y sobre todo de tener el conocimiento de la configuración para asegurar que los movimientos que haremos no impacten a otros y si así fuese el caso, saber cómo estaba configurado antes. En el pasado he tenido la experiencia de conocer una empresa que se metió en graves problemas por no haber sido lo suficientemente cuidadosos de documentar la configuración de la granja de producción antes de implementar algunos paquetes de solución con desarrollo personalizado en la granja de cliente, termino siendo un desastre.


Así mismo, empresas que han invertido millones en su plataforma de colaboración basada en SharePoint también deben de mantenerse al día y conocer la configuración que se tiene implementada. Recuerden que cuando tenemos un entorno productivo y somos una empresa grande es muy probable que tengamos más de una granja, más de un ambiente, con múltiples servidores probablemente balanceados que deberán todos contar con el mismo nivel de configuración y de paquetes de actualización, desde la perspectiva SharePoint todos sabemos que nuestros Web Front Ends deben de estar idénticos en cuanto a configuración se refiere y claro esto se vuelve un reto mantenerlos al día.


Es aquí donde SharePoint Documentation Toolkit  de Acceletario, LTD entra a la escena. SPDocKit es una herramienta de documentación que asiste a los administradores y consultores SharePoint en conocer, comparar y rastrear los cambios de configuración de granjas SharePoint 2007 y 2010 en tan solo 3 clics, permitiendo sin duda un conocimiento mucho más detallado de la configuración en minutos.


Características:


  • Genera documentación de granjas SharePoint: Simplemente instalando y/o ejecutando en cualquieras de los servidores de una granja SharePoint 2010 o 2007 puedes generar un documento de Word o PFD al vuelo tras revisar los aspectos de configuración que tú mismo seleccionas para depositarlos en tablas y textos dentro del documento. Es muy extensa toda la configuración que se puede documentar y sin duda presenta una radiografía con la que puedes entender en qué estado de configuración está tu granja.
  • Explora la configuración de tus granjas: La interface visual de Documentation Toolkit ofrece una vista de árbol con la cual puedes explorar mediante nodos y vistas los distintos elementos de configuración que tienes en tu granja permitiendo consultar en el momento y totalmente en línea la información.
  • Documenta contraseñas y llaves de producto: Existe distintas modalidades de uso de este producto y uno de ellos nos permite contar con un acceso total a la información de nuestra implementación. Entre ellas contraseñas y claves de producto, podemos configurar una base de datos SQL para almacenar el estado de las configuraciones y mantener con el tiempo esa información.
  • Comparación de la configuración entre granjas: Valida los cambios de configuración que pueden existir en los servidores entre granjas SharePoint. La opción de comparación te muestra las diferencias.

Aqui un video de demostracion:



Free Synergy JQuery Accordion WebPart

La empresa Synergy ha publicado en su blog oficial algunos ejemplos de código sobre como han construido parte de la experiencia de usuario de su sitio web. Por ahí tienen un post sobre este webpart de acordeón que también pusieron a disposición para que programadores pudiéramos usar su código fuente.

image

El proceso de implementación sufre de algunas inconsistencias que decidí atacar creando una solución de Visual Studio 2010 para empaquetar todos los pre requisitos, imágenes, hojas de estilo, dependencias JQuery, tipos de contenido etc y así facilitar la utilización del WebPart de Acordeón.

https://skydrive.live.com/?cid=da602695c8d95b70&resid=DA602695C8D95B70!107&id=DA602695C8D95B70%21107#

Grabe un video donde explico que se hizo y como utilizarlo, espero que les sea de utilidad.

Configurando REST en SharePoint 2010

Como todo un programador .NET con deseo de hacer carrera en SharePoint, inquieto y con todo un futuro por delante, seguramente en algún momento te has enterado de que SharePoint 2010 cuenta con una interface REST para exoponer y consumir los datos. Accedes al portal SharePoint 2010 de tu empresa para hacer una prueba y verificar que realmente puedas consumir la información mediante REST y después de teclear /_vti_bin/listdata.svc/Anuncios la dirección Url del sitio en cuestión sucede el siguiente error:

clip_image001

Investigas un poco y encuentras que este error se refiere a que no tenemos instalado los ensamblados de ADO.NET Data Services Update for .NET Framework 3.5 SP1 codename Astoria. Decides buscar un poco más al respecto y encuentras la conferencia que presentó Pablo Castro en el Professional Developer Conference en el 2009 en los Angeles, CA. Sin duda te dices a ti mismo “Mi mismo, un año iré al PDC”. Escuchas la conferencia y quedas aún más emocionado por desarrollar sobre SharePoint usando interfaces REST y todo el poder a tu disposición para crear aplicaciones de servidor y cliente, al ser una interface REST que hace uso de las operaciones o verbos del protocolo HTTP sabes que es consumible vía JavaScript o Silverlight.

Te das a la tarea de buscar el Fix y encuentras la dirección Url de ADO.NET Data Services Update for .NET Framework 3.5 SP1 for Windows 7 and Windows Server 2008 R2 para descargarlo. Con la autorización de tus superiores solicitas que se implemente el fix sobre los servidores de la granja y una vez que esto es aprovisionado haces la prueba obteniendo la información esperada desde la dirección Url.

clip_image003

Ahora como todo un programador puedes consumir la informacion expuesta desde un proyecto Silverlight :) el cual explicare en otro post.

Reseña de El Día del Flujo de Trabajo de SharePoint 2010 para Desarrolladores

El pasado miércoles 15 de diciembre del presente año Misael Monterroca, Haaron Gonzalez, Gerardo Reyes y Fabian Imaz estuvimos celebrando el día del flujo de trabajo SharePoint 2010 para desarrolladores mediante presentaciones abiertas en línea de forma continua durante el transcurso del día que hoy ponemos a disposicion.

Gracias a los expositores y asistentes!

NOTA: Para ver la sesion en linea, solo da clic en la imagen.

Conociendo los Flujos de Trabajo Pre Construidos en SharePoint 2010
PDF
Conociendo los Flujos de Trabajo Pre Construidos en SharePoint 2010
En esta sesión conoceremos la propuesta de flujos de trabajo que SharePoint 2010 pone en la mesa y las características de cada uno de los flujos de trabajo pre construidos en el producto. Cuando y donde genera valor utilizarlo para automatizar algún proceso u operación empresarial y mejor aún cómo es posible extenderlos para personalizar algún proceso.

15 de Diciembre 2010 a las 10:00 AM Tiempo de México – Ver aqui
Construyendo Flujos de Trabajo en SharePoint 2010 utilizando SharePoint Designer 2010
PDF | Ejemplo
Construyendo Flujos de Trabajo en SharePoint 2010 utilizando SharePoint Designer 2010
En esta sesión veremos el soporte que SharePoint Designer 2010 tiene para la creación y manipulación de flujos de trabajo para SharePoint. Conozca el nuevo diseñador de flujos de trabajo, las actividades y condiciones disponibles en esta versión y como programar tus propias condiciones y acciones para SharePoint Designer 2010.

15 de Diciembre 2010 a las 11:30 AM Tiempo de México – Ver aqui
Construyendo Flujos de Trabajo en SharePoint 2010 utilizando Visio Services Construyendo Flujos de Trabajo en SharePoint 2010 utilizando Visio Services
En esta sesión veremos el valor que Visio Services aporta al mundo de los flujos de trabajo. Al fin contamos con una alternativa mucho más rica para poder mostrar de forma gráfica el estado de los flujos en ejecución y brindar opciones al usuario para consultar información contextual de una instancia en ejecución del flujo de trabajo.

15 de Diciembre 2010 a las 3:00 PM Tiempo de México – Ver aqui
Construyendo Flujos de Trabajo en SharePoint 2010 utilizando Visual Studio 2010
PDF | Ejemplo
Construyendo Flujos de Trabajo en SharePoint 2010 utilizando Visual Studio 2010
Esta es una sesión para desarrolladores .NET que construyen flujos de trabajo para SharePoint 2007 y buscan conocer cómo construir flujos de trabajo en SharePoint 2010. Exploraremos las nuevas características relacionadas con flujos dentro de SharePoint 2010 y el soporte simplificado Visual Studio 2010 aporta para facilitar su construcción y despliegue.

15 de Diciembre 2010 a las 4:30 PM Tiempo de México – Ver aqui

Siguebois

Desarrollo de WebParts de SharePoint 2010 con soporte AJAX

Microsoft no se cansa de dar el mensaje de que SharePoint 2010 es una plataforma de aplicación aparte de una plataforma de colaboración para la empresa y la web. Y el día de hoy quiero mostrar un breve y sencillo ejemplo de cómo construir un WebPart para SharePoint 2010 con soporte AJAX.

Visual Studio 2010 por fin cuenta con un nuevo ciudadano de funcionalidad, se cuenta con toda una sección y plantillas de proyectos solo para la plataforma SharePoint 2010 soportada de forma nativamente y permitiendo a los programadores curiosos que no le temen al cambio adentrarse al mundo de desarrollo de SharePoint.

Este video muestra lo simple que es construir e implementar un WebPart para SharePoint 2010 con características de AJAX. Cero líneas de código de configuración, arrastrar, soltar, doble clic y a programar es parte del paradigma con el que contamos en esta nueva versión.

Desde mi personal punto de vista no hay nada mejor que saber que sucede tras bambalinas sin embargo en este mundo donde la economía y las empresas constantemente cambian y por ende las herramientas que simplifican las cosas para solamente dedicarnos a lo que nos compete desde el punto de vista de negocio y no necesariamente a aquellas cosas de configuración que al negocio prácticamente le es indiferente.

Aqui el video con mas resolucion:

LINQ to DataSet básico en SharePoint

Resulta que hoy tuve que realizar una serie de actividades relacionadas con la manipulación y filtrado de datos que residen en SharePoint y para mejorar mi experiencia como programador recurrí al uso de LINQ to DataSet.

He aquí un ejemplo que lee la información de todos los usuarios de mi colección de sitios:

using(SPSite site = new SPSite("http://urldemisitio"))
{
        SPWeb rootWeb = site.RootWeb;
        DataTable dt = rootWeb.SiteUserInfoList.Items.GetDataTable(); // retorna un datatable de ADO.NET

                // usando el metodo GetDataTable de la coleccion Items puedo trabjar con el 
// mediante dt.AsEnumerable()


                var users = from user in dt.AsEnumerable()
                            where user.Field<string>("ContentType").Equals("Person") 
                            select new { 
                                ID = user.Field<int>("ID"), 
                                FirstName = user.Field<string>("FirstName"), 
                                LastName = user.Field<string>("LastName"),
                                Title = user.Field<string>("Title"),
                                UserName = user.Field<string>("UserName"),
                                Mail = user.Field<string>("Email"),
                                Department = user.Field<string>("Department"),
                                JobTitle = user.Field<string>("JobTitle"),
                                Office = user.Field<string>("Office"),
                                WorkPhone = user.Field<string>("WorkPhone")
                                
                            };

// aqui podemos trabajar con nuestra coleccion users

}


Es importante puntualizar que este se debe a .NET Framework 3.5, en otras palabras para poder soportar este 
codigo dentro de nuestro server debemos de tener instalada dicha version.