(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Jabber клиент для SQL Server (JabberCLR)

Источник: t-sql

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:\WINDOWS\Microsoft.NET\Framework\v2.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:\CLR\JabberCLR.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

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 19.01.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Windows Professional 10, Электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
3D и виртуальная реальность. Все о Macromedia Flash MX.
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100