8
votes

Courtier de service et services Web

Je tiens à mettre en œuvre une procédure stockée (dans une infrastructure de courtier de service) qui appelle un service Web. J'ai regardé quelques exemples du livre d'Aschenbrenner sur le courtier de service. Cependant, je ne trouve aucun avec un appel de service Web. Quelqu'un pourrait-il aider?

merci SQLBS


0 commentaires

3 Réponses :


-1
votes

Voir le premier exemple au chapitre 10. Si votre question concerne les détails de la mise en œuvre des appels de service Web, veuillez étiqueter la question avec des balises de service Web appropriées plutôt que du courtier de service.


1 commentaires

Bonjour, merci pour vos notes. J'ai regardé l'exemple. Il s'agit de l'appel d'une servie Web au sein de l'infrastructure de courtiers de service. Ce dont j'ai vraiment besoin, c'est quelque chose comme ceci: rangée insérée / mise à jour à la table -> Insertion / mise à jour des incendies de déclenchement -> Trigger écrit Message de la file d'attente de courtier-service -> STOCKE PROC activé par SQL Server -> Service Web de PROP stocké -> Conversation se termine . Une idée? SQLBS



0
votes

Je ferais un service Windows qui se trouve à la fin du courtier de service (et appelez le service Web comme dans n'importe quelle application Win). En quelque sorte, ne pensez pas que l'appelant service Web de DB est une bonne idée.

peut trouver aout activateur externe ici . Et téléchargez l'interface de courtier de service / activateur externe ici . L'interface de courtier de service est juste géniale! Facile à utiliser.


0 commentaires

4
votes

Nous avons eu une tâche similaire chez mon entreprise et avons trouvé une solution optimale consistait à utiliser des déclencheurs asynchrones avec un activateur externe qui appelle desservices de messages .NET et de filtrage après succès. Ce que MASE est que vous créez un déclencheur de base de données régulier qui envoie un message à la file d'attente de courtiers de service pour le traitement asynchrone. Aka déclencheur asynchrone. Voici un échantillon du chapitre 10 du livre de Klause

-- Create the trigger written with T-SQL
CREATE TRIGGER OnCustomerInserted ON Customers FOR INSERT
AS
DECLARE @conversationHandle UNIQUEIDENTIFIER
DECLARE @fromService SYSNAME
DECLARE @toService SYSNAME
DECLARE @onContract SYSNAME
DECLARE @messageBody XML

SET @fromService = 'CustomerInsertedClient'
SET @toService = 'CustomerInsertedService'
SET @onContract = 'http://ssb.csharp.at/SSB_Book/c10/CustomerInsertContract'

-- Check if there is already an ongoing conversation with the TargetService
SELECT @conversationHandle = ConversationHandle FROM SessionConversations
    WHERE SPID = @@SPID
    AND FromService = @fromService
    AND ToService = @toService
    AND OnContract = @onContract

IF @conversationHandle IS NULL
BEGIN
    -- We have to begin a new Service Broker conversation with the TargetService
    BEGIN DIALOG CONVERSATION @conversationHandle
        FROM SERVICE @fromService
        TO SERVICE @toService
        ON CONTRACT @onContract
        WITH ENCRYPTION = OFF;

    -- Create the dialog timer for ending the ongoing conversation
    BEGIN CONVERSATION TIMER (@conversationHandle) TIMEOUT = 5;

    -- Store the ongoing conversation for further use
    INSERT INTO SessionConversations (SPID, FromService, ToService, OnContract, ConversationHandle)
    VALUES
    (
        @@SPID,
        @fromService,
        @toService,
        @onContract,
        @conversationHandle
    )
END

-- Construct the request message
SET @messageBody = (SELECT * FROM INSERTED FOR XML AUTO, ELEMENTS);

-- Send the message to the TargetService
;SEND ON CONVERSATION @conversationHandle
MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/CustomerInsertedRequestMessage] (@messageBody);


0 commentaires