Compartir a través de


Procedimiento para crear un ensamblado de proxy para servicios de WCF (traducción automática)

Importante

Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Al desarrollar aplicaciones para Microsoft Project Server 2010, se puede establecer una referencia a un servicio de Windows Communication Foundation (WCF) en Project Server Interface (PSI) mediante un ensamblado de proxy o un archivo de código fuente de proxy. La descarga del SDK de Project 2010 incluye el origen y el ensamblado de proxy de PSI para servicios de WCF en la versión completa de Project Server 2010. En este artículo se muestra cómo crear un ensamblado de proxy de PSI para las actualizaciones o los Service Pack de Project Server.

En este artículo se incluyen las siguientes secciones:

  • Generar un ensamblado de Proxy PSI

    • Procedimiento general

    • Cambios en las solicitudes autenticación, los enlaces de servicio y extremos

    • Con el archivo Web.config temporal

    • Mediante la secuencia de comandos de GenWCFProxyAssembly.cmd

Requisitos previos

Utilizar una instalación de prueba de Project Server 2010.

Advertencia

Los procedimientos descritos en este artículo requieren cambiar temporalmente el archivo web.config de la aplicación de servicio compartido de Project Server. Estos procedimientos deben realizarse únicamente en una instalación de prueba de Project Server 2010.

Generar un ensamblado de Proxy PSI

Puede crear y utilizar el ensamblado de proxy de ProjectServerServices.dll para todos los servicios WCF en PSI, mediante el uso de la secuencia de comandos de GenWCFProxyAssembly.cmd en la carpeta Documentation\Intellisense\WCF de la Project 2010 descargar el SDK.

Nota

Si utiliza la secuencia de comandos de GenASMXProxyAssembly.cmd en la carpeta Documentation\Intellisense\WSDL para generar el ensamblado de proxy de ProjectServerServices.dll, no funciona para las aplicaciones basadas en WCF. La secuencia de comandos de GenASMXProxyAssembly.cmd llama a wsdl.exe, que genera archivos de código fuente para los servicios Web ASMX.

El ensamblado de proxy basados en ASMX no incluye los atributos necesarios, la interfaz de canal o la clase de cliente para cada servicio PSI. Por ejemplo, el servicio de WCF de recursos incluye la interfaz de ResourceChannel y la clase de ResourceClient, que no incluye el servicio Web de ASMX de recursos.

Procedimiento general

La secuencia de comandos de GenWCFProxyAssembly.cmd genera archivos de salida para los servicios WCF en PSI y, a continuación, compile el ensamblado. Para ejecutar la secuencia de comandos en una instalación de prueba de Project Server, haga lo siguiente:

  1. Haga una copia del archivo web.config para la aplicación del proyecto de servicio de back-end en [Program Files]\Microsoft Office Servers\14.0\WebServices\Shared\ProjectServer\PSI.

  2. Copie el archivo web.config.RTM_4RefOnly.txt desde el subdirectorio Documentation\Intellisense\web.config.files en el SDK se descargue en el directorio de aplicación del proyecto Servicio de back-end de Project 2010 y, a continuación, cambiar el nombre del archivo web.config.

  3. En una ventana de símbolo del sistema , ejecute iisreset.

  4. Ejecute GenWCFProxyAssembly.cmd. Después de ejecutar la secuencia de comandos, restaurar el archivo web.config original.

  5. Vuelva a ejecutar iisreset.

Cambios en las solicitudes autenticación, los enlaces de servicio y extremos

En la versión beta de Project Server 2010, basada en solicitudes autenticación utiliza cifrado con la seguridad de la secuencia de línea de suscriptor de seguros (SSL). Sin embargo, el cifrado requiere demasiada sobrecarga para cada llamada al servidor.

En la versión de lanzamiento, basada en solicitudes autenticación utiliza enlaces personalizados denominados ClaimsHttpFast y ClaimsHttpSecurity, que no utilizan cifrado o el enlace de seguridad HTTPS. El enlace personalizado mejora enormemente el rendimiento para los mensajes firmados. Sin embargo, los metadatos de Exchange (MEX) extremos en la aplicación de servicio de Project Server y otras aplicaciones de servicios en Microsoft SharePoint Server 2010 no utilizan mensajes firmados. Por lo tanto, cuando se intenta establecer una referencia a un servicio de back-end, o utilizar una dirección URL como https://localhost:32843/1712e91aeb884cdfb437299b89de3443/psi/project.svc, el mensaje se bloquea. El servicio devuelve el siguiente error:

The service encountered an error.

An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a policy export extension.
Extension: System.ServiceModel.Channels.TransportSecurityBindingElement
Error: Security policy export failed.

En la versión comercial de Project Server 2010, los extremos de servicio definidos en el archivo web.config utilizan los enlaces personalizados. Por ejemplo, el siguiente enlace y extremo para los resultados de servicio de proyecto en un error de InvalidOperationException cuando se intenta establecer un servicio de referencia.

<customBinding>
    <binding name="ClaimsHttpFast">
        <security authenticationMode="IssuedTokenOverTransport"
            allowInsecureTransport="true" />
    . . .
    </binding>
</customBinding>
. . .
<service
    name="Microsoft.Office.Project.Server.Wcf.Implementation.ProjectImpl"
    behaviorConfiguration="ProjectServerBehavior" >
    . . .
    <endpoint
      address=""
      binding="customBinding"
      behaviorConfiguration="ProjectServerEndpointBehavior"
      bindingConfiguration="ClaimsHttpFast"
      contract="Microsoft.Office.Project.Server.Interfaces.IProject" />
    <endpoint
</service>

Con el archivo Web.config temporal

En el archivo web.config.RTM_4RefOnly.txt, los servicios utilizan a las ClaimsHttpSecurity y ClaimsHttpFast los elementos secundarios del elemento basicHttpBinding. El elemento customBinding todo está comentado. Cada uno de los extremos del servicio utiliza el elemento basicHttpBinding, en lugar de hacerlo en el elemento customBinding. Esos cambios habilitar establecer directamente una referencia de servicio sin indicar un error de Visual Studio.

El siguiente es el elemento bindings completa en el archivo web.config.RTM_4RefOnly.txt:

<bindings>
  <basicHttpBinding>
    <binding name="mexHttpBinding">
      <security mode="None">
      </security>
    </binding>
    <binding name="ClaimsHttpSecurity">
      <security mode="None" >
      </security>
    </binding>
    <binding name="ClaimsHttpFast">
      <security mode="None">
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

Siguiente es el elemento de service completa para el servicio del proyecto. Los extremos para ClaimsHttpSecurity y ClaimsHttpFast utilizan el elemento basicHttpBinding, en lugar del elemento customBinding.

<service
  name="Microsoft.Office.Project.Server.Wcf.Implementation.ProjectImpl"
  behaviorConfiguration="ProjectServerBehavior" >
  <endpoint
    address="secure"
    binding="basicHttpBinding"
    bindingConfiguration="ClaimsHttpSecurity"
    behaviorConfiguration="ProjectServerEndpointBehavior"
    contract="Microsoft.Office.Project.Server.Interfaces.IProject" />
  <endpoint
    address=""
    binding="basicHttpBinding"
    behaviorConfiguration="ProjectServerEndpointBehavior"
    bindingConfiguration="ClaimsHttpFast"
    contract="Microsoft.Office.Project.Server.Interfaces.IProject" />
  <endpoint
    address="mex"
    binding="basicHttpBinding"
    bindingConfiguration="mexHttpBinding"
    name="mex"
    contract="IMetadataExchange" />
</service>

Aunque podría usar la discusión anterior para crear un archivo web.config temporal para la aplicación de servicio de proyecto de fondo, la edición manual puede producir errores. Las definiciones de enlace para ambos de los extremos de las reclamaciones deben cambiarse para cada servicio. Se recomienda que copie el archivo web.config.RTM_4RefOnly.txt en la descarga SDK y utilizarlo para el archivo web.config temporal.

Mediante la secuencia de comandos de GenWCFProxyAssembly.cmd

Siguiente es la secuencia de comandos de GenWCFProxyAssembly.cmd, como en la carpeta Documentation\Intellisense\WCF de la descarga SDK. Puede utilizar wsdl.exe desde cualquier ubicación. son las mismas versiones.

Antes de utilizar la secuencia de comandos, cambie el nombre GUID del directorio de la aplicación de servicio de Project Server.

@echo off
@ECHO ------------------------------------------------------
@ECHO Creating the C# files for the WCF-based proxy assembly
@ECHO ------------------------------------------------------

REM ** Replace ServerName with the name of the server and 
REM    the instance name of Project Web App. Do not use localhost.
(set VDIR1=https://ServerName/ProjectServerName/_vti_bin/PSI)

REM ** Replace the GUID for your Project Server Service virtual directory name. **
(set VDIR2=https://localhost:32843/1712e91aeb884cdfb437299b89de3443/PSI)

(set OUTDIR=.\Source)

REM ** Wsdl.exe is the same version in the v6.0A and v7.0A subdirectories. 
(set WSDL="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\x64\wsdl.exe")

if not exist %OUTDIR% (
    md %OUTDIR%
)

REM Use the back-end Project Service application URL for the WCF services.
REM ** The following command is all on one line.

for /F %%i in (Classlist_WCF.txt) do svcutil.exe /tcv:Version35 /serializer:XmlSerializer 
    /nologo /t:code /l:CS /n:*,WebSvc%%i /d:.\Source /o:wcf.%%i.cs %VDIR2%/%%i.svc

REM Use the front-end Project Web App URL for the LoginForms and LoginWindows services.

%WSDL% /nologo /l:CS /namespace:WebSvcLoginForms /out:%OUTDIR%\wsdl.LoginForms.cs %VDIR1%/LoginForms.asmx 
%WSDL% /nologo /l:CS /namespace:WebSvcLoginWindows /out:%OUTDIR%\wsdl.LoginWindows.cs %VDIR1%/LoginWindows.asmx

@ECHO ----------------------------
@ECHO Compiling the proxy assembly
@ECHO ----------------------------

(set SOURCE=%OUTDIR%\)
(set CSC=%WINDIR%\Microsoft.NET\Framework\v3.5\csc.exe)
(set ASSEMBLY_NAME=ProjectServerServices.dll)

%CSC% /t:library /out:%ASSEMBLY_NAME% %SOURCE%*.cs

La secuencia de comandos utiliza el archivo de Classlist_wcf.txt, que contiene la lista de servicios PSI que están disponibles para los desarrolladores de terceros.

Admin
Archive
Calendar
CubeAdmin
CustomFields
Driver
Events
LookupTable
Notifications
ObjectLinkProvider
PortfolioAnalyses
Project
QueueSystem
ResourcePlan
Resource
Security
Statusing
TimeSheet
Workflow
WssInterop

Los espacios de nombres arbitrarios que se crean para los servicios Web ASMX y de los servicios WCF son iguales, para que el archivo ProjectServerServices.xml para que Intellisense funcione con cualquier versión. Por ejemplo, el espacio de nombres del servicio de recursos en el ensamblado de proxy basados en WCF y en el ensamblado de proxy basados en ASMX es SvcResource. Por supuesto, puede cambiar el nombre de espacio de nombres en el parámetro \n para el comando de SvcUtil.exe en la secuencia de comandos de GenWCFProxyAssembly.cmd — se asegura de que los nombres coinciden en el ensamblado de proxy y en el archivo ProjectServerServices.xml.

Nota

Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Vea también

Conceptos

Información general sobre WCF y PSI (traducción automática)

Requisitos previos para ejemplos de código basados en WCF (traducción automática)

Requisitos previos para ejemplos de código basados en ASMX (traducción automática)

Historial de cambios

Fecha

Descripción

Motivo

Mayo de 2010

Publicación inicial