|
|
|
| CES
Microsoft |

|

| |
|
| Editar en explorador | /_layouts/images/icxddoc.gif | /cesdigital/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Editar en explorador | /_layouts/images/icxddoc.gif | /cesdigital/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Editar en explorador | /_layouts/images/icxddoc.gif | /cesdigital/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Editar en explorador | /_layouts/images/icxddoc.gif | /cesdigital/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Editar en explorador | /_layouts/images/icxddoc.gif | /cesdigital/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | Ver en el Explorador Web | /_layouts/images/ichtmxls.gif | /cesdigital/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | Ver en el Explorador Web | /_layouts/images/ichtmxls.gif | /cesdigital/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Instantánea en Excel | /_layouts/images/ewr134.gif | /cesdigital/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Instantánea en Excel | /_layouts/images/ewr134.gif | /cesdigital/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
| Kit de Accesibilidad para SharePoint 2007 | 25/04/2008 13:42 | CES Microsoft | Desarrollo | sharepoint, accesibilidad |
Accesibilidad para todos, es el nuevo objetivo que se ha planteado Microsoft, para su última joya SharePoint 2007. Para ello ha contado con la colaboración de HiSoftware.
Este kit de accesibilidad (Accesibility Kit for SharePoint, o AKS) proporciona una accesibilidad limitada a templates, master pages, controles y web parts, todo ello acompañado de documentación técnica que permite a desarrolladores y diseñadores proveer a Microsoft Office SharePoint Server 2007 (MOSS) y a Windows SharePoint Services 3.0 (WSS) de una base para habilitar sitios web y aplicaciones para personas con discapacidades, especialmente aquellas que están relacionadas con la visión.
Durante el último Microsoft TechEd (del 5 a 9 de noviembre de 2007 en Barcelona), Ben Robb (MVP de MOSS) y Rob Yonaitis (CTO de HiSoftware), adelantaron el 6 de noviembre lo que hoy ya es la versión 1.0 de este AKS, así como lo que serán las futuras versiones del producto. Para una primera fase se proveerán de los elementos anteriormente citados a los sitios web y sitios de publicación de Internet e Intranet. En una segunda fase se agregarán también el resto de los sitios de colaboración (Wikis y Blogs) y los sitios de equipo.
El kit AKS se encuentra disponible en la siguiente dirección: http://aks.hisoftware.com/akslicense.html
También se puede encontrar información relevante en las siguientes direcciones:
• AKS Portal http://aks.hisoftware.com
• Página de Accesibilidad de Microsoft http://www.microsoft.com/enable
• Blog del Equipo de SharePoint http://blogs.msdn.com/sharepoint
• Iniciativa de Accesibilidad Web del W3C http://www.w3.org/WAI
• Vischeck http://www.vischeck.com/vischeck
• Blog de Ben Robb http://www.sharepointblogs.com/benrobb
• Comunidades Técnicas, Webcasts, Blogs, Chats y Grupos de Usuarios http://www.microsoft.com/communities/default.mspx
• Microsoft Learning y Certificación http://www.microsoft.com/learning/default.mspx
• Microsoft Developer Network (MSDN) y TechNet http://microsoft.com/msdn http://microsoft.com/technet
• Trial Software y Virtual Labs http://www.microsoft.com/technet/downloads/trials/default.mspx | | Microsoft y el 2008 | 26/11/2008 14:01 | CES Microsoft | Arquitectura | Windows Server 2008, Visual Studio 2008, SQLServer 2008 |
Parece que 2008 será otro año dulce para la casa de Redmond porque en este año que acaba de empezar tres de sus productos estrella van a tener algo más que un lavado de cara:
· Microsoft Server 2008: la esperada nueva versión del sistema operativo para servidores.
· Microsoft VisualStudio 2008: nueva versión de la herramienta de desarrollo por excelencia de Microsoft, con soporte para el .NET framework 3.5
· Microsoft SQLServer 2008: el servidor de base de datos de Microsoft que consolida su madurez.
La presentación oficial de estos productos por parte de Microsoft Ibérica se realizará los próximos días 26 y 27 de Febrero (puede registrarse para dicho evento en el siguiente enlace), aunque la disponibilidad real de alguno de ellos se retrase un poco más (en concreto SQLServer2008 estará disponible a principios de verano).
En próximos artículos navegaremos en más profundidad en cada uno de estos productos. Mientras revisemos algunas de sus principales características.
Microsoft Windows Server 2008
Windows Server 2008 nace como la implementación del sistema operativo para servidores de Microsoft sobre el núcleo usado en Windows Vista, con un mejor rendimiento al aprovechar las ventajas que éste aporta en la gestión avanzada del hardware. Según la visión de Microsoft, Windows Server 2008 aporta:
- Virtualización
o A nivel servidor mediante el uso de tecnología Hyper-V para conseguir una virtualización real de dispositivos hardware entre máquinas virtuales, no una emulación como hasta ahora.
o Y añadiendo otros métodos de virtualización mediante el soporte de “Terminal Services Remote App”, un modo de virtualizar una aplicación similar al de productos como Citrix Server.
- Web:
o Con el nuevo Internet Information Server 7, que se convierte en la plataforma web robusta de Microsoft. Este IIS se ha rediseñado con el objetivo de soportar ASP.Net y el .Net Framework 3.0 de manera nativa, así como contar con interoperabilidad con otros lenguajes web no-Microsoft (soportando aplicaciones PHP). Es más seguro al contar con una arquitectura modular (aprox. 40 módulos, que se cargan bajo demanda).
o Los cambios en Windows Server 2008 se basan en una arquitectura de servidores orientada a los SOA: hablamos ahora de tener lo mínimo indispensable en cada servidor para que haga la tarea que le hemos asignado, nada más (al menos, nada más sin control pero mucho más eficientemente).
- Seguridad:
o Con el uso de Network Access Protection, un mecanismo de control fiable para garantizar la “higiene” de todos los dispositivos a los que permitimos acceso a una determinada red.
o Teniendo a nuestra disposición un nuevo modo como “Read-Only” Domain Controller, que imposibilita determinados ataques actuales a los controladores de dominio que permiten a nuestro atacante crear sus propios accesos o, peor aún, borrar nuestro sistema de credenciales.
- Base sólida:
o Windows Server 2008 se ha desarrollado sobre la Microsoft Management Console 3.0 como herramienta de gestión integral del sistema y sobre Microsoft Powershell como lenguaje de gestión del mismo, que nos permite ejecutar comandos de manera dinámica, de modo similar a sistemas operativos como Unix.
o Robustez mejorada con una gestión de recursos eficiente y fiable, así como la posibilidad de instalar un servidor como “Server Core”, un modo de trabajo básico que instala los componentes mínimos indispensables para su funcionamiento reduciendo así el área expuesta a ataques.
Microsoft VisualStudio 2008
La herramienta de desarrollo de Microsoft tiene un gran número de mejoras en esta versión, de las que podemos destacar algunas:
· Se puede de una manera muy fácil crear aplicaciones sobre distintos Frameworks de desarrollo: 2.0, 3.0, 3.5… y lo que venga.
· Nuevas características del compilador principalmente soporte a Language INtegrated Query (LINQ): tipos anónimos, extensiones de métodos, expresiones lambda, métodos parciales, etc.
· Facilita los desarrollos Web mediante:
o Soporte de ASP.NET 3.5 con librerías y plantillas AJAX, soporte de ListView, DataPager, LinqDataSource
o Mejoras en el IDE de VisualStudio incluyendo el mismo interfaz de desarrollo HTML que el usado en Expression Web y soporte de IntelliSense y Debug de código JavaScript.
· Facilidades de desarrollo para dispositivos móviles con la inclusión del .NET Compact Framework, emulador de dispositivos 3.0, LINQ para móviles, Windows Communications Framework, compresión, certificados en el lado cliente, etc.
· Desarrollo de aplicaciones Windows con soporte directo para el navegador Firefox, mejor soporte de Windows Presentation Foundation incluyendo un diseñador visual dentro del propio Visual Studio, más flexibilidad para el uso y desarrollo de servicios incluyendo más capacidades de uso de Windows Communication Foundation y Workflow Foundation, y más y más y más…
· Soporte para el desarrollo de Office Business Applications 2003 y 2007
En definitiva, más y potentes “pistolas” para la herramienta de desarrollo número 1. Su capacidad de interacción con WPF y WCF dará lugar a una nueva generación de aplicaciones y, con LINQ embebido, su desarrollo será más sencillo.
Microsoft SQLServer 2008
SQLServer 2008 va a ser el último de estos elementos en ver la luz, pero los cambios que aporta hacen que merezca la pena esperar. Estos son los principales:
-
Modelado de Entidades con ADO.NET que posibilita el trabajo con Modelos de Entidades de Datos (Entity Data Model, EDM), aportando una mayor flexibilidad a nuestro trabajo mediante una capa de abstracción lógica de la información. Por ejemplo, definimos una entidad “Cliente” que mapeamos a una tabla en una base de datos concreta, de manera que sus miembros son las columnas de esta tabla. Si el día de mañana deseamos cambiar uno de estos para que tome su información, por ejemplo de una vista sobre otra tabla en otra base de datos, no tendremos que cambiar más que su definición en el EDM y ADO.NET se encargará de todo el trabajo necesario por nosotros.
-
El uso de LINQ como lenguaje de acceso a datos, lo que permite un modo más natural e intuitivo para los desarrolladores de escribir las consultas a las bases de datos.

-
Nuevos tipos de datos soportados de manera nativa por el gestor de base de datos que amplían y optimizan la gestión de información de datos relacionales, documentos XML, archivos de datos, y datos geo-espaciales. | | Modelado de superficies 3D en tiempo real | 26/11/2008 14:01 | CES Microsoft | Desarrollo | mallas 3D |
Actualmente la modelización virtual está en auge y cada vez es más frecuente el uso de herramientas de representación 3D en diversos sectores. Algunas de las aplicaciones que más han avanzado en esta dirección son, por ejemplo, la visualización científica y la simulación de entornos en tiempo real. En nuestro caso, trataremos el modelado de superficies terrestres en tiempo real.
Cuando realizamos una aplicación de este tipo, lo primero que tenemos que tener en cuenta es cómo vamos a obtener los datos de nuestra superficie. Para ello, generalmente, se suele utilizar algún tipo de Sistema de Información Geográfica (SIG) ya que, además de facilitar la obtención, gestión y representación de datos espaciales, incorpora herramientas para la generación de Modelos Digitales Terrestres (MDT). Los MDT son modelos que representan atributos de una superficie como pueden ser la altitud, densidad de superficies, relieve del terreno, etc.
De todos los MDT posibles, el que nos interesa en este caso es el Modelo Digital de Elevación (MDE). Un MDE es una estructura numérica de datos que representa la distribución espacial de la altitud de una superficie terrestre. En ella, cada punto viene definido por unas coordenadas geográficas X e Y, y por un valor de elevación Z.
Existen, principalmente, 2 formas básicas de representar estos modelos de elevación:
§ Formato vectorial: se basa en la definición de entidades y objetos geométricos mediante las coordenadas de sus nodos y vértices.
§ Formato Raster: se basa en las localizaciones espaciales sobre una malla regular de puntos a los cuales se le asigna el valor de elevación.
A partir de estos formatos han surgido nuevas estructuras de organización de datos que, por lo general, combinan características de ambos y presentan mejores prestaciones. Algunas de las más utilizadas son: la red irregular de triángulos (TIN), las mallas regulares y las matrices jerárquicas (bintrees, quadtrees ...).
Una vez que ya tengamos claro cómo obtendremos toda la información necesaria, pasaremos a su representación e implementación 3D mediante un motor gráfico. La elección de dicho motor dependerá, en cada caso, de la portabilidad del mismo, del objetivo de nuestra aplicación y del usuario final al que va dirigido.
Además de todo esto, deberemos tener en cuenta que para dar más realismo a nuestra aplicación, será necesario incorporar los accidentes orográficos, construcciones, iluminación y condiciones climatológicas del entorno.
Se puede encontrar más información relacionada con el tema en:
· Artículos. Pasado y Futuro de los Modelos Digitales del Terreno
http://www.cartesia.org/article.php?sid=164
· Aplicaciones
http://www.canariasvirtual.es/informe10.htm
· Definiciones
http://es.wikipedia.org/wiki/Modelo_Digital_del_Terreno
http://www.softree-espanol.com/products/dtm.html | | Xna Game Studio 2.0.El futuro de las aplicaciones 3D | 25/04/2008 13:34 | CES Microsoft | Desarrollo | xna, juegos |
Hace apenas dos meses, Microsoft lanzó la versión 2.0 del XNA Framework. Esta se encuentra integrada en el IDE XNA Game Studio 2.0, y se puede ejecutar desde cualquier equipo que cuente con alguna versión de Visual Studio 2005, tanto estándar como profesional. Sin embargo, todavía tendremos que esperar hasta que pueda ser implementada en Visual Studio 2008.

XNA Game Studio 2.0 aporta interesantes mejoras con respecto a su antecesor y viene dispuesto a romper moldes en el entorno de desarrollo de videojuegos y simulaciones 3D. Introduce novedades tanto a nivel de plataforma como del propio Framework, que se pueden ver en el XNA Team Blog. Todo esto junto con la estructura de programación que presenta, ha sido determinante para que esta sea una de las plataformas más utilizadas en el desarrollo de aplicaciones 3D.
La estructura básica que sigue cualquier proyecto XNA está claramente dividida en tres partes:
1. Inicialización
2. Actualización (update)
3. Dibujado (draw)
En la parte de Inicialización lo que hacemos es:
- Declarar los objetos y variables que vamos a utilizar.
- Inicializar dichos objetos y variables, los componentes y el constructor del juego.
- Cargar y gestionar todos los recursos gráficos (texturas, modelos…)
En la Actualización se lleva a cabo toda la lógica de la aplicación. Y finalmente en el Dibujado es donde, como su propio nombre indica, se lleva a cabo la visualización en pantalla de toda la estructura 3D. Esta forma de estructurar el programa ayuda a que el desarrollo de las aplicaciones sea más dinámico, ágil y sencillo, y además nos permite reutilizar el cuerpo principal para los distintos componentes de nuestra aplicación.
La mejor forma de ver todo esto es a través de un ejemplo sencillo, en el que cargaremos un modelo 3D y lo veremos en pantalla. Pantalla que podremos cerrar pulsando la tecla Esc. Para ello abrimos Visual Studio, seleccionamos Archivo/nuevo Proyecto, y elegimos una plantilla de tipo Windows Game(2.0). El sistema crea un proyecto con 2 archivos denominados Program.cs y Game.cs. A nosotros el que nos interesa es el Game.cs que es el que contiene la clase MiGame y donde escribiremos el código que inicializa nuestro dispositivo y dónde almacenamos el contenido:
public MiGame()
{
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferHeight = 600;
graphics.PreferredBackBufferWidth = 800;
graphics.IsFullScreen = false;
Content.RootDirectory = "Content";
}
Para poder añadir nuestro modelo 3D a la escena, primero debemos añadirlo en la carpeta “Content”, que es nuestra carpeta raíz del ContentManager.

Una vez que lo añadimos, lo podremos cargar en nuestro código:
protected override void LoadContent()
{
mAvioneta = this.Content.Load<Model>("heli");
}//heli es el Asset Name
Una vez tenemos nuestro modelo cargado, pasamos a dibujarlo. Esto lo hacemos através del método Draw que se encarga de limpiar el buffer del dibujo y de pintar el fotograma actual.
protected override void Draw(GameTime gameTime)
{
//Color de fondo graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
foreach (ModelMesh modelo in mAvioneta.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.World = Matrix.Identity;
effect.View = Matrix.CreateLookAt(new Vector3(15, 0, 10), Vector3.Zero, Vector3.Up);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), 1.3f, 1.0f, 10000.0f);
}
modelo.Draw();
}
base.Draw(gameTime); }
Como dentro de la clase Model puede haber más de una malla (modelo), debemos recorrerlas todas. Estos modelos tienen asignado por defecto un shader que actúa como sustituto del Fixed Pipeline, hasta que nosotros asignemos otro diferente. Dicho shader se denomina BasicEffect y proporciona cálculos estándar de iluminación, materiales, texturas y transformación de geometría.
A la hora de configurar el shader debemos tener en cuenta por un lado la iluminación, que en este caso es definida por defecto con unos parámetros comunes a través de EnableDefaultLighting(). Y Por otro lado, debemos indicar al shader como transformar la geometría de nuestro objeto. Para ello se utizan las matrices World(representa el objeto), View(posiciona la camara), Projection(proyecta el objeto 3D a un plano 2D).
Por último en el método Update añadimos el siguiente código, que nos permite finalizar el programa limpiamente:
protected override void Update(GameTime gameTime)
{
mEstado = Keyboard.GetState();
if (mEstado.IsKeyDown(Keys.Escape))
{
this.Exit();
}
base.Update(gameTime);
}
El resultado final de esta sencilla aplicación sería este:

| | Presentación del Visual Studio 2008 | 25/04/2008 13:44 | CES Microsoft | Desarrollo | Visual Studio |
Tras tres años de trabajar y complementar Visual Studio 2005, ya tenemos al alcance de la mano su sustituto el nuevo Visual Studio 2008. Para darle la bienvenida como se merece se ha llevado a cabo un evento muy especial en Madrid, más concretamente en el Palacio Municipal de Congresos, los días 26 y 27 de Febrero. En este acto, lleno de sesiones técnicas y presentaciones de productos y herramientas a cargo de Microsoft y sus principales partners, fue presentado en sociedad junto con sus nuevos hermanos: Microsoft Windows Server 2008 y Microsoft SQL Server 2008. Tras ello le va a seguir un pequeño Tour por España, para darse a conocer en las principales ciudades:
|
11 de Marzo |
Barcelona |
|
13 de Marzo |
Valencia |
|
25 de Marzo |
Sevilla |
|
27 de Marzo |
Bilbao |
|
1 de Abril |
A Coruña |
Al hilo de este acontecimiento, tuvimos nuestra propia celebración en los Centros de Excelencia Software con una serie de cursos, que fueron magistralmente impartidos por Juan Carlos González Martín, arquitecto de soluciones del CIIN.
El nuevo Visual Studio 2008 no sólo es una paquetización de los complementos para Visual Studio que han ido saliendo desde la aparición de 2005, sino que toma como su núcleo central de desarrollo el nuevo .NET Framework 3.5, lo que supone unas mejoras significativas para la biblioteca básica de clases, Windows Workflow Foundation, Windows Communication Foundation, Windows Presentation Foundation y Windows CardSpace.
Como mejoras tenemos algunos nuevos espacios de nombres básicos:
· System.AddIn.Contract
· System.AddIn.Hosting
· System.AddIn.Pipeline; proveen de la base para la comunicación entre componentes
· System.Diagnostics.Eventing
· System.Diagnostics.Eventing.Reader
· System.Diagnostics.PerformanceData; estos tres orientados al diagnóstico de aplicaciones
· System.IO.Pipes, destinado a la comunicación entre procesos
· System.Linq
· System.Linq.Expressions; proveen las clases e interfaces para soportar las peticiones de LINQ
Dentro de la gestión de datos, podemos utilizar LINQ mediante:
· System.Data.Linq
· System.Data.Linq.Mapping
· System.XML.Linq
Para Comunicaciones y Flujos de trabajo tenemos:
· System.Net.PeertoPeer
· System.Net.PeertoPeer.Collaboration
· System.ServiceModel.Persistence
· System.ServiceModel.Syndication
· System.ServiceModel.Web
Y destinados a ASP.NET:
· System.Web.ApplicationServices
· System.Web.ClientServices
· System.Web.ClientServices.Providers
Pero si queremos una lista más detallada, podemos verla en el siguiente Poster.
Podremos no obstante seguir programando contra los .NET Frameworks anteriores si es preciso, mediante un sencillo selector disponible en la pantalla de trabajo.


Los nuevos miembros del Visual Studio 2008 son VS 2008 Standard Edition, VS 2008 Professional Edition y por su puesto la versión de libre distribución VS 2008 Express Edition. Dentro de la rama más corporativa, encontraremos a VS Team System 2008 Team Suite, VS Team System 2008 Team Foundation Server y el VS Team System 2008 Test Load Agent. Todo ello complementado con la biblioteca de MSDN para Visual Studio 2008.
Podremos encontrar más información relevante en las siguientes direcciones:
• Página del lanzamiento http://www.microsoft.com/spain/lanzamiento2008/
• Lanzamiento Visual Studio 2008 http://www.microsoft.com/spanish/msdn/spain/vs2008
• Blog de Juan Carlos González http://geeks.ms/blogs/ciin/
• Visual Studio 2008 Express Edition http://www.microsoft.com/express/download/
| | Prepare sus aplicaciones para Windows Server 2008 | 25/04/2008 13:44 | CES Microsoft | Desarrollo | Windows Server 2008 |
Windows Server 2008 ya ha llegado. ¡Al fin! Nuestros Administradores de Sistemas van a ser más felices, nuestro hardware por fin va a ser utilizado al 100%, nuestras aplicaciones van a ser mejores… ¿o no? Uno de los problemas que todo cambio trae consigo es su propia naturaleza: si cambiamos, ¿cómo saber si todo irá bien?
Microsoft ha experimentado este problema con todos los cambios “mayores” de producto que ha llevado a cabo. Y como son muchos, algo ha aprendido al respecto. Así que esta vez pretenden ayudar a todos los desarrolladores de software a estar preparados para Windows Server 2008 mediante su iniciativa InnovateOn Windows Server 2008 (http://www.innovateon.com/product_server2008.aspx) El objetivo de la misma es dotar a las empresas desarrolladoras de software de la información y herramientas necesarias para validar que sus desarrollos se ejecutarán sin problemas sobre el nuevo Sistema Operativo. En dicha página dispondremos guías paso a paso y recursos de desarrollo para que nuestras aplicaciones cumplan con las denominaciones “Certified for Windows Server 2008” y “Works with Windows Server 2008”, que son las preferidas por Microsoft y que nos permitirán disponer de ventajas en marketing, uso de los logos oficiales y, en el caso de la primera, obtener 50 Microsoft Partner Points para nuestra empresa. Cabe señalar que ambas certificaciones tienen un coste.

Como alternativa gratuita y básica, aunque sin otros beneficios, tenemos la denominación “Ready! for Windows Server 2008”. Esta nos puede servir como prueba de concepto de los pasos requeridos para la validación de nuestras aplicaciones y paso previo antes de afrontar las certificaciones “mayores”.
Veamos ahora de manera rápida los pasos que habremos de realizar para efectuar una validación de nuestra aplicación con la herramienta “Works with” de Microsoft. Esta herramienta nos permite verificar personalmente la instalación y funcionamiento de nuestra solución en Windows Server 2008 y sus posibles componentes cliente sobre Windows Vista, así como empaquetar los resultados obtenidos para que una compañía oficial de Test los revise si es preciso. Eso sí, realizar esta comprobación precisará unas cuantas horas para realizarla.
Tras lanzar la aplicación pasamos unas pantallas iniciales informativas y seleccionamos la opción de crear un nuevo test: Hemos de introducir la información requerida en cada paso, identificando nuestra solución, en este caso la parte cliente:

Tras comprobar los prerrequisitos y añadir los programas que componen nuestra solución, el programa lleva a cabo una inspección del mismo (es preciso que la solución no esté previamente instalada en el sistema para que el proceso tenga éxito), tras la que nos solicitará que efectuemos la instalación del producto y la configuración que sea necesaria (fase en la que se monitoriza la instalación). Hecho esto marcamos en “Works with” que hemos terminado esta tarea.

La aplicación revisará entonces los cambios ocurridos, tras lo que nos presenta los resultados de la evaluación en diversas pantallas:

· Ejecutables firmados
· Verificación de ficheros
· Verificación de drivers
A continuación el programa nos solicitará que reiniciemos la máquina si es preciso, y ejecutemos la funcionalidad primaria de la aplicación para su comprobación. En este paso hemos de asegurarnos de probar a conciencia nuestra aplicación.
Luego desinstalaremos la aplicación, paso que también monitoriza “Works with” (hay que recordar que estamos evaluando el funcionamiento global de la aplicación, desde su instalación a su retirada).
Finalmente rellanamos un Cuestionario que nos pregunta sobre las tareas realizadas y los resultados de la aplicación durante el test efectuado, y nos genera el informe de resultados.
Este informe será el que nos valga para evaluar la adecuación de nuestra solución a la plataforma en cuestión y será el que enviemos al sitio “Windows Quality Online Services (Winqal)” https://winqual.microsoft.com/ para obtener la certificación (y el logo) “Works with” oficial de Microsoft para nuestra aplicación.
| | Hablemos del último, SQL Server™ 2008 | 25/04/2008 13:55 | CES Microsoft | Arquitectura | SQL Server |
Esta vez vamos a hablar del último producto de Microsoft que verá la luz este año, SQL Server™ 2008, esperado para finales de Q3 o lo que es lo mismo quizá a final de Septiembre esté disponible. Actualmente, podemos descargar desde Microsoft una versión CTP (Community Technology Preview) que dura 180 días mediante el siguiente enlace http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx
SQL Server™ 2008 cumple con la visión de Microsoft sobre el futuro de la administración y gestión de datos que predice un incremento significativo tanto en el volumen de los datos gestionados (facilitado por el descenso en precio de los dispositivos de almacenamiento, reduciendo el “coste por mega”) como en su tipo (datos geoespaciales, para dispositivos móviles, RFID, video e imagen, etc.).

Según Microsoft, los puntos fuertes de SQL Server™ 2008 son:
Confiable
Encriptación de datos transparente: con esta versión podemos encriptar toda la base de datos, desde los ficheros de datos hasta los backups y los logs, lo que nos permitirá cumplir con las restricciones de seguridad más exigentes.
Soporte de claves de acceso externas, permitiendo el uso de herramientas de terceros así como de soluciones hardware.
Auditoría mejorada, que incluye hasta la auditoría de consultas SELECT sobre los datos.
Disponemos de soporte para añadir CPUs “en caliente”, evitando impactar en el negocio debido a paradas provocadas por necesidades de expansión.
Y mediante las mejoras en el mirroring de la base de datos como son:
-
Reparación automática de páginas, de errores 823 y 824 en las páginas de datos
-
Mejor rendimiento, mediante el uso de compresión que minimiza el consumo de red
-
Más información de análisis sobre la operación de mirroring, que permite a los DBAs analizar más a fondo estas tareas y optimizar su funcionamiento.
Recolección de datos de rendimiento mejorada, con un repositorio de esta información centralizado y nuevas herramientas de informes y monitorización del rendimiento.
Eventos extendidos, que incluyen la posibilidad de exportarlos al ETW (Event Tracing for Windows) del Sistema Operativo, de manera que se puede examinar de modo más fácil la correlación entre los eventos de BBDD y los del S.O.
Compresión de backup, reduciendo el consumo de I/O y espacio en disco requerido, lo que hace que esta tarea sea significativamente más rápida.
Compresión de datos, que igualmente ofrece mejoras en rendimiento en operaciones de I/O lo que es notable en tareas de Data Warehousing.
Herramienta de gestión de recursos que permite a los DBAs definir los límites de recursos y prioridades de acuerdo a diferentes cargas de trabajo, lo que logra que la experiencia de usuario sea consistente (por ejemplo, evitamos que la ejecución de consultas “pesadas” para informes mensuales coincida en tiempo de ejecución con las consultas on line de los usuarios y ralentice estas últimas).
“Congelación” de planes de ejecución, permitiendo que los planes de ejecución buenos conocidos sean estables en el tiempo.
Productiva
Mediante una mejor integración con el .NET Framework y Visual Studio Team System permite el desarrollo de aplicaciones más potentes y eficientes.
Gestión basada en políticas, mediante el “Policy Framework” que permite a través del SQL Server™ Management Studio definir políticas de uso y gestión de todas las entidades del servidor, como instancias, bases de datos, etc.

Instalación simplificada, que permite a los partners proporcionar configuraciones de instalación recomendadas.
Desarrollo simplificado, a través de librerías como LINQ, ADO.NET Entity Framework, integración del Common Language Runtime (CLR) con los objetos de servicio ADO.NET

Y mejoras adicionales en el Service Broker y Transact-SQL, como nuevos tipos de datos DATE/TIME, herramientas de diagnóstico de Service Broker, etc.
Soporte de dispositivos ocasionalmente conectados, facilitando el desarrollo de aplicaciones para usuarios móviles tal y como demanda el mercado actual.
Nuevos tipos de datos no sólo relacionales, como datos jerárquicos para estructuras arbóreas, tipo de datos “archivo” para acceso vía BBDD a ficheros de datos, columnas “sparse” para datos no muy frecuentes en tablas, tipos de datos definibles por el usuario sin límite a 8000 bytes, información geográfica…
Inteligente
SQL Server™ 2008 se posiciona como una BBDD con grandes capacidades para Business Intelligence “out of the box”, lo que facilita el acceso de los negocios a aplicaciones de BI de gran demanda en la actualidad.
Compresión de datos, para permitir mayores volúmenes en menor espacio de disco con una mejor gestión y menores tiempos de I/O.
Compresión de backups, minimizando su impacto en el sistema de gestión de BBDD.
Gestión en paralelo de tablas particionadas, para la gestión eficiente de grandes volúmenes de datos.
Optimización de las consultas STAR JOIN, típicas de los sistemas de BI.
El Gestor de Recursos mencionado anteriormente.
Escalabilidad mejorara en SQL Server™ Integration Services, y búsquedas persistentes que garantizan la consistencia de los datos analizados incluso con grandes volúmenes de información.
Mejoras en la gestión de Reports, mediante:

-
Mejoras en la visualización de informes mediante nuevos componentes.
-
Integración de los informes directamente en Word, y mejoras en su visualización en Excel.
-
Y, cómo no, integración con Microsoft Sharepoint.
En definitiva, y según Microsoft, SQL Server™ 2008 representa un producto significativo, que proporciona muchas características nuevas y mejoras clave, convirtiéndose en la versión más robusta y completa de SQL Server
La impresión general es que Microsoft parece haber corregido las carencias más notables de su versión anterior, manteniendo su facilidad y flexibilidad de uso, a la vez que ha aportado unas nuevas características a su gestor de base de datos que pueden convertirlo en una alternativa seria y de calidad dentro del ámbito de la empresa media-grande. | | Uso de UML en aplicaciones 3D | 26/11/2008 14:01 | CES Microsoft | Desarrollo | UML, OMG |
Algunas estadísticas sobre ingeniería de software, revelan datos preocupantes. Entre el 30% y el 80% de los proyectos de software nunca se terminan o se terminan fuera del tiempo establecido. Esto se debe en muchos casos a la falta de recursos, de tecnología y de conocimientos específicos del desarrollador. Pero también, en gran medida, a una incorrecta planificación.
Este problema se podría evitar si antes de comenzar a desarrollar código, realizáramos un análisis de los recursos y estructuras necesarias para implementar nuestra aplicación. Actualmente una de las especificaciones más utilizadas con este fin, es UML (Unified Modeling Lenguage).

UML, apoyado por OMG (Object Management Group), nació con el objetivo de mejorar las especificaciones ya existentes sobre programación orientada a objetos (métodos de Booch y Rumbaugh, Jacobson) y de unificarlas bajo una misma herramienta que nos permitiera modelar y construir la estructura de nuestro sistema, desde distintos puntos de vista. Para lo que se ayuda de diferentes diagramas. En concreto, UML 2.0, utiliza 13 diagramas fundamentales divididos en 2 grupos:
· Los Diagramas de Estructura que se centran en los objetos que deben existir en el sistema modelado y que se dividen en:
o diagrama de clases
o diagrama de componentes
o diagrama de objetos
o diagrama de estructura
o diagrama de despliegue
o diagrama de paquetes
· Los Diagramas de Comportamiento que se encargan de las acciones que debe realizar el sistema y del flujo de datos entre los distintos objetos, y que se dividen en:
o diagrama de actividades
o diagrama de casos de uso
o diagrama de estados
o diagrama de secuencia
o diagrama de colaboración
o diagrama de tiempos
o diagrama de vista de interacción
Un pequeño ejemplo de su uso, se podría ver a través de una aplicación 3D, como la vista en artículos anteriores. Por ejemplo pensemos en un escenario básico, en el que queremos ver a una persona con movimiento en un paisaje exterior.
Nuestro escenario principal contendrá (diagrama de estructura):
Un objeto cámara, otro Iluminación y otro elementos del entorno. Cada uno de los cuales se definirá (diagrama de clase) con una serie de atributos y métodos. Dentro del objeto elementos del entorno, tendremos dos tipos de objetos: animados y estáticos. Por ejemplo si creamos un objeto persona, este heredará (diagrama de clase) de la clase Animados, ya que todos los elementos animados cuentan con unos métodos comunes.
Para mover nuestros objetos animados contaremos con una serie de eventos (diagrama de casos de uso y diagramas de colaboración) relacionados con la entrada por teclado.
Otro tipo de relaciones que se darán son las de componentes (diagrama de componentes). Este caso se produce cuando accedemos, desde nuestro escenario, a bibliotecas. En nuestra aplicación podríamos acceder, por ejemplo, a bibliotecas de efectos meteorológicos o de sonidos ambientales.
A grandes rasgos, estos serían los principales diagramas a desarrollar, pero si entráramos en detalle, veríamos que probablemente son más los diagramas a usar. Para profundizar más sobre el tema existen numerosos ejemplos en la red.
http://usuarios.lycos.es/oopere/uml.htm
http://www.hipertexto.info/documentos/uml.htm
http://www.clickear.com/manuales/uml | | Microsoft Office Live Small Business (1ª Parte) | 25/04/2008 13:48 | CES Microsoft | Arquitectura | Office Live |
Desde hace unos días podemos disfrutar de la versión beta de esta nueva herramienta de Microsoft, la cual se encuadra dentro de la nueva estrategia de la compañía para su posicionamiento en aplicaciones on-line. La nueva suite se encuentra bajo el nombre de Microsoft Office Live Small Business. Mi amigo Juan Carlos Gonzalez del Centro de Innovación en Integración de Cantabria, me recomendó analizarla y así lo he hecho. Debo decir que tiene muy buen aspecto y sigue la dinámica de usabilidad sencilla que caracteriza a los productos de Microsoft. Más concretamente, se basa en tecnología ASP.NET y como característica más destacable sus espacios de trabajo usan la tecnología de SharePoint. Esto no supondría ninguna novedad, salvo por el hecho de que está herramienta supone una mejora para la PYME puesto que integra todos los servicios que puede llegar a necesitar una empresa de estas características en una única solución.
Si queremos probar este nuevo servicio, lo primero que debemos de hacer es entrar en http://smallbusiness.officelive.com/ donde llegaremos a esta pantalla:

Deberemos registrarnos en Microsoft Office Live si no lo estamos ya, y una vez nos hemos registrado llegamos a la pantalla que nos da la bienvenida:

Como se puede ver en la página principal, la cantidad de características que incluye esta suite es importante. Si exploramos con detenimiento la página de bienvenida, veremos una serie de opciones interesantes.
La primera nos posibilita el obtener nuestro propio dominio de internet (“Get a Web address”), si pulsamos el enlace nos pedirá que volvamos a meter nuestra contraseña de la cuenta asociada al sitio y nos redireccionará a la siguiente página:

Donde se nos da la posibilidad de obtener nuestro propio dominio, junto con la extensión deseada, del cual, se nos facilitara gratuitamente el primer año.
Si seleccionamos la segunda opción (“Create a business web site”) se nos ofrece la posibilidad de crear un sitio web para nuestro negocio. Llegaremos a la siguiente pantalla:

En donde las principales opciones son la obtención de un nombre para el dominio, la herramienta de diseño para el sitio Web y una opción para hacer que nuestro sitio web resulte más atractivo. Si seleccionamos el editor para nuestro sitio web, se nos abrirá una herramienta de diseño de aplicaciones web desde nuestro mismo navegador:

Esta plantilla recuerda claramente a las plantillas que usa SharePoint, con su barra de acceso rápido, sus zonas y su motor de búsquedas. Las opciones del editor del sitio web, dan como para otro artículo (posiblemente lo escriba), pero podemos ver que podemos editar tanto contenido como apariencia de nuestro sitio, lo cual le otorga a este editor un juego de posibilidades importantes.
Daremos por bueno el diseño que viene por defecto de nuestro sitio y pasaremos analizar más opciones que nos proporciona, por ejemplo si vamos a la parte inferior de la página veremos que se parece mucho a los menús de SharePoint, debido a sus opciones:


Estos menús nos permiten recuperar versiones anteriores, administrar el sitio, activar soluciones avanzadas de diseño web, así como instalar soluciones.
A la izquierda de la página tenemos la barra de acceso rápido, en la cual podemos acceder a sitios en los que guardar nuestras imágenes, así como nuestros documentos y nuestros estilos personales para la página. Una de las partes más importantes de la página es la sección de informes, que nos permite conocer en todo momento el uso de nuestra web, elemento a elemento, así como descargarnos a nuestro PC las estadísticas de un periodo de tiempo que deseemos:

Volviendo a la página de inicio, vemos que también podemos administrar cuentas de correo, bajo nuestro dominio, así como realizar multitud de operaciones con el correo, con el calendario y nuestros contactos:

Tendremos la posibilidad de crear hasta 5 cuentas gratuitas en nuestro dominio:

Y a estas cuentas (u otras que deseemos) se les pueden asociar flujos de trabajo, en función de eventos que asignemos. También como en todo sitio web, se permite hacer grupos de usuarios con sus permisos.
Y por último comentar el núcleo de la solución, que es el Gestor de Contactos que nos permitirá gestionar nuestros contactos (de negocio y personales), compañías, oportunidades de negocio, así como nuestros productos:

En el siguiente artículo, analizaré los apartados que quedan por examinar pero como resumen cabría destacar que es un producto muy completo, que proporciona de manera sencilla y muy intuitiva todo lo necesario para poner en marcha una web de nuestra pyme, sin necesidad de tener que pagar por alojamiento. Así pues, puede ser una muy buena aplicación para tener en cuenta. | | Implementación de Efectos 3D mediante shaders | 06/12/2008 13:37 | CES Microsoft | Desarrollo | 3D,Shaders |
Los efectos empleados en las primeras aplicaciones 3D estaban basados y limitados por el pipeline fijo de las APIs utilizadas. Sin embargo a medida que han pasado los años esos pipelines han pasado a ser programables, dando una mayor libertad a los programadores a la hora de crear gráficos 3D y generando efectos mucho más realistas y detallados. Estos pipelines programables están compuestos por pequeños programas, conocidos como shaders, que actúan directamente sobre los distintos vértices y píxeles de un objeto. Los que actúan a nivel de píxel se llaman Pixel Shaders y los que lo hace a nivel de vértice se llaman Vertex Shaders. Hoy en día existe otro tipo de shaders, los Geometry Shaders, que actúan sobre la geometría del objeto, pero todavía están en proceso de prueba.
Un Vertex Shader recibe como parámetro un vértice y modifica sus propiedades para que repercutan en la geometría del objeto al que pertenece. Con esto se logran ciertos efectos relacionados con la deformación en tiempo real de un elemento.
Un Pixel Shader recibe como parámetro la salida del Vertex Shader y se encarga de la rasterización (rendering), especificando el color de cada pixel. Este tratamiento individual de los pixeles permite que se realicen cálculos en tiempo real del objeto del cual forman parte, principalmente de iluminación.
Para escribir estos shaders existen unos lenguajes específicos:
- HLSL (High Level Shading Language), usado con DirectX y propiedad de Microsoft
- GLSL (OpenGL Shading Language), usado con OpenGL y libre
- CG (C for graphics), usado con DirectX y OpenGL y propiedad de la empresa Nvidia.
Un ejemplo de shader sencillo, escrito en HLSL, sería el siguiente:
Primero inicializamos la variables miembro de nuestro vértice, en este caso la posición y el color.
struct mVertex { float4 Position : POSITION; float4 Color : COLOR0; };
Definimos la matriz de proyección, que nos permite transformar nuestro punto 3D, a su equivalente 2D para verlo en pantalla.
float4x4 xViewProjection;
Establecemos el procesado que queremos aplicar a nuestro vértice.
mVertex MainVertexShader( float4 inPos : POSITION, float4 inColor : COLOR0) { VertexToPixel Output = (VertexToPixel)0; Output.Position =mul(inPos, xViewProjection);
Output.Color.rgb = inPos.yxz; return Output; }
Este Vertex Shader nos devolverá, el punto 2D a representar en pantalla. Y el color de ese vértice.
Por último se definen las distintas técnicas de procesado, que pueden constar de uno o más pasos, y que indican el método a implementar y el ModelShader (vs_1_1) que tiene que soportar nuestra tarjeta gráfica para que dicho shader se ejecute correctamente.
technique Simplest { pass Pass0 { VertexShader = compile vs_1_1 MainVertexShader(); PixelShader = NULL; } }
| | Microsoft Office Live Small Business (2ª Parte) | 25/04/2008 14:01 | CES Microsoft | Desarrollo | Office, Live, Microsoft |
Este artículo, es la continuación del publicado el mes anterior y pretende ser un acercamiento a esta nueva herramienta que Microsoft ha publicado. Para ello, analizaré los apartados que no dieron tiempo en el boletín pasado.
En primer lugar, analizaremos las nuevas características de venta online (Sell Online). Si pulsamos sobre la opción del menú, veremos que nos lleva a la siguiente pantalla:

Si deseamos activar esta característica, pulsamos sobre “Active now” y nos pedirá que nos identifiquemos nuevamente.
Tras lo cual nos pedirá que cumplimentemos nuestros datos, si no lo hemos hecho ya:

Si nos fijamos detenidamente en la parte superior veremos que esta característica tiene un precio, con lo cual tendremos que sopesar si nos merece la pena o no activarla. En caso de hacerlo, nos permitirá crear un comercio digital, con su correspondiente catalogo de productos, facilidades para el pago con tarjeta de crédito así como el pago con PayPal, permite enlazar nuestros productos con eBay proporcionando un potente mercado para nuestros productos, y nos facilita informes de ventas que facilitan la gestión de nuestro sitio:

Otra característica, que está a nuestra disposición es la promoción de nuestro negocio (Promote Your Business):

En esta sección nos encontraremos con herramientas para la promoción de nuestro negocio en diversos buscadores web y la posibilidad de crear campañas de e-mail, una característica muy útil para promocionar nuestras novedades o información relevante. Si continuamos con la activación veremos que es una característica gratuita, para un volumen de hasta 200 mensajes por mes, aunque para valores superiores tiene un coste:

A modo resumen se puede ver que Microsoft tiene una clara orientación por dar una ayuda a la PYME, proveyéndola de herramientas útiles para su posicionamiento y expansión de negocio en Internet, por medio de estas características:

Por otro lado tenemos las aplicaciones de negocio (Business Applications) que, con la finalidad de facilitarnos el trabajo, son una serie de plantillas de sitios que nos proporcionan un espacio donde compartir documentos y otra información de negocio, lo que agiliza enormemente el trabajo entre nuestros empleados:

Disponemos de un manejador de documentos, que nos permitirá almacenar y habilitar los permisos de acceso a los documentos que guardemos en nuestro espacio:

Una de las características más interesantes que aporta desde mi punto de vista es el espacio de trabajo de equipo (Team Workspace):

Este recuerda a SharePoint, dado que usa el mismo motor que WSS 3.0, la idea y finalidad es la misma que este producto, es decir, crear un espacio de trabajo en red, con una serie de características como el calendario, gestor de tareas, compartición de documentos, enlaces comunes... que complementan el producto. Esto nos permite la interoperabilidad entre los diferentes miembros de nuestra empresa en un punto común y de una manera sencilla.
A modo de demostración con la finalidad de ver la potencia de esta herramienta creamos una nueva aplicación:

Para ello, de todas las plantillas ya predefinidas, seleccionamos la que más opciones nos puede ofrecer, que es el espacio en blanco (Blank Workspace), que se encuentra dentro de la sección de aplicaciones adaptables (Your costum applications):

Esto nos permite crear un espacio con el nombre y la URL deseados:

Al ser un sitio en blanco proporciona todas las plantillas que se encuentran a día de hoy disponibles:

Esto nos permite configurar dicho sitio a nuestro gusto y con una infinidad de posibilidades, pudiendo añadir documentos, imágenes, tareas, contactos, anuncios, etc. así como información más compleja como formularios, wikis y paneles de discusión.
Y finalmente y no menos importante, mencionar que se dispone de un menú de configuración de la cuenta:

Este panel nos permite definir las cuentas de usuario que necesitemos para nuestra aplicación, configurando todos los apartados de permisos y niveles de acceso de todas las herramientas que hemos presentado. Desde mi punto de vista, es una herramienta muy útil para PYMEs, que dada la nueva orientación que está llevando Microsoft con su empeño en una integración perfecta entre su suite Office y el espíritu online que reside en Live, puede ser una apuesta segura de cara al futuro.
En la misma línea, pero a nivel usuario individual, recomendaría hacer una visita obligatoria a Workspace Live, el cual da al usuario la posibilidad de tener un espacio de trabajo Online, donde almacenar y compartir documentos. También invito a conocer SkyDrive, un disco duro en internet de 5 Gigas que Microsoft nos facilita, para que guardemos lo que deseemos: desde nuestra música favorita a esas fotografías, que nos llenaron la memoria de nuestra cámara digital.
Enlaces de interés:
· Microsoft Office Workspace Live:
http://workspace.officelive.com/
· Microsoft Live:
http://home.live.com/?mkt=es-es/
· Windows Live SkyDrive:
http://skydrive.live.com
| | Iniciarse en los servicios web de SharePoint | 25/04/2008 14:20 | CES Microsoft | Desarrollo | MOSS |
Hoy nos basaremos en un artículo publicado por Trent Swanson, que creo que es de interés para el desarrollo de aplicaciones basadas en Sharepoint (en cualquiera de sus “sabores” WSS 3.0 o MOSS 2007). En concreto vamos a presentar y utilizar (básicamente) la interoperabilidad que Sharepoint ofrece a través de sus web services.
Estos están construidos sobre el modelo de objetos de Sharepoint y son un subconjunto no completo de los mismos. La ventaja en el uso de los web services es que permiten el acceso remoto mediante cualquier lenguaje y plataforma que soporte el uso de servicios web, que hoy en día son mayoría. El hecho de que los servicios web de Sharepoint no representen el modelo de objetos completo es una limitación pequeña ya que si fuera necesario para tareas avanzadas podríamos extenderlos mediante la implementación de un servicio específico.
Arquitectura de los servicios Web
Hay que destacar que MOSS 2007 está construido sobre WSS 3.0, que a su vez lo hace sobre ASP.NET 2.0 ejecutandose en IIS. Por tanto, MOSS 2007 presenta algunos servicios web adicionales a los de WSS 3.0, por ejemplo el servicio de búsqueda avanzada.
En ambos casos, los servicios web se implementan mediante ASP.NET Web Services (ASMX) la mayoría de cuyos ficheros físicos están localizados en “%commonprogramfiles%\\Microsoft Shared\web server extensions\12\ISAPI". El servicio web para la herramienta de “Administración central de Sharepoint 3.0” reside en la carpeta ADMISAPI que se corresponde al directorio virtual “_vti_adm”, que se genera siempre que se instala SharePoint en el servidor. Cuando se crea un sitio SharePoint, contiene un directorio virtual llamado "_vti_bin" que apunta al directorio ISAPI mencionado anteriormente. El caso de los subsitios es distinto, ya que para estos se crea un mapeo al directorio virtual “_vti_bin” de su sitio a través de metadatos de SharePoint y HttpModules.
Para cada servicio existe un fichero *.wsdl.aspx que genera el Web Services Description Language (WSDL) asociado, otro fichero *.disco.aspx que contiene la implementación del service discoverer, y los ficheros *.asmx que proporcionan la funcionalidad, la mayoría de los cuales sólo son referencias a el ensamblado y tipo de SharePoint que contienen la implementación del servicio, y que podemos examinar.
Servicios estándar
SharePoint proporciona bastantes servicios de manera estándar que serán suficientes en la mayoría de los casos, desde tareas administrativas a acceso a datos de listas, que presentamos en la siguiente lista.
|
Servicio |
Uso |
|
Administración
(_vti_adm/Admin.asmx) |
Métodos administrativos para crear y borrar sitios y recuperar los lenguajes usados en la instalación
· CreateSite
· DeleteSite
· GetLanguage
· RefreshConfigCache |
|
Alertas (Alerts.asmx) |
Métodos para trabajar con alertas de SharePoint
· DeleteAlerts
· GetAlerts |
|
Autenticación(Authentication.asmx) |
Cliente proxy que proporciona autenticación de usuario para los sitios que usan autenticación basada en formularios
· Login (utilizado para autenticarse)
· Mode (devuelve el modo de autenticación del sitio actual) |
|
Copia (Copy.asmx) |
Métodos para copiar ficheros
· CopyIntoItems (copia documentos como arrays de bytes a una localización en el servidor)
· CopyIntoItemsLocal (copia documentos de una ubicación a otra en el mismo fichero)
· GetItem (crea un array de bytes de un document que puede ser enviado al método CopyIntoItems) |
|
Espacio de Documentos (Dws.asmx) |
Métodos para gestionar sitios y datos del Espacio de Documentos
· CanCreateDwsUrl
· CreateDws
· CreateFolder
· FindDwsDoc
· GetDwsData
· GetDwsMetaData
· RemoveDwsUser
· RenameDws
· UpdateDwsData |
|
Formularios (Forms.asmx) |
Métodos para devolver los formularios que se usan en el interfaz de usuario cuando se trabaja con el contenido de una lista
· GetForm
· GetFormCollection |
|
Imágenes (Imaging.asmx) |
Métodos para crear y gestionas librerías de imágenes
· CheckSubwebAndList
· CreateNewFolder
· Delete
· Download
· Edit
· GetItemsByIds
· GetItemsXMLData
· GetListItems
· ListPictureLibrary
· Rename
· Upload |
|
Recuperación de datos de listas (DspSts.asmx) |
Realiza búsquedas en listas y sitios de SharePoint
· Query |
|
Listas (Lists.asmx) |
Métodos para trabajar con listas y datos de listas
· AddAttachment
· AddDiscussionBoardItem
· AddList
· AddListFromFeature
· ApplyContentTypeToList
· DeleteAttachment
· DeleteContentType
· DeleteContentTypeXmlDocument
· DeleteList
· GetAttachmentCollection
· GetList
· GetListAndView
· GetListCollection
· GetListContentType
· GetListContentTypes
· GetListItemChanges
· GetListItemChangesSinceToken
· GetListItems
· GetVersionCollection
· UndoCheckout
· UpdateContentType
· UpdateContentTypesXmlDocument
· UpdateContentTypeXmlDocument
· UpdateList
· UpdateListItems |
|
Reuniones(Meetings.asmx) |
Crear y gestionar sitios de reunión
· AddMeeting
· AddMeetingFromICal
· CreateWorkspace
· DeleteWorkspace
· GetMeetingInformation
· GetMeetingWorkspaces
· RemoveMeeting
· RestoreMeeting
· SetAttendeeResponse
· SetWorkspaceTitle
· UpdateMeeting
· UpdateMeetingFromICal |
|
Personas(People.asmx) |
Búsqueda y resolución de principales
· ResolvePrincipals |
|
Permisos (Permissions.asmx) |
Métodos para trabajar con permisos de un sitio o lista
· AddPermission
· AddPermissionCollection
· GetPermissionCollection
· RemovePermission
· RemovePermissionCollection
· UpdatePermission |
|
Gestión de directorio(sharepointemailws.asmx) |
Métodos para gestionar grupos de distribución de email del Active Directory y sus pertenencias a grupos
· ChangeContactsMembershipInDistributionGroup
· ChangeUsersmembershipInDistributionGroup
· CreateContact
· CreateDistributionGroup
· DeleteContact
· DeleteDistributionGroup
· GetJobStatus
· ModifyContact
· ModifyDistributionGroup
· RenameDistributionGroup |
|
Datos de Sitio (SiteData.asmx) |
Métodos que devuelven metadatos o datos de listas de sitios o listas
· EnumerateFolder
· GetAttachments
· GetChanges
· GetContent
· GetList
· GetListCollection
· GetListItems
· GetSite
· GetSiteAndWeb
· GetSiteUrl
· GetURLSegments
· GetWeb |
|
Sitios(Sites.asmx) |
Métodos para recuperar información sobre la colección o plantillas de sitios
· ExportWeb
· GetSiteTemplates
· GetUpdatedFormDigest
· ImportWeb |
|
Búsqueda(spsearch.asmx) |
Métodos para trabajar con los servicios de búsqueda
· Query
· QueryEx
· Registration
· Status |
|
Usuarios & Grupos(usergroup.asmx) |
Métodos para trabajar con usuarios, grupos y roles
· AddGroup
· AddGroupToRole
· AddRole
· AddRoleDef
· AddUserCollectionToGroup
· AddUserCollectionToRole
· AddUserToGroup
· AddUserToRole
· GetAllUserCollectionFromWeb
· GetGroupCollection
· GetList
· GetListAndView
· GetListCollection
· GetGroupCollectionFromRole
· GetGroupCollectionFromSite
· GetGroupCollectionFromUser
· GetGroupCollectionFromWeb
· GetGroupInfo
· GetRoleCollection
· GetRoleCollectionFromGroup
· GetRoleCollectionFromUser
· GetRoleCollectionFromWeb
· GetRoleInfo
· GetRolesAndPermissionsForCurrentUser
· GetRolesAndPermissionsForSite
· GetUserCollection
· GetUserCollectionFromGroup
· GetUserCollectionFromRole
· GetUserCollectionFromSite
· GetUserCollectionFromWeb
· GetUserInfo
· GetUserLoginFromEmail
· RemoveGroup
· RemoveGroupFromRole
· RemoveRole
· RemoveUserCollectionFromGroup
· RemoveUserCollectionFromRole
· RemoveUserCollectionFromSite
· RemoveUserFromGroup
· RemoveUserFromRole
· RemoveUserFromSite
· RemoveUserFromWeb
· UpdateGroupInfo
· UpdateRoleDefInfo
· UpdateRoleInfo
· UpdateUserInfo |
|
Versiones (Versions.asmx) |
Métodos para trabajar con versiones de ficheros
· DeleteAllVersions
· DeleteVersion
· GetVersions
· RestoreVersion |
|
Vistas(Views.asmx) |
Métodos para trabajar con vistas de listas
· AddView
· DeleteView
· GetViewCollection
· GetViewHtml
· UpdateView
· UpdateViewHtml
· UpdateViewHtml2 |
|
Páginas de WebParts(WebPartPages.asmx) |
Métodos para trabajar con páginas de WebParts
· AddWebPart
· AddWebPartToZone
· AssociateWorkflowMarkup
· ConvertWebPartFormat
· DeleteWebPart
· ExecuteProxyUpdates
· FetchLegalWorkflowActions
· GetAssemblyMetaData
· GetBindingResourceData
· GetCustomControlList
· GetDataFromDataSourceControl
· GetFormCapabilityFromDataSourceControl
· GetSafeAssemblyInfo
· GetWebPart
· GetWebPart2
· GetWebPartCrossPageCompatibility
· GetWebPartPage
· GetWebPartPageConnectionInfo
· GetWebPartPageDocument
· GetWebPartProperties
· GetWebPartProperties2
· RemoveWorkflowAssociation
· RenderWebPartForEdit
· SaveWebPart
· SaveWebPart2
· ValidateWorkflowMarkupAndCreateSupportObjects |
|
Webs(Webs.asmx) |
Métodos para trabajar con sitios y subsitios
· CreateContentType
· CustomizeCss
· DeleteContentType
· GetActivatedFeatures
· GetAllSubWebCollection
· GetColumns
· GetContentType
· GetContentTypes
· GetCustomizedPageStatus
· GetListTemplates
· GetWeb
· GetWebCollection
· RemoveContentTypeXmlDocument
· RevertAllFileContentStreams
· RevertCss
· RevertFileContentStream
· UpdateColumns
· UpdateContentType
· UpdateContentTypeXmlDocument
· WebUrlFromPageUrl |
|
Búsqueda MOSS (Search.asmx) |
Métodos para buscar mediante los servicios de búsqueda de MOSS, que incluyen un método para recuperar las propiedades de búsqueda
· GetSearchMetadata (propiedades de búsqueda)
· Query
· QueryEx
· Registration
· Status |
Uso de los servicios web de MOSS
Veamos a continuación de manera muy sencilla como hacer uso de los servicios web que proporciona SharePoint.
El uso de los servicios web de SharePoint desde .NET es bastante sencillo, sólo es necesario añadir la referencia web y usar el proxy generado en nuestra aplicación.
Creación de una referencia Web
Vamos a crear una referencia web al servicio web de autenticación de SharePoint, haciendo click con el botón derecho sobre el nodo “References” de nuestro proyecto en la ventana del explorador de la solución y seleccionando la opción “Add Service Reference” (en Visual Studio 2008). Pulsamos el botón “Advanced” y en la ventana que aparece seleccionamos la opción “Add Web Reference”. A continuación hemos de introducir el valor “http://<server_name>/_vti_bin/Authentication.asmx” en la caja para la URL siendo <server_name> el nombre del servidor web donde reside nuestro SharePoint, y pulsamos “Go”. Puede que se nos solicite usuario y password para el servidor, si no tenemos habilitado el acceso anónimo. Deberíamos ver la lista de métodos que soporta nuestro servicio, como en la imagen siguiente:

Nombramos "SPAuth" a la referencia web y pulsamos el botón "Add Reference".
Una vez hecho esto ya podremos usar el servicio SPAuth desde nuestra aplicación, como en el código siguiente que recuperará el método de autenticación usado en nuestro sitio SharePoint y lo muestra en una etiqueta:
SPAuth.Authentication am = new Test_WFA.SPAuth.Authentication();
label1.Text = am.Mode().ToString();
Tenemos pues fácilmente a nuestra disposición todos los servicios web expuestos anteriormente para poder desarrollar aplicaciones propias que trabajen con los datos de SharePoint, nuestro “algo-más-que” gestor documental... ¿Alguien dijo “¡Genial!”?
Referencias y Enlaces
Windows SharePoint Services 3.0 Web Services Reference
http://msdn2.microsoft.com/en-us/ms445292.aspx | | Generación de mallas mediante Buffers de Vértices e Índices | 06/12/2008 13:37 | CES Microsoft | Desarrollo | C# |
Como ya he comentado en artículos anteriores, para representar objetos en el mundo 3D nos basamos en la utilización de mallas formadas por primitivas básicas, fundamentalmente triángulos. En está ocasión vamos a ver como se generan dichas mallas usando Buffers de Vértices e Índices. Ya que si tenemos claro este procedimiento, seremos capaces de generar mallas con cualquier API y para cualquier motor gráfico. Aquí se puede ver un ejemplo, con lenguaje C#, de creación de una malla en Mogre, una versión de código “managed” del motor gráfico Ogre (Object-oriented Graphics Rendering Engine).
En nuestro caso en concreto, vamos a crear una malla con Direct3D a partir de una imagen bitmap, de la cual, obtendremos la coordenada Z (altura) de nuestros vértices.

Los pasos a seguir son los siguientes:
1. Inicializamos el nodo raíz, conocido como device en DirectX (o como root en Ogre/Mogre) que es sobre el que se actúa como contenedor de todos los elementos de nuestra aplicación y por tanto será en este nodo en el que los crearemos.
2. Declaramos los vértices. Para ello definimos el Buffer de Vértices a representar:
1. Tipo de vértices que debe soportar(PositionColored).
2. Longitud que debe tener, que depende de las dimensiones de nuestra imagen(ancho*alto).
3. El uso que vamos a dar (escritura, lectura…), el formato que debe tener y el lugar(pool)donde se carga la información asociada al VertexBuffer.
Luego se pasa a rellenar dicho Buffer con los valores de los Vértices, tanto con su posición, como con su color. Para ello es necesario acceder al contenido del buffer, por lo tanto hay que bloquearlo, y una vez rellenado, desbloquearlo. Todo esto se hace mediante el método SetData.
private void VertexDeclaration()
{
vb = new VertexBuffer(
typeof(CustomVertex.PositionColored),
width * height, device, Usage.Dynamic | Usage.WriteOnly, CustomVertex.PositionColored.Format, Pool.Default);
vertices = new CustomVertex.PositionColored[width * height];
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
vertices[x + y * width].Position = new Vector3(x, y, heightData[x, y]);
vertices[x + y * width].Color = Color.White.ToArgb();
}
}
vb.SetData(vertices, 0, LockFlags.None);
}
3. Declaramos los índices. Para ello definimos el Buffer de Índices, que se utiliza para almacenar la posición de los Vértices dentro del Vertex Buffer, es decir, realiza la función de puntero. Por lo tanto algunos parámetros de su definición son diferentes a los del VertexBuffer:
1. El Tipo de índices, son números enteros.
2. La Longitud en este caso es ((ancho -1)*(alto -1)*6). Se multiplica por 6, ya que cada “cara” de nuestra superficie, está formada por 2 triángulos y por lo tanto necesitamos 6 índices para definir cada una de ellas.

Al igual que en él VertexBuffer, este se rellena. En este caso, con enteros que indican las posiciones de los vértices.
private void IndicesDeclaration()
{
ib = new IndexBuffer(typeof(int), (width - 1) * (height - 1) * 6, device, Usage.WriteOnly, Pool.Default);
indices = new int[(width - 1) * (height - 1) * 6];
for (int x = 0; x < width - 1; x++)
{
for (int y = 0; y < height - 1; y++)
{
indices[(x + y * (width - 1)) * 6] = x + (y + 1) * width;
indices[(x + y * (width - 1)) * 6 + 1] = (x + 1) + y * width;
indices[(x + y * (width - 1)) * 6 + 2] = x + y * width;
indices[(x + y * (width - 1)) * 6 + 3] = x + (y + 1) * width;
indices[(x + y * (width - 1)) * 6 + 4] = (x + 1) + (y + 1) * width;
indices[(x + y * (width - 1)) * 6 + 5] = (x + 1) + y * width;
}
}
ib.SetData(indices, 0, LockFlags.None);
}
4. Y por último dibujamos la malla creada:
protected void Draw(System.Windows.Forms.PaintEventArgs e)
{
device.BeginScene();
device.VertexFormat = CustomVertex.PositionColored.Format;
device.SetStreamSource(0, vb, 0);
device.Indices = ib;
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, width * height, 0, indices.Length / 3);
device.EndScene();
}
Por lo tanto, vemos como se siguen los pasos fundamentales de cualquier aplicación 3D, que ya mencionamos también en artículos anteriores: Inicialización, Actualización, Dibujado.
El resultado sería el siguiente:

| | Personalización de Paginas de Listas | 06/12/2008 13:36 | CES Microsoft | Desarrollo | Sharepoint, Listas |
En este artículo vamos a ver como personalizar las paginas que nos muestran la información de Listas, la estructura básica de almacenamiento de información de SharePoint (comparable a las tablas de cualquier base de datos) para ello usaremos Microsoft Office SharePoint Designer 2007, la herramienta de Microsoft para personalizar las aplicaciones de SharePoint (WSS y MOSS), que a efectos prácticos es el sucesor mejorado de FrontPage. La principal ventaja de esta herramienta reside en el hecho, de que nos permite adaptar a nuestro gusto el aspecto de las páginas sin necesidad de conocimientos en ningún lenguaje.
Pero lo realmente importante es como personalizar las páginas en las que se muestran nuestras listas. Esta personalización podrá ser aplicada a todas las plantillas que son empleadas para mostrar, crear o editar contenidos de las Listas de SharePoint, como son las páginas ASP con nombre “AllItems.aspx”, “DispForm.aspx”, “EditForm.aspx” y “NewForm.aspx”, así como crear nuevas plantillas que sustituyan a cualquiera de estas 4.
De hecho eso es lo que vamos a hacer, vamos a crear un “DispForm.aspx” personalizado, en el que sólo mostraremos las columnas asociadas que nos interesen.

Para ello abriremos desde SharePoint Designer el sitio SharePoint (WSS o MOSS) que contiene nuestras Listas:

Y navegamos mediante el explorador mostrado a la izquierda de la pantalla hasta donde se encuentre la Lista que nos interesa personalizar:

Dentro del nodo de Listas, desplegamos la que nos interese modificar (“Announcements” en nuestro caso) y abrimos el ASP “DispForm.aspx”, haciendo doble-click sobre él:

Seleccionamos el elemento ListFormWebPart y lo borramos, pues lo vamos a sustituir por uno personalizado (nota: seleccionar el elemento concreto que queremos a veces es un poco difícil, todo es cuestión de habituarse). Para ello, estando colocados en el lugar donde lo queremos insertar, pincharemos sobre el menú Insert è SharePoint Controls è Custom List Form

Tras realizar este paso se mostrará un menú en el que elegiremos el tipo de Lista que queremos usar, en este caso es de “Announcements” y dentro de este tipo de Lista deseamos mostrar el tipo de contenidos “Announcement”. En caso de tener otros tipos de contenidos asociado a la esta Lista, se nos permitiría seleccionarlos en este menú. Finalmente seleccionamos el tipo de formulario que queremos crear, en nuestro ejemplo será un “Display item form”, que es con el que estamos trabajando:

Tras pulsar OK, vemos que nos aparecerán las tres columnas por defecto que tenemos asociadas a esta lista en este ejemplo: Title, Body y Expires. En el caso de que hubiéramos creado más columnas personalizadas que se encontraran asociadas a esta lista, nos aparecerían listadas.
Ahora y para seguir con nuestro ejemplo, supongamos que deseamos eliminar el campo Expires. Simplemente tendremos que seleccionar esa fila y elegir Delete è Delete Rows. Con esto lo que habremos conseguido es que este campo no se muestre en nuestro nuevo “DispForm.aspx”, pero el campo seguirá en uso es decir, que el elemento expirará una vez cumplida la fecha y sus contenidos podrán utilizarse de la manera habitual, pero este campo no será visible para los visitantes del elemento:

Ahora una cosa que es altamente recomendable, es guardar todas estas modificaciones con otro nombre, para evitar sobreescribir el fichero “DispForm.aspx” que nos proporciona SharePoint por defecto, dado que SharePoint Designer no se ocupa de gestionar este versionado por sí sólo. Para ello pulsaremos File è Save As y guardaremos nuestra página en el mismo lugar que se encuentra el “DispForm.aspx” que hemos usado, para nuestro ejemplo usaremos el nombre de “DispPrueba.aspx”:

Tras pulsar en Save, deberemos decirle a SharePoint que esta es la plantilla que queremos que use cada vez que nos muestre un elemento de lista “Announcements”. Para ello, pulsaremos con el botón derecho sobre “Announcements” y en el menú que se nos desplegará seleccionaremos Properties:

En el correspondiente menú que se nos despliega, iremos al campo “Display item form” y pulsaremos sobre Browse y en la ventana que se nos desplegará elegiremos nuestro “DispPrueba.aspx” y pulsaremos OK en ambas ventanas:

Tras esto, recargaremos en el navegador la página de “Announcements” en la que se nos mostraba un elemento de la Lista y veremos el resultado de nuestra personalización, ya no se muestra el campo correspondiente a la columna Expires:

También, se podría haber personalizado colores, tamaño de fuentes u otros aspectos de la página. De este modo hemos visto una manera sencilla de adaptar la información mostrada por SharePoint a nuestras necesidades.
| | Modelo de acceso en SharePoint | 06/12/2008 13:36 | CES Microsoft | Desarrollo | MOSS |
Como nos proponemos hablar de aquellos temas sobre los que trabajamos día a día en los CES, este artículo espero que sirva para aclarar los conceptos del modelo de acceso (Autenticación y Autorización) de Microsoft Sharepoint (tanto en Windows SharePoint Services WSS 3.0 como Microsoft Office SharePoint Server 2007).
Hablaremos primero de la organización de los sitios SharePoint, para después describir los métodos Autenticación y Autorización que emplea y finalizar hablando sobre cómo establecer los permisos de acceso adecuadamente.
Sitios SharePoint: Aplicaciones Web y Colecciones de Sitios
SharePoint es una aplicación Web y como tal es Microsoft Internet Information Server (IIS) el encargado de procesar las peticiones de los usuarios inicialmente, que son enviadas como una URL (por ejemplo http://www.cesnavarra.net/cesdigital/Lists/Noticias%20CESDigital/TemaDesarrolloSoft.aspx).
IIS puede soportar múltiples sitios Web, cada uno identificado por su IP, puerto y header o etiqueta de encabezado. La instalación de SharePoint sobre IIS lo que hace es extender un sitio Web de IIS y hacer que sea SharePoint el que se encargue de las peticiones. Esto implica que un mismo IIS puede soportar múltiples aplicaciones Web de SharePoint. El que necesitemos o no diversas aplicaciones Web depende de varios motivos como seguridad o aislamiento de contenidos, etc.
Desde el punto de vista de la seguridad, es cada aplicación Web la que controla el método de autenticación (somos quienes decimos que somos) en cada URL de SharePoint particular, y cada aplicación Web puede usar un método independiente.
En SharePoint 2007 tenemos el concepto de “granjas” que agrupa a un conjunto de servidores Web en los que se ejecuta la misma aplicación Web. Dentro de una granja la definición de cada aplicación Web se distribuye de manera automática (lo que simplifica la tarea de administración) de manera que el mismo método de autenticación se usa de manera consistente, independientemente de qué servidor Web físico usemos.
Cada aplicación Web a su vez acoge una o más colecciones de Sitos, y cada colección a su vez consiste en un sitio raíz y uno o más subsitios.

Todos los sitios en la colección comparten la URL del sitio raíz. Cada sitio a su vez almacena su propio contenido en las listas y librerías de documentos de SharePoint.

Veamos pues los dos pasos que debemos realizar para dar permisos de acceso a nuestros usuarios:
1. Autenticación: ¿es el usuario quien dice que es?
2. Autorización: ¿puede el usuario ver lo que quiere ver?
Autenticación
Como hemos comentado, es IIS el que se encarga de autenticar las aplicaciones Web de SharePoint. Para ello, contamos con diversos métodos siendo el más habitual el uso de Active Directory (AD). Sin embargo, dado que soporta cualquier modelo de autenticación de ASP.NET disponemos de mucha más flexibilidad pudiendo por ejemplo emplear los datos de un fichero plano (no muy recomendable, por otra parte…). Para esto se emplea lo que se denomina “membership provider” (MP) que es el responsable de autenticar los usuarios con un método concreto. ASP.NET 2.0 nos proporciona por defecto un MP para SQL, y MOSS añade uno para LDAP.
Cada aplicación Web sólo puede tener un método de autenticación asociado (y por tanto emplea un único MP). Si necesitamos proporcionar acceso al mismo contenido con distintos métodos deberemos extender nuestra aplicación Web a otra zona. Existen cinco zonas disponibles: Default, Internet, Extranet, Intranet y Custom, siendo cada zona básicamente un sitio Web en IIS configurado con un método de autenticación adecuado. La zona “Default” es la empleada por defecto siendo su método de autenticación Windows.
Cuando extendemos una aplicación Web a otra zona le damos una URL concreta para la zona, por lo que podemos usar distintas URL para usar métodos de autenticación distintos para el mismo contenido. En la siguiente imagen vemos esto en acción: en la primera usamos Windows para autenticarnos, en la siguiente Forms.

Podemos definir nuestros MP (que como hemos dicho se emplean al definir el método de autenticación de nuestra aplicación Web) según nuestras necesidades y para esto les daremos un nombre que se nos mostrará cada vez que necesitemos identificar usuarios en SharePoint, para saber a qué usuario nos estamos refiriendo sin dudas.
En el ejemplo siguiente vemos que un usuario nos lo proporciona el propio SharePoint y el otro el S.O. Windows de la máquina sobre la que se ejecuta (WSSV3)

Autorización
Una vez que nuestros usuarios tienen acceso al sistema, debemos conocer a qué contenidos del mismo pueden acceder y qué pueden hacer con ellos, mediante el proceso de autorización.
Para definir la autorización disponemos de 5 componentes:
Permisos individuales
Proporcionan la posibilidad de realizar acciones concretas, como ver los elementos de una Lista (View Items). Estos permisos aplican a nivel de granja web y se pueden controlar por un administrador.
Nivel de permiso
Los niveles de permiso agrupan los permisos individuales para facilitar su gestión. WSS incluye cinco niveles: Acceso Limitado, Lectura, Contribución, Diseño y Control Total. MOSS añade otros como Aprobación y Gestión de Jerarquía. Se pueden añadir niveles de permiso adicionales o modificar los existentes. Su alcance es por cada sitio y pueden heredarse del sitio padre o definirse a nivel de sub-sitio, librería o elemento.
Usuario
Podemos asignar permisos a un usuario particular identificado mediante un método de autenticación, como hemos visto anteriormente.
Grupo
Un grupo es un conjunto de usuarios, que pueden ser bien un grupo de usuarios Windows, un rol proporcionado por un gestor de roles o un grupo de SharePoint, como Propietarios del sitio o Visitantes del sitio. Estos Grupos proporcionan a los administradores de las colecciones de Sitios la flexibilidad para agrupar usuarios sin tener que depender del departamento de Sistemas para que creen grupos de usuarios Windows.
Objeto securizable
Los Grupos anteriores son asignados niveles de permisos sobre objetos securizables concretos: sitios, listas, librerías de documentos, carpetas, documentos o elementos. Por defecto los permisos para listas, librerías, carpetas, documentos y elementos se heredan del padre (sitio, lista o librería en cada caso). Pero aquellas usuarios con Nivel de permiso que incluya la Gestión de Permisos de un objeto securizable particular pueden cambiar los permisos de éste.
SharePoint permite otorgar permisos a nivel de elemento, por lo que para una librería de documentos podríamos conseguir que un usuario tenga acceso a un documento concreto pero no a todos los demás.
Este modelo de permisos también se aplica al interfaz de usuario de SharePoint de manera que podemos lograr que un usuario vea o no partes de nuestra página (Web Parts) sólo si tiene permisos de acceso de lectura adecuados, o que sólo pueda ver aquellas acciones para las que dispone de permisos.
Es recomendable emplear grupos cuando asignemos estos permisos ya que de otra manera nos complicaremos mucho la gestión de permisos en nuestra aplicación. Dar permisos a un usuario particular es algo que deberíamos emplear sólo de manera excepcional (y eso es válido para cualquier otro sistema).
Almacenamiento de permisos de Usuarios
De acuerdo a lo dicho anteriormente tenemos que los usuarios pueden recibir acceso a los objetos de manera explícita mediante sus cuentas de usuario o implícita por su pertenencia a un grupo de seguridad o rol. El uso de grupos de SharePoint es el método preferido por la facilidad que nos permite.
Cuando un usuario recibe un permiso de acceso a un recurso en una colección de sitios se crea un registro en la tabla UserInfo de la base de datos de contenido asociada a esa colección. Sus detalles se introducen en la lista User Information, y esa información es la que vemos mediante la vista “Todas las personas” (“All People”) de SharePoint. Por tanto, si un usuario tiene diversos accesos a distintas colecciones de sitios existirán un número correspondiente de entradas en la tabla UserInfo de la BBDD de contenido que soporta esas colecciones. Esta tabla contiene un identificador interno propio de SharePoint que sirve como clave en otras tablas, un indicador de si se trata de un grupo de seguridad o un rol y el identificador de seguridad que proporciona el MP empleado en el método de autenticación de la aplicación Web. En el caso básico de emplear autenticación Windows se trata del Security Identifier (SID) del usuario o grupo. Si concedemos a un usuario acceso implícito a un recurso a través de un grupo de seguridad o rol, la entrada en la tabla UserInfo se crea la primera vez que este usuario accede al recurso.
Existen otras cuatro tablas empleadas para soportar este modelo de autorización: Groups y GroupMembership para grupos y Roles y RoleAssignment para los roles. La tabla Groups contiene la información sobre los grupos (definición, privilegios, etc.) y GroupMembership a su vez enlaza los grupos con los usuarios. Las tablas Roles y RoleAssignment proporcionan los permisos exactos que tiene un usuario o un grupo referidos a su rol concreto en una colección de sitios. Por tanto, para conocer qué permisos tiene una cuenta particular necesitaremos agregar los permisos del grupo de seguridad al que pertenece, los del grupo de SharePoint a que pertenece y los de los roles que le hayan sido asignados. “Sólo” nos falta otro componente: las Web Application Policies, que actúan como un supervisor global a nivel de aplicación Web (es decir, afectan a todas las colecciones de sitios que soportan) y tienen precedencia sobre todo lo demás.
El acceso a los objetos, en definitiva
En SharePoint, cualquier acceso a un recurso consiste en pedir un elemento de un sitio. En la página de inicio pedimos el elemento “default.aspx”, al editar el “EditForm.aspx”, etc. Por tanto, necesitamos seguir un proceso para que el servidor web nos proporcione ese elemento.
Lo primero es autenticarnos con el método de autenticación en un MP. Una vez hecho eso, el MP proporciona un identificador que por simplificar asumiremos que es el SID (es decir, usamos autenticación Windows). Con este SID se obtienen nuestros datos de la tabla UserInfo, en concreto el identificador de SharePoint, con el que obtendrá mediante una combinación de datos del resto de las tablas los permisos de que disponemos y en caso de ser suficientes nos proporcionará el recurso solicitado.
Esto implica que si cambiamos nuestro SID en Windows (por una migración de dominio, habitualmente) tendremos problemas. Para evitarlos, podemos usar la utilidad “stsadm” con el switch “-migrateuser” que reemplazará la cuenta antigua con la nueva. El artículo “Stsadm: Taking control of SharePoint administration” proporciona más información sobre su uso.
| | Clustering y Hyper-V | 06/12/2008 13:36 | CES Microsoft | Arquitectura | Hyper-V |
El pasado 16 de Junio tuvimos el gusto de acoger en el Salón de Actos de los CES a los evangelistas de Microsoft TechNET José Parada y David Cervigón. Su charla sobre Windows Server 2008 y Hyper-V despertó un gran interés entre los asistentes, más aún en cuanto se mezclaban en una misma frase las palabras “Hyper-V” y “alta disponibilidad”.
Así que, siguiendo ese hilo, este mes me planteo hablar sobre Hyper-V y clustering como alternativa barata, fiable y práctica para soluciones IT de alta disponibilidad.
La primera y más simple alternativa sería montar nuestras máquinas virtuales (VM, Virtual Machines) sobre nodos físicos en alta disponibilidad. Esta configuración se denomina Host Clustering y resulta la solución más simple. De este modo se puede montar cada servicio o aplicación que precisa Alta Disponibilidad (HA, High Availability) en múltiples VMs que tienen HA. Si una VM no está disponible sólo ese servicio hará el desplazamiento del servicio al otro nodo (denominado en inglés “fail over” y que usaremos de aquí en adelante por brevedad), siempre que cada VM tenga su propia unidad lógica de almacenamiento, o LUN. Como en toda máquina “real”, el fallo de una VM que ejecute múltiples servicios hace que todos esos servicios no estén disponibles. Por lo tanto, aquí será el criterio particular de cada caso el que nos indique que nivel de “granularidad” queremos al organizar nuestros servicios en las VMs en HA:
· Si cada servicio es especialmente crítico como para preferir aislarlo de otros problemas, o se tiene la experiencia de que sus actualizaciones sean más frecuentes de lo que fuera deseable precisando un reinicio en cada ocasión, o su consumo de recursos puntualmente se dispara (con o sin motivo aparente, es otro cantar…) nos resultará de interés “independizarlo” en su propio nodo de VMs. Claro está que esto nos dificultará el mantenimiento, pero en esto como en otras cosas de la vida “no pain no gain”
· Si los servicios o aplicaciones a “clusterizar” no presentan esas exigencias y lo que queremos lograr es que el tiempo en el que no se encuentre disponible cualquiera de ellos sea el menor posible, podemos optar por agruparlos en una (o varias) VMs que hagan el failover, de manera que nuestro esfuerzo sea menor. Pero claro, esto será como los castillos de naipes: si cae uno, el resto va con ellos.
En general, aplicar una mezcla de estas dos opciones con el criterio apropiado en cada caso será la mejor opción. Hay que tener en cuenta que cada VM requiere su parte de recursos (memoria, CPU, I/O) en nuestras máquinas físicas, así que habrá que tener en cuenta su capacidad y nuestros requerimientos (por ejemplo, respondiendo a preguntas como: ¿Soportarán nuestras máquinas físicas todas las VMs corriendo a la vez en un punto del tiempo? ¿Se podrá producir alguna vez esto? ¿Afectará al rendimiento percibido por los usuarios? ¿Y al real? ¿Es esto importante?...)
Para el almacenamiento podremos usar iSCSI, canales de Fibra o SAS (SCSI por puerto Serie). Cuando la máquina física y la VM estén en ejecución, el administrador podrá hacer un failover a otra máquina física de la VM, y el usuario sólo percibirá una espera de unos pocos segundos. Por detrás, el gestor de Cluster guarda el estado actual de la VM en el almacenamiento compartido, lo para en el primer nodo físico y lo arranca en el segundo nodo. También monitoriza el estado de los VMs, de modo que si el S.O. cae, se cuelga o da una pantallita azul, puede ser automáticamente recuperado aunque en este caso el usuario sí percibirá la espera mientas el estado de la VM se carga e inicializa (el uso de aplicaciones que toleren fallos en la comunicación o “pervasivas” minimizará el impacto negativo en estos casos).
Como se ha visto, el modelo Host Clustering monitoriza el estado del S.O. virtual, pero no se fija en el estado del servicio o aplicación dentro de la VM. Para esto se dispone del modelo denominado Guest Clustering. Este modelo permite el uso de aplicaciones y servicios de alta disponibilidad en la capa virtual, y se soporta completamente en Windows Server 2008. Para establecer esta configuración instalaremos el elemento de ‘Failover Clustering’ en varias VMs y luego procederemos a definir el cluster con ellas como si fueran nodos físicos. Todas estas VMs pueden usar el mismo almacenamiento compartido iSCSI que guardará el estado de las aplicaciones ejecutándose en la VM. Incluso se puede realizar una validación de la configuración del cluster en las VMs para asegurarnos de que el componente ‘Failover Clustering’ funciona correctamente. Lo que nos facilita esta configuración es la monitorización de la salud de nuestros servicios y aplicaciones con la posibilidad de trasladarlos de VM si sufren algún problema.
Mediante la combinación de los dos modos Host Clustering y Guest Clustering podemos obtener alta disponibilidad en las capas física y virtual. Un ejemplo de esta configuración combinada sería el siguiente:

· Los nodos Físico-A1 y Físico-A2 forma un Host cluster físico. Son los nodos que soportan los servidores virtuales VM-1A, VM-2A y VM-3A. Estos VMs realizan su desplazamiento entre los nodos Físico-A1 y Físico-A2 obteniendo HA en la capa física.
· Los nodos Físico-B1 y Físico-B2 forma un Host cluster físico. Son los nodos que soportan los servidores virtuales VM-1B, VM-2B y VM-3B. Estos VMs realizan su desplazamiento entre los nodos Físico-B1 y Físico-B2 obteniendo HA en la capa física.
· Los nodos virtuales VM-1A y VM-1B forman un cluster en la capa virtual.
· Los nodos virtuales VM-2A y VM-2B forman un cluster en la capa virtual.
· Los nodos virtuales VM-3A y VM-3B forman un cluster en la capa virtual.
· Las aplicaciones y servicios obtienen HA en la capa virtual y pueden hacer fail over, mientras que las VMs obtienen su HA en la capa física, donde pueden hacer fail over. Esto permite la HA en ambas capas.
Como en cualquier otra solución de cluster, el proceso más complejo a nivel hardware será la configuración de los discos para la definición de las LUNs de cada cluster. Sin embargo, Hyper-V nos proporciona dos ventajas significativas sobre las soluciones de cluster “tradicionales”:
- Menor coste, por el ahorro que supone el uso de VMs
- Mayor flexibilidad dado que podemos definir tantas VMs como nuestro hardware sea capaz de soportar y distribuir las aplicaciones o servicios como queramos entre ellas.
En cuanto al 'como hacerlo' lo mejor es referirse a la guía paso a paso publicada en el blog de Robert Larson http://blogs.technet.com/roblarson/archive/2007/12/17/building-a-host-cluster-with-hyper-v-beta-1.aspx que ofrece con todo lujo de detalles qué debemos hacer para montar nuestras VMs en Guest Clustering.
Para más información incluyendo representaciones gráficas de diversos escenarios de uso se puede consultar el blog de José Barreto (en inglés):
http://blogs.technet.com/josebda/archive/2008/06/17/windows-server-2008-hyper-v-failover-clustering-options.aspx | | Integración de Silverlight BluePrint con Sharepoint | 06/12/2008 13:36 | CES Microsoft | Desarrollo | SharePoint |
A comienzos de este año Microsoft liberalizó Silverlight BluePrint, un conjunto de ejemplos y recursos sobre el uso de la tecnología Silverlight en SharePoint. Estos ejemplos, que se pueden descargar desde la página http://www.ssblueprints.net/sharepoint/, contienen además de las propias aplicaciones el código fuente de las mismas, documentación y videos explicativos.
Aunque son numerosas las páginas que mencionan este paquete de software y servicios, ninguna explica claramente cómo integrar dichos ejemplos en nuestra aplicación SharePoint. Viendo esta necesidad he decidido realizar una sencilla explicación sobre cómo integrar estos ejemplos y cualquier otra aplicación básica de Silverlight con SharePoint. Para ello nos centraremos en el caso más sencillo que se trata de una WebPart en la que aparece el típico mensaje de “Hello World” interactivo.
Lo primero que tenemos que hacer es instalar el plugin de Silverlight en nuestro servidor. Tras descargarnos la carpeta “.zip”, con todos los archivos de la aplicación, de la página mencionada anteriormente, lo primero que hacemos es ejecutar el instalador “Setup.exe” en el servidor, y si todo se realiza con normalidad nos aparecerá la pantalla que se ve en la Figura1.
Si nos da algún tipo de error, debemos asegurarnos de que el servicio de Windows SharePoint Administration está arrancado. Para ello abrimos Herramientas administrativas > Servicios y lo comprobamos. Si no está funcionando, deberemos arrancarlo.

Figura1
Para comprobar que todo se está realizando correctamente, abrimos el Internet Information Services Manager, y comprobamos si se ha copiado la carpeta ClientBin de nuestra aplicación y si tenemos en ella los archivos HelloSilverlight10.js y HelloSilverlight10.xaml.

Figura2
El siguiente paso es activar la aplicación para que se pueda implementar con SharePoint. Para ello, si contamos con permisos de Administrador, desde la página de nuestro sitio SharePoint raíz, pinchamos en la pestaña Site Actions>Site Settings>Modify All Site Settings> Site Collection Administration> Site Collection Features y activamos la aplicación deseada, como se puede ver en las Figuras 3 y 4. Si no contamos con dichos permisos, tendremos que hacer lo mismo pero desde la pantalla Central de Administración o solicitar este cambio.

Figura3

Figura4
Una vez activada esta característica de nuestra colección de sitios, lo único que nos falta es añadir la WebPart con nuestra aplicación Silverlight. Para ello desde la página donde la queremos añadir pinchamos en Site Actions > Edit Page >Add Web Part y seleccionamos nuestro WebPart de ejemplo, tal como se ve en la Figura5.

Figura5
El resultado final sería el siguiente:

Figura6
Como aquí no se observa la interactividad de dicho WebPart, yo recomendaría que cada persona intentara añadir a sus aplicaciones este ejemplo o cualquiera de los incluidos en Silverlight BluePrint, para comprobar los resultados. Asimismo, podemos revisar los ficheros “.js” y “xaml” de ejemplo, para aprender su uso. También existen otros ejemplos con los que se podría probar, como el que se encuentra en la siguiente página: http://www.triplewood.com/triplewood/html/SharePoint2007.aspx
Creando y utilizando este tipo de aplicaciones, podemos conseguir que nuestro sitio sea más atractivo y más dinámico. | | Temas de Julio | 06/12/2008 13:36 | CES Microsoft | Varios | OneNote |
Como estamos en período post-sanferminero, las cosas que uno pensaba hacer “antes de” se convierten en las que hay que hacer porque nada funciona como debiera “después de”. Así que este mes este artículo tratará sobre un par de temas con lo que he tenido que lidiar tras las fiestas. Pobre de mí…
Problemas con Hyper-V en Windows Server2008 de Mayo
Recientemente hemos tenido que "padecer" unos problemas en nuestros servidores Windows 2008, así como en algunos equipos Windows Vista, causados por nuestro interés en experimentar. A finales de Mayo o principios de Junio de 2008, las versiones de evaluación de los distintos Sistemas Operativos de Microsoft dejaron de ser utilizables, y para que eso se notara reaccionaron de una manera un tanto extrema: comenzaron a generar crashes, nuestros queridos "pantallazos azules" cada cierto tiempo y de manera aleatoria.
Esto obligaba a un reinicio de las máquinas con estas versiones de evaluación instaladas y si no disponemos de copia de lo que estábamos haciendo… ¡adiós, muy buenas! Lógicamente hay que admitir que al tratarse de versiones de evaluación esto es normal y ya sabíamos que podía pasar. Además, Microsoft por lo menos nos concede unos "períodos de gracia" durante los cuales nuestros servidores y equipos funcionan y que podemos emplear para extraer la información importante que tuviéramos en ellos.
Una vez detectada la fuente de nuestros males, procedemos a instalar las versiones correctas (y completas) de los sistemas operativos, sin problemas. En ambos casos, y siempre que dispongamos de espacio en nuestro disco duro, el instalador creará una carpeta llamada “Windows.old” donde copiará el contenido de nuestra instalación anterior que tuviéramos en las carpetas “Archivos de programa”, “Usuarios” y “Windows”. Normalmente lo que más nos interesará es el contenido de la carpeta “Usuarios”, ya que en ella tendremos nuestros Documentos, Descargas, Imágenes, Música, etc. que podremos mover sin peligro a la carpeta que ha creado la nueva instalación y casi todo volverá a ser como antes (casi todo, porque deberemos reinstalar uno por uno los programas que utilicemos, entre otras tareas).
Pero en nuestro caso existía una nueva “trampa”: la instalación de Windows Server 2008 se realizó con la versión de Mayo, la cual incluye el servicio Hyper-V versión 6.0.6001.18016 pero en nuestra anterior versión empleábamos la versión 6.0.6001.17101. Un ligero cambio de números… pero un cambio que impide a nuestras antiguas máquinas virtuales funcionar correctamente: al arrancar cualquiera de nuestras máquinas virtuales se lanzaba el asistente de hardware nuevo encontrado:

Y como el hardware virtual no está configurado correctamente, el resultado es que la instalación es mala.

Como resultará habitual a aquellos que ya se hayan "peleado" con las máquinas virtuales de Microsoft, a continuación deberemos insertar el "Integration Services Setup Disk", mediante el menú "Acción". Este lanzará el ejecutable que pretende llevar a cabo la instalación, como se ve a continuación:

Normalmente todo irá bien y se actualizará correctamente:

Para terminar, reiniciamos y todo estará listo a falta de unas comprobaciones de IP y dominio. Pero si nuestro sistema virtualizado dispone de alguna actualización o versión de los drivers de VM que no gusta a nuestro instalador, nos devolverá un mensaje de error tan poco explícito como "Error: Error grave durante la instalación." Y nada más.

Para solucionarlo, en vez de ejecutar el programa “Setup.exe” del “Integration Services Setup disk” tendremos que lanzar un ejecutable del mismo disco pero un poco más oculto: se trata del “update.exe” que reside en “support\x86\en-us\update”.
En esta imagen se puede ver que también he ejecutado el Administrador de tareas de Windows, pero sólo como soporte desde el que lanzar el “explorer.exe” mediante su menú “Archivo”, ya que los problemas con la instalación de los Servicios de Integración para esta versión de Hyper-V impiden el uso del ratón… algo bastante molesto, la verdad. Una vez lanzado este update, tendremos que reiniciar nuestro servidor virtual y todo habrá vuelto a funcionar normalmente, sobre todo nuestro ratón y la tarjeta de red.

Finalmente sólo tendremos que corregir nuestra asignación de IPs a la máquina virtual si no utilizamos asignación dinámica:

Recibiremos un aviso sobre si queremos asignar una dirección IP diferente ya que la anteriormente asignada todavía está asociada a un dispositivo anterior (aunque sea a un dispositivo oculto porque ya no existe más en el sistema, la anterior tarjeta de red virtualizada). Respondemos "No" para que confirme los valores que acabamos de introducir y recuperaremos la conectividad de nuestra máquina virtual.

Por último, sólo tendremos que volver a agregar el servidor al dominio si era parte de alguno y listo (bueno, para 12 máquinas se hace un poco pesado… pero funciona).
Microsoft Office OneNote 2007
Como nota final, quería hablar un poco sobre una herramienta que he descubierto este mes, oculta en la licencia de Office 2007 completa y que tenía olvidada por ahí, llamada Microsoft Office OneNote.
La idea de Microsoft es que este producto pueda sustituir al montón de pequeños papelitos y notas que al final del día, reuniones, llamadas, mails, etc. vamos recopilando y que luego no hay manera de encontrar. OneNote es como un bloc de notas con esteroides (se carga muy rápido) ya que nos permite hacer mucho mucho más que el viejo y querido bloc:
- la capacidad de buscar información en todas nuestras notas al estilo de la que ofrece Outlook 2007
- si eso por sí sólo ya es una bendición, añadiré que OneNote nos permite emplear en cualquier nota imágenes obtenidas desde cámaras o escaneadas (por ejemplo, tarjetas de negocio…), archivos, recortes de pantalla e incluso grabaciones de audio y video
- pero es que además su búsqueda nos permite buscar en los contenidos de estos elementos también. Es decir, podemos buscar en un archivo o imagen importados.
OneNote ofrece por defecto una organización de notas dividida en profesionales y personales, de manera que nos permite emplear la aplicación para todo nuestro día a día. Dentro de cada una establece unas sub-categorías como Notas de la reunión, Viajes, Proyectos, etc. pero que son totalmente modificables a nuestro gusto. Incorpora también una serie de plantillas para nuevas notas, que se puede ampliar descargando nuevas versiones desde la web de Microsoft Office. Además, la gestión de las notas es totalmente automática, es decir que no perderemos nunca lo que estamos editando. Además, mediante un icono que sitúa en nuestra barra de tareas, tenemos acceso inmediato a OneNote desde cualquier aplicación.
Por último, OneNote permite compartir notas con otros usuarios, exportarlas a Word (donde por ejemplo acabaré de editar este artículo tras haberlo esbozado en OneNote), enviarlas como correo en Outlook a cualquier destinatario, o publicarlas en nuestros sitios de SharePoint para tener una versión colaborativa en Web. Y algunas otras "extravagancias" como generar una Tarea de Outlook desde una nota de OneNote automáticamente para sincronizarla con todos nuestros dispositivos o asignar tiempo para hacer la tarea, etiquetar nuestras notas con gran flexibilidad para poder localizarlas luego más fácilmente

Y por ultimo y no menos importante, llevar a cabo sesiones de trabajo compartidas entre varios miembros de un equipo sobre una misma nota remotamente (una manera muy útil de llevar a cabo "tormentas de ideas"), etc.Por eso
Por eso, podemos llamar a OneNote la "navaja suiza" de los productos Office y recomiendo su utilización.
| | Cuadro de búsqueda en MOSS y WSS | 06/12/2008 13:36 | CES Microsoft | Desarrollo | SharePoint |
En nuestro sitio Web basado en MOSS teníamos pendiente corregir el tema de las búsquedas, así que ahora que el verano lo permite dediqué un tiempo a este tema. Lo primero que encontré al respecto no me aclaró mucho el por qué la búsqueda por defecto en MOSS me llevaba a una página .aspx que no aplicaba el tema de nuestro sitio, con un efecto considerablemente feo:

Es más, esa página “OSSSearchResults.aspx” no permite su edición “estándar” y sólo los cambios más elaborados a nivel de código son posibles. Esta opción no me convencía del todo dado que la migración a otra plataforma o sitio, o su distribución en los servidores de la granja resulta más manual de lo que sería deseable. Sin embargo, la opción de “Búsqueda avanzada” sí que proporciona por defecto com destino una página con tema aplicado y modificable, lo cual en mi impresión es indeseable porque dos páginas de resultados de búsqueda distintas crean una impresión extraña.
Tras algunas búsquedas más o menos infructuosas, la página webde Mark Arend (http://blogs.msdn.com/markarend/archive/2007/01/24/search-results-page-may-be-different-per-search-scope.aspx) me proporcionó una explicación coherente del motivo:
Microsoft Office SharePoint Server 2007 provides two categories of search scopes: Custom and Contextual.
· Custom scopes:
o “All Sites”
o “People”
o The custom search scopes created via the search or site admin pages
· Contextual scopes:
o “This Site”
o “This List”
Issue
Search behaves slightly differently between these categories. Specifically, there are two pages on which search results are displayed, one for each category. The page for Custom scope results is the most familiar: it’s the one that offers custom scopes and properties available via Advanced Search. The page for Contextual scope results is much simpler: there are no best bets, high confidence results, advanced search link nor search tabs. This page is also customizable, but is done at the level of a web designer or farm administrator, not in the same way as the one for Custom scopes, which can usually be customized pretty easily by individual site administrators.
Also, the search results page that can be configured on the Search Settings page affects Custom scope results, and defaults to /SearchCenter/Pages. This setting has no effect on Contextual scope results, which always go to /_layouts/osssearchresults.aspx for MOSS installations (for WSS-only, it is /_layouts/searchresults.aspx).
Impact
When people use the “This Site” or “This List” scope to search, the search engine will perform as it always does, but the results will be shown on a different page and the users may be confused by missing functionality on that page.
“Justification”
The two scope categories are implemented by two different products: contextual scopes are provided by the WSS platform, while custom scopes are provided by the MOSS product running on that platform. This is not an excuse, merely an explanation. It could be argued that it's not so bad for these results pages to differ when someone is searching This Site or This List, because their focus is narrower and they don’t need the advanced results as they do when searching much broader scopes. But users naturally express confusion over why the results are organized differently.
Además, esta página proporciona una solución posible al problema, original de Jan Geisbaur aunque en alemán así que un poco más complicado de segur, que pasé a implementar aplicando alguna variación que me proporcionó más flexibilidad.
1. El primer paso es donde diverjo de Mark. En su web propone crear una página .aspx desde SharePoint Designer con un nombre apropiado. Esta opción funciona bien, pero en mi caso quería ser capaz de emplear WebParts de búsqueda: resultados, paginación, resúmen, etc. y si creaba una página .aspx básica no tenía esa flexibilidad. Además, como en SharePoint lo mejor es tenerlo todo bien organizado, lo que he hecho en su lugar es crear primero un sitio al que denomino “Busquedas” con estas opciones: Crear -> Biblioteca de documentos -> Nombre:“Busquedas” –> No mostrar en Inicio Rápido -> No crear versiones de documentos -> Tipo: Página de elementos web

2. Una vez listo vamos a crear nuestra página de elementos, mediante el botón “Nuevo”. La denominaremos “Busqueda Simple.aspx” y de tipo “Página completa, vertical” (o el que más nos interese).

3. En la página que crea añadimos los WebParts que sean de nuestro interés:
· Cuadro de búsqueda
· Estadísticas de búsqueda
· Paginación de búsqueda
· Resultados principales de búsqueda
· Resumen de la búsqueda

4. Con esto, y dado que la página aplica automáticamente el tema del sitio (que es lo que queremos), nuestra página de resultados tendrá el aspecto deseado:

5. Corregiremos si es preciso los pequeños elementos que falten con SharePoint Designer, como añadir menús, eliminar textos, etc. logrando una página de resultados de búsqueda utilizable en nuestro sitio web.

Una vez que esta página está preparada, seguimos con los pasos que comenta Mark a partir de su punto “3”:
6. Hacer una copia de seguridad de osssearchresults.aspx (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS) y reemplazamos el código de la existente por el siguiente javascript:
<script language = "javascript"> function getURLParam(strParamName){ var strReturn = ""; var strHref = window.location.href; if ( strHref.indexOf("?") > -1 ){ var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase(); var aQueryString = strQueryString.split("&"); for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){ if ( aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){ var aParam = aQueryString[iParam].split("="); strReturn = aParam[1]; break; } } } return unescape(strReturn); } var urlstring = 'http://sharepointURL/_catalogs/masterpage/custom-search.aspx?k=' + getURLParam('k') + '&cs=' + getURLParam('cs') + '&u=' + getURLParam('u')
location.replace(urlstring); </script>
7. Debemos sustituir la cadena marcada en rojo por la dirección correcta de nuestra página “Busqueda Simple.aspx” (Nota: recomiendo usar referencias relativas a la página y no absoluta, ya que esta presenta la desventaja de que las migraciones a otro dominio o máquina de pruebas, desarrollo, etc. podrán generar muchos más errores. Por tanto en nuestro caso introduciríamos ‘/Busquedas/Busqueda%20simple.aspx’). Lo que esto hace es sencillamente recoger los parámetros pasados a OSSSearchresults.aspx y enviarlos a nuestra página ‘Busqueda simple.aspx’ donde los WebParts que hemos configurado se ocuparán de ejecutar la búsqueda y devolver el resultado. En rendimiento el impacto es mínimo, aunque no sea una solución 100% limpia.
El resultado será el siguiente:

Que es justamente lo que queríamos. Podemos complicar las búsquedas todo lo que queramos, por ejemplo creando una página de búsqueda con más o menos WebParts, con el de búsqueda avanzada, con imágenes a modo de anuncio, etc...
Esta aproximación presenta las siguientes ventajas:
- La página de resultados es parte del contenido de una biblioteca, por lo que su migración y gestión por parte de MOSS es automática.
- Si nuestro sitio es muy fiel al estándar, no será necesario hacer uso de SharePoint Designer para su diseño, algo que muchos agradecerán.
Sin embargo, la desventaja es la que destaca Mark: la gestión de nuestro fichero osssearchresults.aspx queda en nuestra responsabilidad. Además, su acceso puede ser anónimo, según hayamos configurado los permisos de la biblioteca, ¡ojo a esto!
¡Felices búsquedas! | | Registro (Logging) en aplicaciones .NET | 06/12/2008 13:36 | CES Microsoft | Desarrollo | .NET |
En la pasada edición de la NavarParty, que contó con una muy buena asistencia, tuve la oportunidad de asistir a una charla presentada por Iván Gonzalez, de PlainConcepts, que trató sobre el registro de eventos en aplicaciones .NET. Iván demostró ser no sólo un muy buen comunicador y un profesional con muchos conocimientos, sino además alguien que se esfuerza por ello como aquellos que conocen en periplo ferroviario que Iván realizó para venir a dar esa charla pueden atestiguar. Como sencillo reconocimiento aquí pongo una foto de Iván en acción:

El tema de la charla me recordó que en alguna parte había visto algo al respecto y me acordé de un articulito breve de Scott Mitchell (MVP desde 2002, gurú de ASP.NET, creador de 4gyusfromrolla.net… en definitiva, todo un IT) sobre un tema muy similar. En él se presentan un par de herramientas que vienen a cubrir lo presentado por Iván en cuanto a registro de eventos:
- Enterprise Library 4.0: http://msdn.microsoft.com/en-us/library/cc512464.aspx
- Log4net: http://logging.apache.org/log4net/index.html
Ambas son herramientas OpenSource, siendo la segunda de ellas obra de la Apache Software Foundation como una versión de su log4j, la librería para registro de eventos en aplicaciones Java, mientras que la primera es creación del grupo de Microsoft “Patterns & Practices”.
¿Cuál es el beneficio de usar estas librerías? O más sencillamente, ¿por qué deberíamos molestarnos en usarlas? Estas librerías tienen como objetivo facilitar en registro de eventos en aplicaciones de escritorio hechas en .NET. Hoy en día los desarrollos de software disponen de una serie de herramientas, marcos de desarrollo (frameworks), librerías, etc. que permiten que las aplicaciones en general sirvan para el cometido para el que se han diseñado de manera aceptable. La calidad en el desarrollo de software sin embargo se encuentra ahora en otras áreas: zonas como el control de rendimiento y errores ocultos así como la trazabilidad de accesos y auditoría son elementos que hoy en día se demandan por parte de los compradores de software. Y es aquí donde el beneficio de este tipo de librerías se aprecia al máximo. Porque si bien anteriormente este registro de eventos se podía hacer de una manera artesanal y era aceptable (quién no recuerda pasar horas con el bloc de notas buscando mensajes específicos en ficheros planos de texto para poder explicar qué había pasado en un programa…) hoy nos encontramos con que la gran mayoría de fabricantes de software empresarial disponen en su catálogo de herramientas de control y monitorización de sistemas automatizadas (IBM, MS, Oracle…) que simplifican enormemente la vida a los administradores de sistemas y por tanto van a querer que nuestro software utilice cuanto antes. Y a nosotros como desarrolladores nos va a facilitar tareas como el traceado de nuestras aplicaciones, análisis de errores, mejoras en rendimientos, y otras como la distribución de aplicaciones (nos evitaremos errores por configuración errónea de los contenedores de estos registros), etc.
La Enterprise Library es un conjunto de bloques de aplicación, que se definen como un conjunto de clases, cada uno diseñado para una tarea de desarrollo específica, como:
- Registro
- Acceso a datos
- Gestión de excepciones
- …
El que nos interesa es el Bloque de Aplicación de Registro (Logging Application Block) que nos facilitará este registro de eventos. Antes de utilizarlo, deberemos configurarlo e indicar qué monitores de traza (trace listeners) vamos a emplear. Un monitor de traza es el objeto que se encargará de recoger la información que nos interesa y escribirla en un almacén de registro específico. La Enterprise Library tiene varios monitores predefinidos que pueden escribir la información en el Registro de Sucesos de Windows (Event Log), en una base de datos, en un fichero de texto, un mensaje de email, etc. También se nos permite crear nosotros mismos otros monitores para escribir en otras fuentes.
La configuración del Bloque de Aplicación de Registro también incluye categorías, filtros y formato de los registros. Las categorías nos permiten la clasificación de los registros, por ejemplo: “Errores de acceso a datos” o “Mensajes de Debug”. Cada registro pertenecerá a una categoría, y tendrá también una serie de propiedades como prioridad o severidad. Mediante el uso de diversos filtros basados en las categorías y propiedades de los mensajes de registro podremos ajustar el comportamiento del registro de eventos en distintos entornos: por ejemplo, en un entorno de pruebas podemos interesarnos por todos los mensajes de prioridad 5 o más, o bien en un entorno de producción podemos querer omitir todos los mensajes de la categoría “Mensajes de Debug”. Por último, el formato de los registros nos permitirá definir el formato que usaremos para almacenar la información en los mensajes.

Una vez hecho esto, tendremos que hacer uso en nuestros desarrollos de la API del bloque de aplicación de Registro de manera que creemos eventos en nuestros programas. Esto será tan sencillo como por ejemplo crear un objeto de tipo LogEntry en la parte Catch de una excepción, recoger en este objeto los detalles de la excepción mediante sus propiedades y finalmente registrar el evento mediante una llamada al método Write de la clase que representa el motor de registro enviándole como parámetro el objeto LogEntry. Esto generará que el Bloque de Aplicación de Registro evalúe la entrada contra los filtros definidos previamente y las categorías, determine si debe almacenarse y en caso positivo le aplique el formato adecuado antes de registrarlo.
Por ejemplo, en el blog de Tercer Planeta nos mostraban el siguiente código (sobre la versión 3.0 de la Enterprise Library, pero vale igualmente para 4.0)
public void EjecutarTarea(Tarea tarea)
{
try
{
Logger.Write("Preparando la tarea " + tarea.Descripcion);
tarea.Preparar();
Logger.Write("Ejecutando la tarea " + tarea.Descripcion);
tarea.Ejecutar();
Logger.Write(string.Format("Resultado de la Tarea (0): {1}",
tarea.Nombre, tarea.InfoResultado));
}
catch (Exception ex)
{
Exception outEx;
if (ExecutionPolicy.HandleException(ex, "TareasPolicy", out outEx))
throw outEx ?? ex;
}
finally
{
Logger.Write(tarea.Descripcion + " Finalizada");
}
}
Por su parte log4net emplea una aproximación similar (algunos elementos cambian de nombre, como los “appenders” en vez de los monitores de traza, o los “layouts” en vez de las reglas de formato) y proporciona los mismos resultados. Por defecto incluye más posibles destinos para el registro, como fuentes de datos ADO.NET, la traza ASP.NET, la ventana de consola, un buffer en memoria, etc. Lo que sí aporta log4net es la posibilidad de emplear una jerarquía de registros, de manera que se puede definir niveles para los registros (por ejemplo DEBUG, INFO, WARN y FATAL) que permiten clasificar de manera simple los niveles de los registros que se crean y que pueden usarse para establecer que un determinado appender responda sólo a los mensajes de un nivel concreto.
En definitiva, dos librerías que merece la pena considerar si hemos decidido dar dos cosas:
- Dotar a nuestras aplicaciones de calidad en todos sus extremos.
- Sufrir menos en nuestro trabajo, usando herramientas que nos simplifiquen tareas y sobre todo que nos permitan apagar fuegos más rápido. | | Técnicas de mapeado de texturas. Parte 1 | 26/11/2008 13:59 | CES Microsoft | Desarrollo | Shaders |
Para la implementación de shaders que es en lo que me encuentro inmersa en este momento, y sobre lo que ya traté brevemente en un artículo anterior, es muy común la utilización de distintas técnicas de mapeado de texturas. Su ventaja es que, sin consumir muchos recursos gráficos, nos permiten obtener efectos complejos y bastante realistas de manera sencilla.
Como introducción al tema, decir que un mapeado de textura sencillo consiste en indicar la correspondencia entre los vértices de un objeto 3D (x,y,z) y las coordenadas de una textura (u,v), tal y como se ve en la siguiente figura:

Sin embargo, si queremos conseguir mayor nivel de realismo, tendríamos que utilizar otro tipo de técnicas más avanzadas. Algunas de las más utilizadas son las siguientes:
§ Bump Mapping.
§ Normal Mapping.
§ Displacement Mapping.
§ Parallax Mapping.
Debido a la complejidad de las mismas, en este primer artículo nos vamos a centrar en las dos primeras técnicas. Ambas, tienen como objetivo dar aspecto de relieve a un objeto, a partir de una textura que modifica sus normales sin cambiar la geometría del mismo: es decir, modificamos la representación del “material” del objeto pero no su estructura 3D.
La única diferencia que existe entre una técnica y otra es la textura de normales que utilizamos en cada caso.
Bump Mapping NormalMapping
Bump Mapping
Las texturas que se emplean para realizar Bump Mapping son texturas en escala de grises que únicamente nos dan el valor de la altura. Los valores más próximos al negro se convierten en protuberancias y los más cercanos al blanco en hendiduras. Con ello lo que hacemos es “falsear” desplazamientos arriba y abajo de la verdadera superficie.
Normal Mapping
Las texturas que se emplean para realizar Normal Mapping son texturas RGB que a través de sus distintos canales, nos dan información sobre los ejes x, y, z. La componente azul, es la que más nos interesa en este caso, ya que es la que nos da la información sobre el relieve de la textura.
La mejor forma de ver el resultado que tienen estas técnicas es a través de un ejemplo práctico. Para ello hemos implementado el siguiente código en Nvidia FX Composer 2:
//Lo primero que hacemos es definir las matrices de transformación y los parámetros a //utilizar por defecto.
float4x4 WorldITXf : WorldInverseTranspose < string UIWidget="None"; >;
float4x4 WvpXf : WorldViewProjection < string UIWidget="None"; >;
float4x4 WorldXf : World < string UIWidget="None"; >;
float4x4 ViewIXf : ViewInverse < string UIWidget="None"; >;
float Timer : Time < string UIWidget = "none"; >;
float4 lightPos = (1.0f,1.0f,1.0f,1.0f);
//A continuación definimos las texturas que vamos a utilizar. La primera se trata de la //textura (u,v), que vamos a aplicar a nuestro objeto, en este caso, un plano.
texture WallTexture <
string ResourceName = "rockwall.jpg”;
string UIName = "WallTexture";
string ResourceType = "2D";
>;
sampler2D WallSampler = sampler_state {
Texture = <WallTexture>;
};
//Y la segunda se trata de la textura que se utiliza para almacenar la información de //las normales.
texture NormalTexture <
string ResourceName = "rockwall.tga";
string UIName = "Normal Map";
string ResourceType = "2D";
>;
sampler2D NormalSampler = sampler_state {
Texture = <NormalTexture>;
};
//Vertex Shader
// Necesitaremos la normal, binormal y tangente para poder situar la textura en el //espacio 3D, porque la función tex2D no tiene eso en cuenta. Para transformar los //vectores luz y posición se emplean la normal, binormal y tangente, que forman un //espacio de coordenadas propio (una matriz) que al multiplicarla nos dará los vectores //luz y posición en ese espacio de coordenadas.
void mainVS(float4 Position : POSITION0,
float3 Normal : NORMAL,
float3 tangent : TANGENT,
float3 binormal : BINORMAL,
float2 TexCoord : TEXCOORD0,
out float4 oPosition : POSITION0,
out float2 oTexCoord : TEXCOORD0,
out float2 oNormalCoord : TEXCOORD1,
out float3 lightVec : TEXCOORD2,
out float att : TEXCOORD3)
{
oPosition = mul(Position, WvpXf); //
float4 posWorld = mul(Position, WorldXf); // Posición del vértice en el mundo 3D
float3 light = normalize(lightPos - posWorld); //Obtenemos la luz en cada vértice
float3x3 TBNMatrix = float3x3(tangent, binormal , Normal);
lightVec = mul(TBNMatrix, light);
att = 1/( 1 + ( 0.005 * distance(lightPos.xyz, posWorld) ) );//calculamos la atenuación de la luz
oTexCoord = TexCoord;
oNormalCoord = TexCoord;
}
//PixelShader
// Tendremos que pasar los vectores luz y posición transformados al pixel shader que //los usará igual que hasta ahora para generar el componente difuso y especular.
void mainPS (float4 oPosition : POSITION0,
float2 oTexCoord : TEXCOORD0,
float2 oNormalCoord : TEXCOORD,
float3 lightVec : TEXCOORD2,
float att : TEXCOORD3,
out float4 oColor : COLOR)
{
float4 color = tex2D(WallSampler, oTexCoord); //Calculamos el color de la textura en cada punto
//La normal se extrae del nuestra textura NormalTexture de la siguiente manera:
float3 normal = 2.0f * tex2D(NormalSampler, oNormalCoord).rgb - 1.0f;
float3 light = normalize(lightVec); //Normalizamos el valor de la luz
float diffuse = saturate(dot(normal, light)); //Calculamos el color difuso
oColor = att * color * diffuse; //Obtenemos el color final
}
//Y aplicamos la técnica deseada
technique Main
{
pass p0
{
VertexShader = compile vs_3_0 mainVS();
PixelShader = compile ps_3_0 mainPS();
}
}
La imagen de la izquierda se corresponde con un mapeado de textura básico, y la de la derecha aplica dicha textura junto con un Normal Mapping.

Comentar como aspecto interesante, que las texturas de normales se puede crear con el plugin para Photoshop de NVidia, o con el programa CrazyBump entre otros.
| | Microsoft Innovation Centers | 06/12/2008 13:37 | CES Microsoft | Varios | SQL Server |
Acortar la brecha digital a través de la difusión desde los centros de la sociedad digital y constituir auténticos polos de conocimiento que favorezcan la transferencia tecnológica es el reto final de los Centros de Innovación de Microsoft. Esto se consigue generando un interés común por parte de todos los implicados: por un lado, las empresas, a las que se dan a conocer los beneficios que conlleva la innovación; por otro, las administraciones públicas, decididas a promover el cambio.
Aumentar el nivel de I+D+i, incrementar la penetración de las TIC en las empresas, mejorar el conocimiento sobre cómo la tecnología cambia los procesos de negocio de las compañías, multiplicar el número de empresas innovadoras de una Comunidad... son los desafíos a los que dan respuesta los Centros de Innovación. Así, a través de ellos y de otras iniciativas, intentamos proporcionar las mejores herramientas a los mejores equipos humanos, hacer que sean capaces de desplegar todo su potencial y, gracias a él, ayudar a otros a innovar en sus negocios y sus proyectos. Por ello, facilitamos el más rápido acceso a las últimas tecnologías, ayudamos a las compañías que desarrollan software a definir mejores arquitecturas, a solucionar problemas. En definitiva, a ser más competitivas.
Las tecnologías de información son un aliado estratégico para las organizaciones y las personas. Se dice que la información es poder. Hemos crecido en una industria emergente que está posicionada prácticamente en todos los aspectos de la vida empresarial y personal.
La red de MIC en España está formada por 8 centros, 6 en funcionamiento y 2 de próxima creación, encargados de divulgar la filosofía Microsoft entre la comunidad de empresas y desarrolladores.
1. Walqa MTC (Instituto Tecnológico de Aragón):
http://aragonmtc.com/cs2/Default.aspx
En la actualidad son MTC (Microsoft Technology Center), de los cuales hay 12 en el mundo y 4 en Europa. Como tal es un centro dedicado a dar apoyo a los Fabricantes de Software (Independent Software Vendors o ISVs), entendiendo como tal a empresas que desarrollan software en forma de producto comercializado a través de canales de distribución. Representa un apoyo personalizado a sus necesidades concretas en la fabricación de productos.
Asimismo forman parte de la Plataforma INES: Plataforma Tecnológica Española de Software y Servicios http://www.ines.org.es/index.php
2. MIC Movilidad Boecillo:
http://www.micmovilidad.es
En noviembre de 2004, el presidente de la Junta de Castilla y León, D. Juan Vicente Herrera, firmó en Seattle un acuerdo de colaboración con Microsoft, para la creación de un Centro de Innovación que promoviera el desarrollo de la sociedad de la información y el conocimiento en la región, y apoyara el crecimiento y consolidación del sector TIC. El centro se puso en marcha en Junio de 2005.
El objetivo del Centro de Innovación en Movilidad es crear en torno al mismo, un polo de conocimiento que oriente su actividad hacia la innovación en soluciones de movilidad, de forma que sirva para impulsar el desarrollo de la Sociedad de la Información y favorecer el progreso de las empresas TIC (Tecnologías de la Información y las Comunicaciones).
Su labor de desarrolla en torno a 3 líneas de trabajo:
· Transferencia tecnológica
· Innovación
· Promoción y difusión para la generación de demanda
Como labor principal desarrollan Masters sobre movilidad para empresas o grupos de usuarios sobre:
· Metodología
· Desarrollo
Además de esto tienen otra serie de actuaciones:
Cada mes llevan a cabo un seminario público sobre novedades en movilidad Windows Mobile.Publican artículos en diversas publicaciones como MSDN, PCWorld,…
Colaboran con la universidad impartiendo charlas de Movilidad con valor efectivo en créditos.
Han colaborado en la creación y desarrollo de comunidad de desarrolladores en Movilidad.NET.
Llevan a cabo la precertificación de aplicaciones con el calificativo de “Designed for” Windows Mobile.
3. MIC Integración Santander:
http://www.ciin.es
Surge de un acuerdo de colaboración entre el Gobierno de Cantabria y Microsoft Ibérica, siendo inaugurado de forma oficial el 16 de enero de 2006.
La actividad de este MIC se realiza alrededor de estos ejes:
· Capacitación: transmitir a las empresas las últimas novedades en tecnologías de integración y desarrollo.
· Innovación: desarrollar pilotos y pruebas de concepto que permitan un mejor aprovechamiento de nuevas tecnologías y metodologías.
· Aumento de la demanda: desarrollar acciones divulgativas, eventos sectoriales y foros técnicos que faciliten el interés por las nuevas tecnologías.
· Herramientas Microsoft: analizar y transmitir las novedades tecnológicas de sus herramientas de integración.
Han fomentado la creación de 2 grupos de usuarios con los cuales colaboran de manera activa:
· Grupo de usuarios .NET de Cantabria: Nuberos.NET.
· Grupo de usuarios SharePoint de España: SUGES.
También realizan otras labores como:
· Acciones de Consultoría.
Formación especializada a fabricantes de Software.
Pre certificación de aplicaciones.
Sesiones OneToOne sobre problemáticas concretas.
4. MIC Productividad Manresa:
http://www.productivitycenter.org
El Centro Microsoft de Innovación en Productividad es una iniciativa conjunta entre Microsoft, el CIDEM, Caixa Manresa, el Ayuntamiento de Manresa, la Cámara de Comercio de Manresa y el CTM Centro Tecnológico dónde se ubican las instalaciones del Centro de Innovación en Productividad.
El Centro fue constituido a finales de Septiembre del 2006, iniciando su actividad en Enero del 2007.
Es una fundación sin ánimo de lucro cuyo objetivo es ayudar a las empresas a incrementar la productividad de sus trabajadores. Para ello, el Centro ayuda a las empresas a innovar en sus procesos de negocio mediante el uso de tecnologías que aumentan el potencial de sus empleados. Por tanto su actividad se orienta principalmente hacia los niveles de decisión empresariales: dirección, gerencia, marketing, etc.
El centro facilita las mejores herramientas a los mejores equipos humanos,colabora con ellos para que sean capaces de desplegar todo su potencial y ayuda a innovar en sus negocios .
5. MIC Embedded Technologies Mondragón:
http://www.pologaraia.es/
Nace con el objetivo de impulsar la innovación y el uso de las Tecnologías de la Información y las Comunicaciones (TIC) específicamente en soluciones embebidas en dispositivos o robóticas como vía para contribuir al crecimiento económico de la región, comenzando su actividad en julio de 2008.
Esta iniciativa cuenta con el apoyo del Gobierno vasco, la Diputación Foral de Guipúzcoa, la Asociación de Industrias de las Tecnologías Electrónicas y de la Información del País Vasco (GAIA) y firmas y entidades representativas de Guipúzcoa, como Ikerlan, la Universidad de Deusto o Mondragón Unibersitatea.
Las áreas de trabajo sobre las que se centra este centro son:
· Promoción tecnológica
· Formación
· Asesoramiento
· Proyectos de I+D+i. Certificación-Homologación de sistemas embebidos.
6. Bizkaia European Center for Citizen Services:
MIC de próxima creación, nace de un convenio entre Diputación Bizkaia, Lantik/Biskaytik y Microsoft Ibérica y su inicio de actividad se planea para Noviembre 2008.
Su foco será lo que Microsoft denomina Citizen Services Platform.
7. MIC for Tourism Services Mallorca:
MIC creado mediante un convenio de reciente firma entre Microsoft, Govern Balear y Clúster Turistec, que comenzará su actividad en 2009.
El Centro de Innovación en Turismo permitirá a las empresas del sector turístico mejorar su productividad y lanzar nuevos servicios innovadores con los que puedan crear experiencias enriquecedoras para sus clientes, aprovechando las últimas tecnologías disponibles: el nuevo mundo de la Web 2.0, sistemas de información en entorno móviles, nuevos dispositivos táctiles como el revolucionario Microsoft Surface, etc.
8. Centro de Excelencia Software Microsoft de Navarra(CESNAVARRA):
http://www.cesnavarra.net
El Centro de Excelencia Software Microsoft.Net de Navarra, tiene como origen un acuerdo de colaboración entre el Gobierno de Navarra y Microsoft Ibérica SRL. Para llevar a cabo este acuerdo, el Gobierno de Navarra designó como gestor del Centro de Excelencia al Centro Europeo de Empresas e Innovación de Navarra (CEIN,SA) instrumento del Gobierno de Navarra al servicio de las pymes y emprendedores/as, que promueve la mejora competitiva de las empresas de la Comunidad. Este MIC comienza su actividad en Enero de 2007.
Las líneas de actividad del Centro de Excelencia Software Microsoft se centran en la divulgación y difusión de herramientas y tecnologías de software Microsoft dentro del entorno de la comunidad foral, con el objetivo de mejorar el conocimiento y la calidad de desarrollo de los profesionales y compañías TIC de Navarra.
Dentro de estas líneas de actividad, el Centro de Excelencia Software Microsoft actúa como un impulsor dentro de la Comunidad Foral de las últimas tecnologías Microsoft para posibilitar el acceso de los profesionales y empresas TIC a estas, facilitando su uso en la generación de negocio.
Los servicios que actualmente centran la actividad de este MIC son:
· Formación y difusión de tecnología Microsoft de última generación
· Proyectos piloto.
· Como complemento a estos se desarrollarán otra serie de servicios que completarán el arco de las necesidades de las empresas y profesionales TIC:
· Consultoría especializada y asesoramiento.
· Plataforma de Prueba y Rendimiento de soluciones Microsoft.
· Pre-certificación de aplicaciones.
· Librería de software y desarrollos.
| | S + S <> SaaS | 18/12/2008 9:16 | CES Microsoft | Desarrollo | S+S |
En este mundo de ensalada de siglas que son las TIC, este mes quiero intentar explicar la ecuación arriba presentada. Aunque puede parecer evidente que S+S no es lo mismo que SaaS creo que merece la pena comentarlo un poco, porque esas “S” se parecen bastante en ambos casos.
¿De qué estamos hablando? Del futuro de la programación (o presente, en las empresas TIC innovadoras). El software y los servicios. O los servicios de software. Y el concepto que Microsoft y otros fabricantes de software tienen del mismo.
El concepto “SaaS”, o “Software as a Service”, se basa en la idea de que dado que las comunicaciones entre sistemas (básicamente nuestro acceso a Internet “urbi et orbi”) son cada día más rápidas y frecuentes, el futuro del software ya no reside en las aplicaciones “dedicadas” tradicionales (es decir aquellas que instalamos en nuestro PC y por tanto consumen recursos del mismo: ocupan espacio en disco, necesitan memoria y CPU para ejecutarse, etc.) sino en aplicaciones conectadas a uno o varios servicios simultáneamente por ejemplo, a través de un navegador web (en este caso casi no tienen “footprint” o huella en cuanto a espacio de disco y su consumo de recursos es menor).

Por su parte, Microsoft cree que el modelo más adecuado en cambio se trata del “S + S” o “Software más Servicios”, donde el software dedicado se complementa de manera efectiva con unos servicios que residen en la “nube” de Internet o nuestras intranets empresariales. Este modelo defiende que así aprovecha lo mejor de ambos mundos, donde a la potencia de las aplicaciones de escritorio la añade la flexibilidad que aporta el uso de los servicios. El mensaje en este caso es que las denominadas Productivity Applications, o aplicaciones que los usuarios emplean en su trabajo diario como Microsoft Excel, Word, Outlook, etc. necesitan tener unas características de usabilidad, capacidades, riqueza, etc. que sólo son posibles si estas aplicaciones son un software específico.

Por poner algunos ejemplos concretos, podemos nombrar a Google Docs como aplicación SaaS o a Microsoft Word como aplicación S+S. ¿Mejores o peores? Lo cierto es que cada una tiene su caso de aplicación concreto. Pero también que si a una aplicación rica como Microsoft Word (con capacidades por ejemplo para aplicar formatos y temas diversos con 1 click, revisión ortográfica completa, gestión de enlaces y TOCs, flexibilidad completa para incorporar tablas, excels, gráficos, smart art, etc.) la añadimos la potencia en servicios que le aporta SharePoint… es como si S + S fuera “SaaS con hormonas”.
Además de todo esto, tenemos el hecho de que los mismos servicios que soportan estas Productivity Applications pueden apoyar múltiples aplicaciones, de manera que también a nivel servidor vemos que S+S se presenta como una solución más completa que SaaS.

Una vez vista y explicada a grandes rasgos la arquitectura S+S, pasemos a un ejemplo práctico de desarrollo. En este caso vamos a desarrollar un pequeño complemento para Word 2007 con el que desarrollaremos un nuevo elemento de la cinta (o “ribbon”) de aplicaciones al que dotaremos de un botón con el que recuperaremos información de nuestro sitio Microsoft Office SharePoint Server via Web Services y que tendremos a nuestra disposición en Word. Vamos a emplear para ello Microsoft Visual Studio 2008 Professional y Visual Studio Tools for Office (VSTO).
Lo primero que hemos de hacer es crear nuestro proyecto. En este caso se trata de un proyecto de C#, para Office 2007 de tipo “Complemento de Word 2007”
Una vez se ha creado el proyecto, añadimos un nuevo elemento de tipo Cinta al mismo.

Esto nos abre la ventana de diseño de la cinta. Añadimos una nueva ficha que llamamos CES en nuestro caso (hay que hacer click con el botón derecho del ratón sobre una zona limpia y seleccionar “Agregar ficha de la cinta de opciones”) y a esta le adjuntamos un Grupo y unos Botones, mediante los que accederemos a nuestra funcionalidad específica. Los ponemos bonitos (nombre, textos, iconos y demás) e iremos haciendo doble click en cada uno de ellos para escribir el código que ejecutarán.

Como ejemplo sencillo vamos a crear un código que automáticamente inserte en el documento un texto (que será nuestra firma) al pulsar el botón. El código será el siguiente:
private void btnFirma_Click(object sender, RibbonControlEventArgs e)
{
Firma();
}
private void Firma()
{
// Seleccionamos el rango activo
Microsoft.Office.Interop.Word.Range range =
Globals.ThisAddIn.Application.Selection.Range;
// Insertamos nuestro texto
range.Text = "Rafael Flores\n";
range.Text += "CES Microsoft .NET Navarra";
}
El resultado es este:

Bien, funciona, pero si nos quedamos en esto no tenemos esa utilidad de S+S de la que hemos venido hablando, ¿no? Entonces vamos al siguiente paso, conectar con nuestro SharePoint y traer a nuestro documento Office información que podamos usar. Vamos a hacer dos ejemplos sencillos que valen para mostrar la técnica pero hay que destacar que con algo más de trabajo podemos hacer que nuestros Word, Excel, Powerpoint, Outlook, etc. recuperen información de nuestros sistemas
Lo primero que vamos a hacer es agregar una referencia a los servicios Web de Sharepoint que nos interesan (hablamos sobre esto en un artículo anterior que está disponible aquí). Por simplicidad usaremos un servicio Web, que se basa en el .NET Framework 2.0, pero si esto fuera un desarrollo para producción recomendaríamos usar WCF de .NET Framework 3.5 ;)
Para definir este servicio, pulsamos con el botón derecho del ratón sobre el nombre de proyecto y elegimos “Agregar referencia de servicio”. Ahora tenemos que “escarbar” un poco para añadir nuestro servicio Web: pulsar “Avanzadas…” en la pantalla que se nos muestra y en la siguiente “Agregar referencia Web”.


Llegamos por fin a la pantalla que nos interesa, donde debemos indicar la Dirección URL del servicio Web al que nos conectaremos y darle un nombre ya que el nombre por defecto ayuda poco. Pulsamos “Agregar referencia” y listo, ya podemos usar ese servicio Web en nuestro proyecto.

Para probarlo vamos a programar el código del segundo botón “Listas SharePoint”. Este botón simplemente se conectará a nuestro SharePoint y recuperará los nombres de todas las listas que tiene definidas. Con eso veremos que todo funciona como esperamos. El código que usamos es este:
private void EncuentraListas()
{
String listName;
XmlNode listNodes;
XmlAttributeCollection nodeAttribs;
ListsCESWS.Lists listService = new ListsCESWS.Lists();
// Creamos las credenciales que nos permiten conectarnos a
// SharePoint y las asignamos al servicios
System.Net.NetworkCredential myCred = new System.Net.NetworkCredential(USUARIO, PASSWORD);
listService.Credentials = myCred;
// Invocamos el método GetListCollection del servicio Web
lis |
|
| | | |