miércoles, 9 de agosto de 2017

Creando Nuget Server Local y haciendo la instalación con WebDeploy

La forma práctica, ordenada y ágil en que podemos compartir el código dentro de nuestra organización es a través de paquetes nuget, los cuales no son mas que bibliotecas de código reutilizable que podemos incluir en nuestros proyectos de Visual Studio fácilmente.  Por lo que lo que necesitamos es un "Repositorio" de estos paguetes de código reutilizable llamados Nuget.

Para crear este repositorio tenemos 3 opciones:

1) Una Carpeta Compartida en la red
2) Un servidor de Nuget Local
3) Utilizar los servidores de Nuget.Org para compartir nuestro código al rededor del mundo con infraestructura de terceros

Análisis de las opciones
Crear una Carpeta Compartida es una opción muy fácil poco segura, ordenada y elegante, por lo que no recomiendo esta opción más que para una prueba de concepto.

Utilizar los servidores de Nuget.Org de forma privada es una opción la cual puede evaluar primordial mente si su equipo esta distribuido geográficamente, sino recomiendo la opción de un Servidor Nuget.  Para más información ver el siguiente enlace: https://www.myget.org/nuget 

Nuestro análisis nos lleva a ver la opción 2 de crear un servidor Nuget con nuestra propia infraestructura disponible dentro de nuestra organización y esto es el lo que vamos a ver en el desarrollo del artículo.

Prerequisitos

Requerimientos de Hardware
Procesador: 1 Nucleo
Memoria RAM: 1 GB
Disco: 127 GB

Requerimientos de Software
Windows Server 2012 Standard Edition
IIS 8.0 con las siguientes features activadas:
DisplayName
-----------
Web Server (IIS)
Web Server
Common HTTP Features
Default Document
Directory Browsing
HTTP Errors
Static Content
Health and Diagnostics
HTTP Logging
Logging Tools
Request Monitor
Performance
Static Content Compression
Security
Request Filtering
Windows Authentication
Application Development
.NET Extensibility 3.5
.NET Extensibility 4.5
ASP.NET 3.5
ASP.NET 4.5
ISAPI Extensions
ISAPI Filters
Management Tools
IIS Management Console
IIS Management Scripts and Tools
Management Service

Nota:  Para obtener este listado puede ejecutar la siguiente línea en powershell:

 Import-module servermanager ; Get-WindowsFeature | where {$_.Installed -eq $True -and $_.Path
 -like "*web*" }| select displayname

Como vamos a realizar la instalación con WebDeploy necesitamos instalarlo para IIS 8.0
https://www.iis.net/downloads/microsoft/web-deploy 

Debemos validar que el servicio Management Services esta levantado así que ejecute esta línea de comando en el servidor web:
net start wmsvc

Por último como el proyecto Nuget Server que vamos a instalar require Framework 4.6 es necesario instalar dicho framework que no viene con Windows Server 2012.   Para ello utitlizar el siguiente enlace:

https://www.microsoft.com/en-us/download/details.aspx?id=53344

Listos ahora pasemos a Visual Studio para crear el proyecto Web Nuget Server

Creación de Proyecto Web Nuget Server




Desde Visual Studio Cree un Nuevo Proyecto Web Vacio

Y ejecute desde la consola de Package Manager la siguiente línea:

Install-Package NuGet.Server -Version 2.11.3

Le Preguntará si permite modificar el archivo web.config del proyecto seleccione afirmativamente la opción.

Recomiendo revise las configuraciones del archivo web.config siguientes:

 



Ahora vamos a crear un perfil de publicación en VS para realizar la instalación automatizada del Servidor Nuget en el Servidor Web recién configurado.



Valide la conexión y si le de errror revise los prerequisitos o vaya al siguiente enlace:
https://docs.microsoft.com/en-us/iis/publish/troubleshooting-web-deploy/web-deploy-error-codes

Si vemos el resumen del Perfil de publicación notaremos que el servicio referenciado es Web Management Services o WMSvc



Y finalmente si publicamos el proyecto a través del perfil de publicación obtendremos el resultado final... Nuestro servidor Nuget Listo!:



Y eso es todo amigos, en este articulo revisamos como crear un servidor Nuget Local para crear nuestros paquetes de bibliotecas de código para compartir con el equipo de una forma ágil y eficiente desde Visual Studio 2017, Y lo hicimos de forma automatizada ya que utilizamos Web Deploy para instalar el Proyecto Web del Servidor Nuget en un Servidor Windows 2012 con el Web Server Habilitado y el Servicio Web Management Service para realizar instalaciones remotas a través de la aplicación Web Deploy de Microsoft.

Code4Fun!,

Juan Manuel Herrera Ocheita

martes, 8 de agosto de 2017

Buenas practicas para desarrollo de soluciones en SharePoint

Una de las buenas practicas para cuando iniciamos una solución en SharePoint no importa la versión es crear una colección de sitios para dicha solución y esta con su bases de datos de contenido,  Esto permitirá que sea portable la solución desarrollada.

Para realizar esto debemos hacer lo siguiente:

1) Crear la base de datos de contenido
2) Crear la colección de sitios para la base de datos nueva

Como buen desarrollador prefiero utilizar la línea de comando que la interfaz de usuario.  Así que aquí les va en línea de comando:

Crear la base de datos de contenido

PS C:\Users\Administrator> Mount-SPContentDatabase -Name WSS_Content_ArchivoDigi
tal -WebApplication http://sp2013bi

---resultado ----
Id               : 47b71298-e23c-421b-bb6a-5e65428b8a4d
Name             : WSS_Content_ArchivoDigital
WebApplication   : SPWebApplication Name=SharePoint - 80
Server           : sp2013bi\powerpivot
CurrentSiteCount : 0

Crear la colección de sitios para la base de datos nueva

PS C:\Users\Administrator> New-SPSite -Url http://sp2013bi/sites/ADigital -Langu
age 1033 -Template STS#0 -Name "Archivo Digital" -OwnerAlias "Administrator" -Co
ntentDatabase WSS_Content_ArchivoDigital -Verbose

---resultado---
VERBOSE: Leaving BeginProcessing Method of New-SPSite.
VERBOSE: Performing operation "New-SPSite" on Target
"http://sp2013bi/sites/ADigital".

Url                                                     CompatibilityLevel
---                                                     ------------------
http://sp2013bi/sites/ADigital                          15
VERBOSE: Leaving ProcessRecord Method of New-SPSite.
VERBOSE: Leaving EndProcessing Method of New-SPSite.



Ayudas:

Para revisar las plantillas para la colección de sitios ejecutar el comando:
get-SPWebTemplate


Name                 Title                                    LocaleId   Compat
                                                                         ibilit
                                                                         yLevel
----                 -----                                    --------   ------
GLOBAL#0             Global template                          1033       15
STS#0                Team Site                                1033       15
STS#1                Blank Site                               1033       15
STS#2                Document Workspace                       1033       15
MPS#0                Basic Meeting Workspace                  1033       15
MPS#1                Blank Meeting Workspace                  1033       15
MPS#2                Decision Meeting Workspace               1033       15
MPS#3                Social Meeting Workspace                 1033       15
MPS#4                Multipage Meeting Workspace              1033       15
CENTRALADMIN#0       Central Admin Site                       1033       15
WIKI#0               Wiki Site                                1033       15
BLOG#0               Blog                                     1033       15
SGS#0                Group Work Site                          1033       15
TENANTADMIN#0        Tenant Admin Site                        1033       15
APP#0                App Template                             1033       15
APPCATALOG#0         App Catalog Site                         1033       15
ACCSRV#0             Access Services Site                     1033       15
ACCSVC#0             Access Services Site Internal            1033       15
ACCSVC#1             Access Services Site                     1033       15
BDR#0                Document Center                          1033       15
DEV#0                Developer Site                           1033       15
DOCMARKETPLACESITE#0 Academic Library                         1033       15
EDISC#0              eDiscovery Center                        1033       15
EDISC#1              eDiscovery Case                          1033       15
OFFILE#0             (obsolete) Records Center                1033       15
OFFILE#1             Records Center                           1033       15
OSRV#0               Shared Services Administration Site      1033       15
PPSMASite#0          PerformancePoint                         1033       15
BICenterSite#0       Business Intelligence Center             1033       15
SPS#0                SharePoint Portal Server Site            1033       15
SPSPERS#0            SharePoint Portal Server Personal Space  1033       15
SPSPERS#2            Storage And Social SharePoint Portal ... 1033       15
SPSPERS#3            Storage Only SharePoint Portal Server... 1033       15
SPSPERS#4            Social Only SharePoint Portal Server ... 1033       15
SPSPERS#5            Empty SharePoint Portal Server Person... 1033       15
SPSMSITE#0           Personalization Site                     1033       15
SPSTOC#0             Contents area Template                   1033       15
SPSTOPIC#0           Topic area template                      1033       15
SPSNEWS#0            News Site                                1033       15
CMSPUBLISHING#0      Publishing Site                          1033       15
BLANKINTERNET#0      Publishing Site                          1033       15
BLANKINTERNET#1      Press Releases Site                      1033       15
BLANKINTERNET#2      Publishing Site with Workflow            1033       15
SPSNHOME#0           News Site                                1033       15
SPSSITES#0           Site Directory                           1033       15
SPSCOMMU#0           Community area template                  1033       15
SPSREPORTCENTER#0    Report Center                            1033       15
SPSPORTAL#0          Collaboration Portal                     1033       15
SRCHCEN#0            Enterprise Search Center                 1033       15
PROFILES#0           Profiles                                 1033       15
BLANKINTERNETCONT... Publishing Portal                        1033       15
SPSMSITEHOST#0       My Site Host                             1033       15
ENTERWIKI#0          Enterprise Wiki                          1033       15
PROJECTSITE#0        Project Site                             1033       15
PRODUCTCATALOG#0     Product Catalog                          1033       15
COMMUNITY#0          Community Site                           1033       15
COMMUNITYPORTAL#0    Community Portal                         1033       15
SRCHCENTERLITE#0     Basic Search Center                      1033       15
SRCHCENTERLITE#1     Basic Search Center                      1033       15
visprus#0            Visio Process Repository                 1033       15
GLOBAL#0             Global template                          1033       14
STS#0                Team Site                                1033       14
STS#1                Blank Site                               1033       14
STS#2                Document Workspace                       1033       14
MPS#0                Basic Meeting Workspace                  1033       14
MPS#1                Blank Meeting Workspace                  1033       14
MPS#2                Decision Meeting Workspace               1033       14
MPS#3                Social Meeting Workspace                 1033       14
MPS#4                Multipage Meeting Workspace              1033       14
CENTRALADMIN#0       Central Admin Site                       1033       14
WIKI#0               Wiki Site                                1033       14
BLOG#0               Blog                                     1033       14
SGS#0                Group Work Site                          1033       14
TENANTADMIN#0        Tenant Admin Site                        1033       14
ACCSRV#0             Access Services Site                     1033       14
ACCSRV#1             Assets Web Database                      1033       14
ACCSRV#3             Charitable Contributions Web Database    1033       14
ACCSRV#4             Contacts Web Database                    1033       14
ACCSRV#6             Issues Web Database                      1033       14
ACCSRV#5             Projects Web Database                    1033       14
BDR#0                Document Center                          1033       14
OFFILE#0             (obsolete) Records Center                1033       14
OFFILE#1             Records Center                           1033       14
OSRV#0               Shared Services Administration Site      1033       14
PPSMASite#0          PerformancePoint                         1033       14
BICenterSite#0       Business Intelligence Center             1033       14
SPS#0                SharePoint Portal Server Site            1033       14
SPSPERS#0            SharePoint Portal Server Personal Space  1033       14
SPSMSITE#0           Personalization Site                     1033       14
SPSTOC#0             Contents area Template                   1033       14
SPSTOPIC#0           Topic area template                      1033       14
SPSNEWS#0            News Site                                1033       14
CMSPUBLISHING#0      Publishing Site                          1033       14
BLANKINTERNET#0      Publishing Site                          1033       14
BLANKINTERNET#1      Press Releases Site                      1033       14
BLANKINTERNET#2      Publishing Site with Workflow            1033       14
SPSNHOME#0           News Site                                1033       14
SPSSITES#0           Site Directory                           1033       14
SPSCOMMU#0           Community area template                  1033       14
SPSREPORTCENTER#0    Report Center                            1033       14
SPSPORTAL#0          Collaboration Portal                     1033       14
SRCHCEN#0            Enterprise Search Center                 1033       14
PROFILES#0           Profiles                                 1033       14
BLANKINTERNETCONT... Publishing Portal                        1033       14
SPSMSITEHOST#0       My Site Host                             1033       14
ENTERWIKI#0          Enterprise Wiki                          1033       14
SRCHCENTERLITE#0     Basic Search Center                      1033       14
SRCHCENTERLITE#1     Basic Search Center                      1033       14
SRCHCENTERFAST#0     FAST Search Center                       1033       14

visprus#0            Visio Process Repository                 1033       14

SharePoint4fun!,

Juan Manuel Herrera O.