Jabber клієнт для SQL Server (JabberCLR), Інші СУБД, Бази даних, статті

XMPP – Extensible Messaging and Presence Protocol (Англ. розширюваний протокол обміну повідомленнями та інформацією про присутність), раніше відомий як Jabber[1] ([ʤæbə (r)], джаббер (англ. балаканина, базікання; тарабарщина) – це заснований на XML відкритий, вільний для використання протокол для миттєвого обміну повідомленнями та інформацією про присутність в режимі, близькому до режиму реального часу. Спочатку спроектований легко розширюваним, протокол, крім передачі текстових повідомлень, підтримує передачу голосу, відео і файлів по мережі.

На відміну від комерційних систем миттєвих повідомлень, таких, як AIM, ICQ, MSN і Yahoo, XMPP є децентралізованою, розширюваної і відкритою системою. Будь-який бажаючий може відкрити свій сервер миттєвих повідомлень, реєструвати на ньому користувачів і взаємодіяти з іншими серверами XMPP. На основі протоколу XMPP вже відкрито безліч приватних і корпоративних серверів XMPP. Серед них є достатньо великі проекти, такі як Google Talk, LiveJournal і Gizmo5.
(http://ru.wikipedia.org/wiki/Jabber)


В якості альтернативного клієнта пропоную CLR-збірку.


Для швидкого написання збірки я скористався вже готовою бібліотекою XMPP (. NET) – agsXMPP


01.using System;
02.using Microsoft.SqlServer.Server;
03.using agsXMPP;
04.using agsXMPP.protocol.client;
05.  
06.public class JabberCLR
07.{
08.    [SqlFunction]
09.  
10.    public static string SendMessage(string Server, string Username, string Password, string Port, string SendTo, string Message)
11.    {
12.  
13.        XmppClientConnection xmpp = new XmppClientConnection();
14.        xmpp.Resource = “JabberCLR”;
15.        xmpp.Server = Server;
16.        xmpp.Username = Username;
17.        xmpp.Password = Password;
18.        xmpp.Port = Convert.ToInt32(Port);
19.  
20.        Message msg = new Message();
21.        msg.Type = MessageType.chat;
22.        msg.To = new Jid(SendTo);
23.        msg.Body = Message;
24.  
25.        xmpp.Open();
26.  
27.        xmpp.OnLogin += delegate(object o){xmpp.Send(msg);};
28.  
29.        return (xmpp.XmppConnectionState.ToString());
30.    }
31.}

При реєстрації нашої збірки потрібно ще сама бібліотека agsXMPP.dll і System.Drawing.dll (З C: WINDOWSMicrosoft.NETFrameworkv2.0.50727). Збираємо ці 3 бібліотеки в одну папку, щоб не отримати помилку подібно цієї:
Error
Msg 10301, Level 16, State 1, Line 1
Assembly “JabberCLR” references assembly “agsxmpp, version=1.1.0.0, culture=neutral, publickeytoken=ff839b81f1debe86.”, which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: 2(failed to retrieve text for this error. Reason: 1815)). Please load the referenced assembly into the current database and retry your request.

або:
Error
Msg 10301, Level 16, State 1, Line 1
Assembly “JabberCLR” references assembly “system.drawing, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.”, which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: 2(failed to retrieve text for this error. Reason: 1815)). Please load the referenced assembly into the current database and retry your request.

Після цього реєструємо збірку на сервері БД:


1.CREATE ASSEMBLY [AssemblyJabber]
2.AUTHORIZATION [dbo]
3.FROM “C:CLRJabberCLR.dll”
4.WITH PERMISSION_SET = UNSAFE
5.GO

Створюємо скалярну функцію з посиланням на нашу збірку:


01.CREATE FUNCTION [dbo].[SendMessage]
02.(
03.@Server [nvarchar](128),
04.@Username [nvarchar](128),
05.@Password [nvarchar](128),
06.@Port [nvarchar](5),
07.@SendTo [nvarchar](128),
08.@Message [nvarchar](max)
09.)
10.RETURNS [nvarchar](50) WITH EXECUTE AS CALLER
11.AS
12.EXTERNAL NAME [AssemblyJabber].[JabberCLR].[SendMessage]
13.GO

Ну і сам виклик функції (відправка повідомлення):


01.SELECT [dbo].[SendMessage] (
02.– Будь-сервер Jabber
03.“jabber.ru”,
04.– JID від кого шолом повідомлення
05.“MyUser”,
06.– Пароль нашої учеткі
07.“MyPassword”,
08.– Порт на сервері
09.“5222”,
10.– Отримувач повідомлення
11.“mssql@jabber.ru”,
12.– Само повідомлення
13.“TestMessage”)
14.GO

Таким чином можна відсилати через XMPP-протокол повідомлення, наприклад про будь-яку подію на сервері БД.


Збірка писалася під Framework v3.5 для SQL Server 2008.


P.S.: Не забуваємо про


1)


1.SP_CONFIGURE “clr enabled”, 1
2.RECONFIGURE

2)


1.ALTER DATABASE [Ваша база] SET TRUSTWORTHY ON

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*