2010-01-17 39 views

Respuesta

10

Si bien usar WCF Data Services puede ser una opción, al igual que Anton said, debe considerar si es una buena idea proporcionar una ruta directa a su base de datos completa/parcial.

Otra opción es construir una capa de acceso de datos, lo que permitirá sólo una pequeña hoja de ruta estándar, como: "se puede añadir un cliente, pero que no está permitido eliminar una factura"

+0

Sólo para añadir, también se puede escribir ASP.NET Web API y exponer la Api relevante (por ejemplo, datos GET de DB, etc.) según su necesidad. –

1

Creo que querrá leer sobre los servicios de datos de WCF, disponibles en .net Framework 3.5 y versiones posteriores.

18

A partir SQL Server 2005 puede exponer servicios web XML nativos directamente desde la base de datos.

SQL Server se puede configurar para escuchar de forma nativa las solicitudes HTTP SOAP a través de un punto final HTTP. En general, le conviene exponer procedimientos almacenados o funciones definidas por el usuario como puntos finales HTTP, por lo que se requiere una pequeña codificación. Pero debería ser muy fácil seguir los ejemplos.

Que normalmente empezar por crear un procedimiento almacenado de la siguiente manera:

CREATE PROCEDURE [dbo].[getContact] 
    @ID [int]  
AS 
BEGIN 
    SELECT * FROM [AdventureWorks].[Person].[Contact] WHERE ContactID = @ID 
END; 

Y entonces sería definir su extremo de HTTP como esto:

CREATE ENDPOINT SQLEP_GetContact 
    STATE = STARTED 
AS HTTP 
(
    PATH = '/Contact', 
    AUTHENTICATION = (INTEGRATED), 
    PORTS = (CLEAR), 
    SITE = 'localhost' 
) 
FOR SOAP 
(
    WEBMETHOD 'ContactInfo' (NAME='AdventureWorks.dbo.getContact'), 
    BATCHES = DISABLED, 
    WSDL = DEFAULT, 
    DATABASE = 'AdventureWorks', 
    NAMESPACE = 'http://AdventureWorks/Contact' 
); 

Después de crear el punto final, puede presentar una Solicitud HTTP al servidor para asegurarse de que el punto final está respondiendo: http://localhost/Contact?wsdl.

Para modificar o detener su punto final, puede utilizar el comando ALTER ENDPOINT:

ALTER ENDPOINT SQLEP_GetContact 
    STATE = STOPPED; 

es posible que desee continuar por el control de los siguientes artículos:

ACTUALIZACIÓN: siguiente comentario Ed Harper' s de abajo, por favor, tenga en cuenta que los servicios Web XML nativos han quedado obsoletos en SQL Server 2008 (Noviembre de 2009), y esta característica se quitará en la versión futura de SQL Server. Microsoft sugiere usar servicios web WCF en su lugar. Fuente: MSDN - Native XML Web Services: Deprecated in SQL Server 2008

+3

Vale la pena señalar que los servicios web nativos XML están en desuso en SQL 2008. –

+1

Gracias Ed. No estaba enterado de eso. Fuente: http://msdn.microsoft.com/en-us/library/cc280436.aspx.Actualicé mi respuesta con esto y con la sugerencia de Microsoft de usar WCF. –

+0

Esta característica se ha eliminado por completo en SQL 2012. –

Cuestiones relacionadas