Announcement

Collapse
No announcement yet.

server/client Kommunikation

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • server/client Kommunikation

    Hallo gemeinde,

    Ich will mir einen kurzen Überblick erchaffen: Gibt es andere möglichkeiten Neben der TCP/IP Protokolle um applikationen aus einem MS SQL Server zu steuern?

    Danke im vorraus
    Zuletzt editiert von foufou; 20.05.2010, 14:34.

  • #2
    Hallo foufou,

    es gibt auch noch "Named Pipes" als Protokoll, aber selbst MS als "Erfinder" des Protokoll sagt, das es für die Kommunikation mit dem SQL Server ineffektiv und in einigen Szenarien sogar ungeeignet ist (ist nicht Routing-fähig).
    Empfehlung von MS (und mir): TCP/IP verwenden.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Danke O.Helper.. was denkst du über Windows Communikation Foundation??
      Zuletzt editiert von foufou; 21.05.2010, 09:39.

      Comment


      • #4
        Wie kommst Du den jetzt auf WCF (was eine feine Sache ist)?

        Hatte Deine Frage vielleicht gar nicht auf das verwendete Netzwerkprotokoll abgezielt, sondern eher auf die Nutzlast? Also, ob man statt über ADO / ADO.NET über andere Methoden wie SOAP/HTTP auf den SQL Server zugreifen kann?

        Man kann auch einen Webservice hosten, geht sogar ganz einfach. Mal legt eine Stored Procedure an, die die benötigten Aktionen ausführt / das gewünschte Ergebnis liefert.
        Dann erstellt man einen Endpoint, der die SP dann aufruft; die WSDL kann man automatisch generieren lassen.

        Beispiel mit der AdventureWorks:
        [highlight=SQL]USE [AdventureWorks]
        GO
        -- Endpoint

        CREATE PROCEDURE spSearchContactWS
        @LastName nvarchar(20)
        AS
        BEGIN
        SELECT Title, FirstName, LastName
        FROM Person.Contact
        WHERE LastName LIKE '%' + @LastName + '%';
        END;
        GO

        CREATE ENDPOINT ADV_EP_SearchContact
        AUTHORIZATION [sa]
        STATE = STARTED
        AS HTTP
        (AUTHENTICATION = (INTEGRATED),
        PATH = '/ADV/SearchContact/',
        PORTS = (CLEAR),
        CLEAR_PORT = 7777,
        SITE = '*'
        )
        FOR SOAP
        (
        WEBMETHOD 'urn:ADV.AdventureWorks'.'GetSearchContact'
        (NAME = 'AdventureWorks.dbo.spSearchContactWS',
        SCHEMA = STANDARD,
        FORMAT = ALL_RESULTS
        ),
        WSDL = DEFAULT,
        BATCHES = DISABLED,
        SCHEMA = STANDARD,
        LOGIN_TYPE = WINDOWS,
        SESSION_TIMEOUT = 100,
        DATABASE = 'AdventureWorks',
        NAMESPACE = 'ADV.AdventureWorks',
        CHARACTER_SET = XML
        )
        GO
        [/highlight]

        In einem .NET Projekt setzt man nur noch einen Web-Verweis auf den Endpoint, den man mit eine Handvoll Code-Zeilen abrufen kann; hier als Beispiel eine Textbox mit dem Suchstring und ein DataGridView zur Anzeige:

        [highlight=VB]Private Sub ButtonSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSearch.Click
        Dim search As New WsSearchContact.ADV_EP_SearchContact
        Dim result As Object()
        Dim dataSet As DataSet

        search.UseDefaultCredentials = True

        result = search.GetSearchContact(Me.TextBoxSearch.Text)
        dataSet = result(0)

        Me.DataGridView1.DataSource = dataSet.Tables(0)

        End Sub[/HIGHLIGHT]

        Das wurde mit SQL Server 2005 eingeführt, ich meine aber gelesen zu haben, das mit SQL Server 2008 SOAP/HTTP Endpoints wieder abgekündigt (deprecated) wurden.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment

        Working...
        X