Muchas gracias José!!

Ayuda aceptada jaja!!

Si es posible, unas líneas de código de un WS en Visual Basic (O el que consideres mas apto) simplemente que invoque una función de una DLL creada en VFP... con esto calculo que será suficiente para adaptarlo, no?

Mil gracias
Gustavo




El 21/08/2015 a las 21:03, Jose Paez escribió:
Hola Gustavo

Yo utilizo las versiones Profesional/Enterprise de Visual Studio, no he probado con Community. Supongo que debe funcionar bien para el desarrollo.

Si necesitas ayuda para la solución y el proyecto, avisame, dentro de mis tiempos vemos de preparar algo que le sea útil a la comunidad.

Saludos

José Paez









------------------------------------------------------------------------
Date: Fri, 21 Aug 2015 16:49:21 -0300
From: [email protected]
To: [email protected]
Subject: [GUFA] Web Service con SOAP Toolkit con Internet Information Services 10

Muchísimas Gracias Jose!!

Ahora estoy bajando el Visual Studio Community... alcanza o necesito otra cosa?

Saludos
Gustavo


El 20/08/2015 21:12, Jose Paez escribió:

    Hola Gustavo

    Sugiero que dentro del C:\inetpub\wwwroot crees una carpeta por
    ejemplo "MiProyectoWS".
    Desde IIS agrega a un nuevo Sitio Web y establece el directorio de
    contenido (ruta física --> "C:\inetpub\wwwroot\MiProyectoWS")

    En Visual Studio vas a publicar/sincronizar el WS en
    C:\inetpub\wwwroot\MiProyectoWS.

    Tambien podes crear una carpeta
    "C:\inetpub\wwwroot\MiProyectoWS\DLLs", allí copia el componente
    más los runtimes de VFP9.

    Va a ser necesario registrar el componente VFP con REGSVR32 o bien
    existe la posibilidad de utilizar Component Services.

    Es importante que hayas realizado el testing de la DLL  asegurando
    el funcionamiento, paths, permisos, seguridad, etc.

    Cualquier duda avise nomas ;o)

    Saludos
    José Paez




    Q








    ------------------------------------------------------------------------
    Date: Thu, 20 Aug 2015 16:17:44 -0300
    From: [email protected] <mailto:[email protected]>
    To: [email protected] <mailto:[email protected]>
    Subject: [GUFA] Web Service con SOAP Toolkit con Internet
    Information Services 10

    Impresionante José!! Muchas gracias!!

    Entonces guardo la DLL que quiero usar en c:\inetpub\wwwroot y en
    el código del WS de Visual Basic declaro las funciones de esa DLL
    y listo?

    ¿Entendí bien o estoy siendo muy simplista?

    Gracias nuevamente
    Gustavo




    El 20/08/2015 15:45, Jose Paez escribió:

        Hola Gustavo

        Si, podes realizar el Web Service con .Net y que este utilice
        los servicios de un componente desarrollado en VFP.

        Saludos

        José Paez


        && Ejemplo de la estructura de la clase que tendrás que
        compilar como DLL en VFP9


        #Define  CRChr(13)
        #Define  CRCRChr(13)+Chr(13)
        #Define  CRLFChr(13)+Chr(10)

        Define Class Gateway As Session OlePublic

        Path= "C:\"
        Log= "C:\"

        ************************************************************************
        * Gateway :: Init
        ************************************************************************
        Procedure Init
        If Not This.OnLoad() Then
        Return .F.
        Endif
        Endproc

        ************************************************************************
        * Gateway :: Destroy
        ************************************************************************
        Procedure Destroy
        This.OnDestroy()
        Endproc

        ************************************************************************
        * Gateway :: Error
        ************************************************************************
        Procedure Error(lnError, lcMethod, lnLine)
        Local;
        Array laErrorArray[7]
        Local;
        lnIAs Integer,;
        lcErrMessage As String

        = Aerror( laErrorArray )

        lcErrMessage = ;
        "Error:" + Transform( lnError )+ CR +;
        "Metodo:" + Transform( lcMethod )+ CR +;
        "Linea:" + Transform( lnLine )+ CR +;
        "Detalle:" + Message()

        lcErrMessage = + CRCR + lcErrMessage + CRCR

        For lnI = 1 To 7
        lcErrMessage = lcErrMessage + Transform(lnI) + ": " +
        Transform( laErrorArray( lnI ) ) + CR
        Endfor

        If Inlist( _vfp.StartMode, 3, 5 ) Then
        Comreturnerror("Gateway: " + Proper( lcMethod ), lcErrMessage )
        Endif

        Endproc

        ************************************************************************
        * Gateway :: OnLoad
        ************************************************************************
        Hidden Function OnLoad As Boolean
        Local;
        llReturn As Boolean,;
        loErrHandlerAs Exception

        llReturn  = .F.

        Close Tables All
        Close Databases All

        Sys(2339,0) && Llamar a CoFreeUnusedLibraries al liberar un
        objeto COM

        Set Ansi On
        Set Autoincerror On
        Set Autosave Off
        Set Blocksize To 64
        Set Carry Off
        Set Century On
        Set Collate To "SPANISH"
        Set Confirm Off
        Set Currency To "$"
        Set Database To
        Set Date Dmy
        Set Decimals To 2
        Set Deleted On
        Set Exact On
        Set Exclusive Off
        Set Fields Off
        Set Fixed Off
        Set Hours To 24
        Set Lock Off
        Set Mark To "/"
        Set Multilocks On
        Set Near Off
        Set Null Off
        Set Point To "."
        Set Reprocess To Automatic
        Set Safety Off
        Set Seconds On
        Set Sysformats Off
        Set Talk Off
        Set TableValidate To 0
        Set Unique Off

        Clear Error
        Try
        &&
        && Aqui tu codigo de inicialización
        &&

        Catch To loException
        lcErrMessage = CRLF +;
        "********* Fecha/Hora: " + Transform( Datetime() ) + CRLF + ;
        "Error: " + Transform( loException.ErrorNo )+ CRLF + ;
        "Metodo: " + Transform( loException.Procedure )+ CRLF + ;
        "Linea: " + Transform( loException.Lineno )+ CRLF + ;
        "Detalle: " + Transform( loException.Details )+ CRLF + ;
        "Mensaje: " + Transform( loException.Message )

        Strtofile( lcErrMessage, This.Path + "Gateway.err", 1)
        This.ReturnError( loException )
        Endtry

        Return llReturn
        Endfunc


        ************************************************************************
        * Gateway :: OnDestroy
        ************************************************************************
        Hidden Procedure OnDestroy
        Close Tables All
        Close Databases All
        Endproc


        ************************************************************************
        * Gateway :: ReturnError
        ************************************************************************
        Hidden Procedure ReturnError( loException As Exception )
        Local;
        lcMensaje As String

        If Vartype( loException.UserValue ) = "C" And Not Empty(
        loException.UserValue ) Then
        lcMensaje = loException.UserValue
        Else
        lcMensaje = loException.Message
        Endif

        lcErrMessage = CRLF +;
        "********* Fecha/Hora: " + Transform( Datetime() ) + CRLF + ;
        "Error: " + Transform( loException.ErrorNo )+ CRLF + ;
        "Metodo: " + Transform( loException.Procedure )+ CRLF + ;
        "Linea: " + Transform( loException.Lineno )+ CRLF + ;
        "Detalle: " + Transform( loException.Details )+ CRLF + ;
        "Mensaje: " + lcMensaje

        loError = Createobject("Exception")
        loError.Message = lcErrMessage
        loError.ErrorNo = loException.ErrorNo

        Strtofile( lcErrMessage, This.Path + "Gateway .err")
        Endproc


        ************************************************************************
        * Gateway :: Trace
        ************************************************************************
        Hidden Procedure Trace( tcMessage )
        tcMessage = Dtoc( Date() ) + " - " + Time() + Chr(9) +
        tcMessage + CRLF
        Strtofile( tcMessage , This.Path + "Gateway.log", 1)
        Endproc


        ************************************************************************
        * Gateway :: Procesar
        ************************************************************************
        Function Procesar;
        (;
        ) As boolean

        This.Trace( "Procesar - Inicio" )

        Local llResult As Boolean
        Local loGateway as Object
        Local loException, lcErrorMsg, loWSHandler

        llResult = .F.

        Try
        llResult = MiFuncion()

        Catch To loException
        This.Trace( "Elegibilidad - Error" )

        lcErrorMsg = "Error: " + Transform( loException.ErrorNo ) + "
        - " + loException.Message
        lcErrorMsg = lcErrorMsg + CR + loGateway.Detail

        This.Trace( lcErrorMsg )

        loException.UserValue = lcErrorMsg
        This.ReturnError( loException )
        Finally
        loGateway = Null
        Endtry

        This.Trace( "Procesar - Fin" )

        Return llResult
        Endfunc

        Enddefine

        && Ejemplo de la clase en VB.Net que será publicada como
        WebService

        Imports System.Web
        Imports System.Web.Services
        Imports System.Web.Services.Protocols


        <WebService(Namespace:="http://tempuri.org/";
        <http://tempuri.org/>)> _
        <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
        <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
        _
        Public Class Gateway
            Inherits System.Web.Services.WebService

            <WebMethod()> _
            Public Function Procesar() As Boolean

                Dim resultado As Boolean = False
                Dim gateway As MiDLL.Gateway

                Try
                        gateway = New MiDLL.Gateway
        resultado = gateway.Procesar()
                Catch ex As Exception
        Throw ex
                End Try

                Return resultado
            End Function

        End Class




        > Date: Wed, 19 Aug 2015 16:29:35 -0300
        > From: [email protected] <mailto:[email protected]>
        > To: [email protected] <mailto:[email protected]>
        > Subject: [GUFA] Web Service con SOAP Toolkit con Internet
        Information Services 10
        >
        > Hola amigos!!
        >
        > Viendo que nadie contestó, y que busqué por todas partes,
        supongo que no
        > se puede.
        >
        > Asique se me ocurre una alternativa con .NET, que nunca lo
        usé y no
        > tengo idea, pero si encontré muchísimo material para armar
        Web Services
        > con .NET, ya sea del lado del cliente o del servidor.
        >
        > Entonces mi pregunta es: ¿Puedo crear un Web Service con
        .NET que llame
        > las funciones de las DLL generadas con VFP? (Que actualmente
        actúan como
        > WS en un server Win 2K, funcionan bien, están probadas, todo!!)
        >
        > Porque aparentemente los Web Serivces creados con .NET son
        muy fáciles
        > de instalar y publicar con IIS 10...
        >
        > Agradezco cualquier tipo de dato que me ayude a encontrar el
        camino a la
        > luz...
        >
        > Saludos y gracias!!
        >
        >
        >
        > El 14/08/2015 17:52, Gustavo Señoriño escribió:
        > > Hola a Todos!!
        > >
        > > Se puede instalar un Web Service desarrollado en VFP con
        SOAP Toolkit
        > > 3.0 en un server con IIS 10?
        > >
        > > Digo, si se cambia el server Win 2000 por uno mas nuevo, va a
        > > funcionar bien?
        > >
        > > Gracias y buen finde
        > > Gustavo
        > >
        > >
        >
        >




Responder a