Es SharePoint una buena plataforma de desarrollo?

«NO» rotundo, según Jeffrey Palermo (Solution Architect MVP y veterano de la guerra en Irak).

Carlos Segura Sanz me comentó del artículo la última vez que hablamos. El artículo se llama “SharePoint is not a good development platfom” (hmmm… mi traducción no es mala, después de todo). Para que se eviten la lectura de todo el rollo, la razón que el amigo Jeffrey da es que SharePoint no es una buena plataforma de desarrollo porque SharePoint tiene que correr en un servidor, y no se puede usar en Windows XP o Vista.

Bueno, que se puede decir al respecto… el mundo de MVP’s es una representación del mundo real, y en el mundo real hay un montón de idiotas. Afortunadamente no todos los componentes del mundo real son idiotas, lo que se debe aplicar también al mundo de MVP’s. Por otro lado, un posting del tipo de nuestro amigo Jeffrey dice más sobre el autor mismo que sobre SharePoint.

Veamos: SharePoint ejecuta bajo un servidor, porque servidores son mucho más estables que desktops, porque están especialmente diseñadnos para ejecutar programas (“Servers”) que tienen que seguir funcionando bajo cualquier condición, porque son más seguros, y sobre todo y lo más importante, porque a Microsoft le dio la gana de hacerlo así. Y contra el último argumento no hay nada que decir. Si alguien me viene con que no le gusta el software que yo diseño, pues simplemente que no lo compre, y que no venga a sobarme la vida.

El razonamiento que nuestro amigo Jeffrey sigue es que para desarrollar con SharePoint necesitamos un servidor. Completamente falso, eso pasa cuando arquitectos se meten en el mundo de los machos (perdón, me estoy volviendo machista, quiero decir de las machas y los machos), e intenta hacer trabajo de hombres (huyyyy… otro comentario machista… las dos personas que leen este asunto van a dejar de hacerlo desde ahora mismo). Si se tiene instalado Visual Studio en Windows XP o Vista, para hacer desarrollo de SharePoint lo único necesario es copiar los dll’s en el computador local. Y, para acabar de terminar, aunque no se puede hacer depuración localmente, se puede hacer remotamente (http://www.gavd.net/servers/sharepoint/sps_item.aspx?top=cod&itm=312), cuando se instala el software desarrollado en el servidor.

Y aunque no fuera así, es válido decir que SharePoint no es una plataforma de desarrollo porque no se puede desarrollar en XP? Y todas las posibilidades que SharePoint presenta listas para ser usadas en desarrollo tenemos que perderlas? SharePoint es la aplicación más extensible de toda la plataforma de Microsoft, ningún otro servidor da la libertad de crear aplicaciones completas, que usan una infraestructura común, probada y requeteprobada. Tenemos que prescindir de esta plataforma tan rica porque no se podría (eventualmente) desarrollar en XP? Sería un desperdicio imperdonable… No es por nada que Steve Ballmer ha afirmado que “…SharePoint es la plataforma o Sistema Operativo definitivo para la capa intermedia (middle tier)» (http://geeks.ms/blogs/gvelez/archive/2007/03/26/sharepoint-como-sistema-operativo-os.aspx), y algo así no se consigue sin ser una muy buena plataforma de desarrollo.

Pero bueno, también es una pérdida de tiempo ponerse a comentar sobre un comentario de un veterano de la guerra en Irak. Al fin y al cabo, el solo hecho de estar orgulloso de algo así demuestra una falta crónica de buena alimentación en la infancia, lo que trae como consecuencia una gran escasez de células grises en la edad adulta…

Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

19 comentarios sobre “Es SharePoint una buena plataforma de desarrollo?”

  1. Bueno con este nick que comentario se espera?.. no no, despues de desarrollar un tiempo con sharepoint debo decir que es bastante desagradable. Un desarrollador ASP.NET nunca estará contento de programar en sharepoint ya que tiene problemas para hacer debug y por consiguiente a testear (comparado con ASP.NET 2.0 común y corriente). La única solución, y digamos que es pacial, es utilizar los Smart Part de Jay Tielens para el desarrollo pero aún así no podemos decir que los Web Parts son el 100% de un desarrollo en Sharepoint, no?
    Por lo tanto MI respuesta a tu pregunta de si Sharepoint es buena buena plataforma de desarrollo es: «No, hay mejores».

    Saludos.

  2. Gustavo, se te veía cabreadillo tras leer el artículo de Jeffrey. 🙂

    La verdad es que como le ha pasado a Carlos, me he reído bastante leyendo tu post.

    No obstante, por primera vez en mi vida voy a disentir un poquito contigo, no mucho pero sí en algo.

    Creo humildemente que es correcto admitir que no es fácil desarrollar con SharePoint en sistemas no SharePoint, definir esta afirmación como que SharePoint no es una buena plataforma de desarrollo es ahí sí, mezclar tomates con pepinos y decir que sus colores son parecidos.

    Efectivamente, existen soluciones muy variadas para facilitar el desarrollo con SharePoint como lo de las dlls que comentas y lo de la depuración remota, pero ni lo que dice Jeffrey ni tampoco pintarlo como algo «facilongo», es decir, me atrevo a decir bajo mi punto de vista y según mi pequeña experiencia comparada contigo o con Carlos, que SharePoint no me parece la mejor plataforma de desarrollo, quizás la calificación de buena es errónea, pero sí puedo analizarla como que no es la mejor, pero de igual forma, tan poco tan mala como lo pinta Jeffrey.

    A mí me encanta SharePoint, estoy emocionado con él, me encanta desarrollar con y para SharePoint, pero reconozco que a veces la tarea de desarrollo se vuelve un poco tediosa porque la depuración y otras características, no están tan acopladas como en el resto de productos. Pero aunque eso sea cierto,… no creo que se pueda catalogar a SharePoint como buena plataforma de desarrollo, creo que eso es confundir y mucho las cosas.

    Gustavo, es bueno que haya opinones para todos los gustos como la de Jeffrey, nos ayuda a crecer y plantearnos discusiones interesantes como esta. 🙂

  3. Hola Carlos (el que odia a SharePoint, no el que se esta muriendo de la risa),

    Depurar en SharePoint no tiene ningun problema, local o remotamente. O mejor dicho, remotamente si tiene sus problemas, pero es una cosa de Visual Studio, no de SharePoint. Desarrollo con SharePoint no es lo mismo que desarrollo con ASP.NET… se podria comparar mas con desarrollo para BizTalk, pero ese es otro asunto. Pero al final es una cuestion de gustos: si no te gusta desarrollar para SharePoint, ni hablar del asunto… el mundo es ancho y ajeno y hay espacio para toda clase de desarrolladores. A mi sí que me gusta un montón…

    En cuanto al Smart Part de Jan Tielens, está bien para hacer desarrollos de WebParts para sitios sin grandes cargas de usuarios. Pero hay que tener en cuenta que SharePoint esta diseñado para recibir cargas de cientos de miles de usuarios, y en estas condiciones el penalti que hay que pagar por el uso de algo que te ahorra un par de horas de trabajo es demasiado grande (en capacidad de respuesta del sistema).

    Por otro lado, el equipo de desarrolladores de SharePoint en Microsoft fue el que concibió la idea de las WebParts, y las introdujo (en forma limitada) por primera vez en SharePoint 2001. En la versión 2003 desarrollaron el FrameWork completamente, y con tanto éxito, que Microsoft lo introdujo en el DotNet 2.0. Así que sí que podemos decir que desarrollo de WebParts es 100% de desarrollo de SharePoint; lo que no podemos decir es que desarrollo de SharePoint es solamente desarrollo de WebParts.

    Un saludo,

    Gustavo

  4. O sea, un tio que tiene un blog en geeks.ms que es mera plataforma publicitaria para MS diciendo que Jeffrey es un gillipollas. Debería darte vergüenza y leer su blog en más profundidad. El no se dedica a conocer profundamente una sola tecnología y cerrarse del mundo.

    Pero eso de que el mundo está lleno de idiotas te ha quedado muy mal y cualquier respeto que puediera tener por ti, acabo de perderlo. No es necesario insultar a una persona porque no estés de acuerdo con él. Y Gracia tampoco me hace la verdad…puede que no me haga gracia la comedia barata que es insultar al próijimo.

    Y si te abres al mundo y no te enfocas sobre una empresa/tecnología verás y entenderás lo que dice Jeffrey.

  5. Hola Jorge,

    Si, en efecto, leer este tipo de artículos me irrita bastante. En realidad, lo que me irrita es la arrogancia que lees entre las palabras, algo así como «yo soy el conocedor de la verdad absoluta, y todo el mundo tiene que hacer lo que yo digo…» (estaba a punto de agregar «o sino empiezo una guerra para mostrar que yo tengo la razón», pero me he arrepentido y no lo escribo  8-).

    Con comentarios como el tuyo y el de Carlos me siento mucho más confortable: tú piensas algo, lo haces saber, yo pienso algo diferente, lo discutimos, llegamos a una conclusión (o no), y seguimos tan buenos amigos como siempre. Las opiniones de todo el mundo me interesan sobremanera, y las respeto igualmente.

    En cuanto a SharePoint, te concedo el punto de que no es un sistema fácil de programar, muchas veces no es consecuente en su Modelo de Objetos, y puede (y debe) mejorar en muchos aspectos. Probablemente es allí mismo, dentro de la contradicción de términos, por lo que es tan interesante trabajar con él: es una lucha constante con y contra el sistema, una aventura cotidiana, y, la verdad sea dicha, no te aburres usándolo y programándolo.

    Un saludo,

  6. Hola Jorge,
    Si, en efecto, leer este tipo de artículos me irrita bastante. En realidad, lo que me irrita es la arrogancia que lees entre las palabras, algo así como «yo soy el conocedor de la verdad absoluta, y todo el mundo tiene que hacer lo que yo digo…» (estaba a punto de agregar «o sino empiezo una guerra para mostrar que yo tengo la razón», pero me he arrepentido y no lo escribo 8-).
    Con comentarios como el tuyo y el de Carlos me siento mucho más confortable: tú piensas algo, lo haces saber, yo pienso algo diferente, lo discutimos, llegamos a una conclusión (o no), y seguimos tan buenos amigos como siempre. Las opiniones de todo el mundo me interesan sobremanera, y las respeto igualmente.
    En cuanto a SharePoint, te concedo el punto de que no es un sistema fácil de programar, muchas veces no es consecuente en su Modelo de Objetos, y puede (y debe) mejorar en muchos aspectos. Probablemente es allí mismo, dentro de la contradicción de términos, por lo que es tan interesante trabajar con él: es una lucha constante con y contra el sistema, una aventura cotidiana, y, la verdad sea dicha, no te aburres usándolo y programándolo.
    Un saludo,

  7. Gustavo, decís que los SmartParts no son performantes comparados con webparts de sharepoint no? Pero para hacer estos ultimos tenemos que hacer un override de Render(HtmlTextWriter writer).. y meter TODO el codigo de nuestro webpart ahi. Eso es perder muchisimas horas, no algunas.

    Como desarrollador ASP.NET estoy acostumbrado desde el 2001 a que puedo diseñar mi Control de Usuario, WebPart, o el nombre que te guste para definir una porcion de funcionalidad reutilizable de manera GRAFICA (modo diseño) y además puedo programarlo desde el code-behind accediendo propiedades y metodos de cada control que incluí en tiempo de diseño. Además, puedo debuggear la parte que me venga en ganas sin ningún problema.

    Como desarrollador de Sharepoint 2007…. bueno, ni hablar.. ya me frustré.

    No creo que sea problema de Visual Studio 2005 depurar remotamente en sharepoint. Me explico, si yo creo un framework/plataforma de desarrollo que se va a programar utilizando VS2005 y no le doy soporte remotamente.. le hecho la culpa a VS2005? no, yo lo hice, yo elegi la arquitectura.. yo tengo la culpa 🙂 por lo que, esto se aplica a los chicos que crearon sharepoint 2007.

    Bueno, es mi forma de ver esta plataforma desde el punto de vista de ser desarrollador ASP.NET desde hace ya varios años.

    Saludos.

  8. Con todos los respetos: SPS no es una buena plataforma de desarrollo por que no es una plataforma de desarrollo, es una plataforma de comunicación hecha grande y como tal se queda corta cuando quieres desarrollar algo “grande” (es decir, cualquier cosa “real”), por no mencionar que se queda corta porque la gente piensa que es una plataforma grande y acabas desarrollando en SPS algo que no tendría que haberse hecho desde el principio en SPS. Y todo eso se nota mucho cuando:

    Tienes que desarrollar algo con listas de SPS cuando en realidad tendría que ser una base de datos. Si, el SPS te da permisos y mantiene históricos pero no: guarda integridad, referencias, vistas, utilizar SQL para sacar datos en lugar de ESO… etc. etc.
    Tienes que meter una línea de código en un formulario para una validación tonta y… ¿y qué cojones haces?¿metes JS a mano en la página?¿te reprogramas todo el control webpart de editar el elemento para meter lo que quieres?¿utilizas InfoPath para matar moscas a cañonazos…?
    Tienes que hacer algo transaccional…. valeeee, siiiii, se puede hacer, pero estoy convencidísimo que ni un 1% de los Webparts que se han programado que meten datos en un dos listas son transaccionales porque nadie tiene ni idea de cómo hacerlo (aunque se puede hacer… me parece :D)
    Ejemplo tonto: tienes 2 Webparts, tiene que compartir cierta configuración… ¿donde la guardas?¿en las propiedades de los Webparts y haces algún invento para que sean las mismas?¿en el web.config y lo llenas de “basura”?¿en una lista por ahí perdida de la que quizás no sepa su URL y tendría que guardar la URL por configuración vete a saber por dónde?
    Por no mencionar las locuras que hace el modelo de objetos a veces… aquí no me meto porque estoy convencido de que todo el que lo ha programado tiene su “característica” favorita que le volvió loco un par de días (por no mencionar que en esos dos días no hizo más que perder el tiempo…)

    En fin, que conste que al final siempre se escucha algo así como “si, si lo mejor sería utiliza otra cosa que no sea el SPS, pero como ya lo hemos pagado…” 😛

    Ala, ya me he desfogado, me voy a cenar tranquilo 🙂

  9. Hola Carlos,
    — SmartParts: El SmartPart introduce una nueva capa de código (el archivo ascx) que no es compilado sino interpretado. Código interpretado es mucho más lento que código compilado (aunque el CLR lo cachee por algunos segundos despues de compilado). Cuando estas programando WebParts para SharePoint hay que tener en la cabeza todo el tiempo que la aplicación tiene que funcionar para cientos de miles de usuarios, no para uno o dos, y que tiene que tener el mismo rendimiento para uno o para cien mil usuarios. Programando de esta forma, se corren menos riesgos, y podemos dormir más tranquilos.
    — WebParts: Desde la versión 2001 se le ha estado pidiendo a Microsoft que se invente una manera de crear gráficamente el layout de WebParts. Lo han intentado varias veces (que yo sepa), pero por el problema que te cuento más arriba, nunca lo han podido hacer. También existe el problema de ghosting y unghosting que afecta (muy) negativamente el rendimiento de SharePoint, y que se puede agravar utilizando técnicas como la del SmartPart.
    — Depuración: Depurar WebParts localmente no tiene ningún problema técnico, y Visual Studio lo puede hacer con los ojos cerrados. Para depurar remotamente hay que instalar algún software en el servidor (http://www.gavd.net/servers/sharepoint/sps_item.aspx?top=cod&itm=312) y «encadenar» (Attaching) el proceso a depurar. En teoría es posible de realizar también sin problemas, pero en realidad la depuración remota de Visual Studio nunca (desde cuando se llamaba «Visual Interdev») ha funcionado correctamente, con ninguna clase de procesos (o mejor dicho, a veces funciona, y la mayoría de las veces no). Como te decía anteriormente es un problema de Visual Studio, y no de SharePoint: Visual Studio ve solamente un proceso que está ejecutando, y corre ciertas rutinas de muy bajo nivel (más abajo del CLR mismo, prácticamente a nivel de assembly) para investigar qué es lo que está pasando, y ni se entera que es un proceso utilizado por otro(s) proceso(s) (los de SharePoint).
    Un saludo,

  10. Gustavo:
    ok, el smartpart no es muy bueno en rendimiento, pero no todos hacemos webparts para cientos de miles de usuarios 🙂
    Desde el 2001 MS intenta hacer webparts que puedan diseñarse y no lo logra? PLOP!! en 6 años se le podría haber ocurrido a alguien hacer un smartpart compilado..
    En fin, yo solo quería mostrar que para que sea una plataforma de desarrollo le falta bastante, comparado con productos de MS del 2001 inclusive.

    Uno que pasaba por aquí: por lo de desarrollar contra listas cuando deberia haberse hecho contra un SQLServer creo que ya se quien eres o al menos donde trabajas 😛

  11. Realmente respeto los comentarios de todos, pero este post es muy poco profesional y de verdad Gustavo deberias revisarte porque este post pone en duda tu capacidad profesional. No puedes criticar a alguien yendote a lo personal hablando asi solo porque tienen una opinion diferente a ti.

    Mi humilde opinion.

    Un Saludo.

  12. Parafraseando el artículo original:

    < >

    Que quiere decir:

    < >

    Yo sólo sé que la gente que ha tenido el gusto de desarrollar para Sharepoint (entre los que no me incluyo) con los que he podido hablar han sufrido hinchazones dolorosas en la zona genital. Y su tasa de palabrotas por frase aumenta de forma exponencial durante el tiempo en el que tienen ese gusto. 😛

  13. Pues yo he desarrollado en varios entornos, lenguajes y tecnologías. Al igual que Jeffrey no pretendo decir que MOSS apesta, pero sólo puedo resumirlo así, al querer cambiar a la empresa de plataforma para este proyecto desarrollé en una semana con un lenguaje de opensource (php) un sitio que hace lo mismo y mejorado con los requerimmientos para la segunda versión sin ningún problema, con MOSS en cambio, llevo 3 meses y mi desarrollo es una basura desarrollada con smartparts que tienen validaciones tontas hechas con javascript a manita en el editor de codigo de MOSS, la verdad es que me estresa bastante el usar esta tecnología ya que a pesar de teer ya tiempo parece demasiado experimental.

    En mi humilde opinion y experiencia.

  14. Sigo con este maldito sitio de MOSS, no sé porque no renuncié hace un mes, de todos modos no me pagan por malo, pero bueno, no sé si a alguno de ustedes le haya sucedido que por alguna razón una de sus aplicaciones no borre elementos de un lista cuando debería de hacerlo, no se si esto sea cuestión de permisos…

    Les cuento el caso de mi tonta aplicación con la smartpart, con el control de usuario, generé un code behind que en uno de sus prcesos después de validar los valores del formulario, realiza el borrado de varios registros de otra lista, y funciona perfecto, el problema que tengo es el siguiente.

    Para hacer el deploy de la solución, hice un backup de sitio de desarrollo de una MV con stsadm en Virtual PC, y lo restaure en el sitio de preproduccion en un servidor real, y cuál va siendo mi sorpresa de que aunque los usuarios fueron agregadod como dueños y administradores del sitio con control total, no puede la aplicación de la smartpart conmi control de usuario hacer el borrado de estos archivo, ami me huele que son los permisos pero no sé no soy un experto como la mayoría de aquí y sinceramente estoy desesperado, necesito cobrar porque llevo un mes sin recibir ni un centavo a causa de los atrasos que he tenido por esta tecnología…

    Sí hubiera hecho la propuesta en php lo tendría desde hace dos meses.

    ya que Gracias desde ya..

    Saludos

  15. Solo decir q sharepoint es otra «cagadita premeditada» más de microsoft para seguir estafando a todos los desarrolladores y empresas condenados a usar esta decadente tecnología…
    es lento, inestable y se pasa por el forro, el esfuerzo global de todos los que se preocupan por estandarizar internet y realizar publicaciones de calidad.

    Por desgracia a veces No se puede elegir…

  16. SharePoint es un muy mala plataforma de desarrollo. Estoy con todo el mundo es inestable, no estandar y dificil de depurar. Además MSFT ni tiene gente preparada para dar soporte (por desgracia lo se) ni prepara a sus propios ingenieros para hacerlo. Es triste que la gente gaste su dinero en contratos Premier para que le ayude alguien que tiene menos idea que él y además el ingneiero no sea ayudado por nadie de dentro de la organización.

    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *