Использование API SOAP в приложении Windows
С помощью API SOAP служб Reporting Services можно получить доступ ко всем функциональным возможностям сервера отчетов. Поскольку API SOAP является веб-службой, к нему легко получить доступ, чтобы предоставить для пользовательских бизнес-приложений функции создания отчетов в масштабе предприятия. Чтобы получить доступ к веб-службе в приложении Windows, можно просто написать код, который вызывает службу. С помощью платформы Microsoft .NET Framework можно создать класс-посредник, который делает доступными свойства и методы веб-службы и позволяет воспользоваться привычной инфраструктурой и программными средствами для построения бизнес-приложений на основе технологии служб Службы Reporting Services.
Интеграция функций управления отчетами с помощью Windows Forms
В отличие от доступа по URL-адресу, API SOAP дает доступ к полному набору функций управления, доступных на сервере отчетов. Это значит, что все административные функции диспетчера отчетов становятся доступными для разработчиков по протоколу SOAP. Таким образом, с помощью Windows Forms можно разработать законченное средство по управлению и администрированию. Например, в приложении Windows может понадобиться разрешить пользователям получать содержимое пространства имен для сервера отчетов. Чтобы вывести список всех элементов в базе данных сервера отчетов, можно использовать метод веб-службы ListChildren, а затем представить эти элементы пользователям в списке, в поле со списком или в элементе управления иерархического представления. С помощью следующего кода веб-службы можно получить текущий список доступных отчетов в пользовательской папке My Reports, когда пользователь нажимает кнопку на форме:
' Button click event that retrieves a list of reports from
' the My Reports folder and displays them in a combo box
Private Sub listReportsButton_Click(sender As Object, e As System.EventArgs)
' Create a new Web service object and set credentials
' to Windows Authentication
Dim rs As New ReportingService2010()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Return the list of items in My Reports
Dim items As CatalogItem() = rs.ListChildren("/Adventureworks 2008 Sample Reports", False)
Dim ci As CatalogItem
For Each ci In items
' If the item is a report, add it to
' a combo box
If ci.TypeName = "Report" Then
catalogComboBox.Items.Add(ci.Name)
End If
Next ci
End Sub 'listReportsButton_Click
// Button click event that retrieves a list of reports from
// the My Reports folder and displays them in a combo box
private void listReportsButton_Click(object sender, System.EventArgs e)
{
// Create a new Web service object and set credentials
// to Windows Authentication
ReportingService2010 rs = new ReportingService2010();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Return the list of items in My Reports
CatalogItem[] items = rs.ListChildren("/Adventureworks 2008 Sample Reports", false);
foreach (CatalogItem ci in items)
{
// If the item is a report, add it to
// a combo box
if (ci.TypeName == "Report")
catalogComboBox.Items.Add(ci.Name);
}
}
Затем можно разрешить пользователям выбрать отчет из поля со списком и просмотреть отчет на форме с помощью элемента управления веб-браузера или элемента управления «Изображение».
Включение просмотра отчетов и перехода по отчетам с помощью Windows Forms
Для интеграции отчетов в приложения Windows Forms доступно два метода.
Можно использовать API SOAP для подготовки отчетов к просмотру в любом из поддерживаемых форматов с помощью метода Render. Включение просмотра отчетов и переходов по отчетов с помощью протокола SOAP сопряжено с некоторыми недостатками.
Нельзя воспользоваться встроенными функциями панели инструментов отчета, которая доступна в средстве просмотра HTML-страниц при доступе по URL-адресу.
При подготовке к просмотру в формате HTML изображения или ресурсы необходимо обрабатывать в отдельных потоках с помощью метода RenderStream.
Использование доступа по URL-адресу для подготовки отчетов к просмотру дает небольшое преимущество в производительности по сравнению с API SOAP.
Однако метод Render API SOAP позволяет готовить отчеты к просмотру и сохранять их в различных выходных форматах программным образом. Такая возможность дает преимущество над доступом по URL-адресу, для которого необходимо участие пользователя. С помощью метода Render API SOAP отчет можно подготовить к просмотру в любом из поддерживаемых выходных форматов.
Также можно использовать свободно распространяемые элементы управления ReportViewer, входящие в состав среды Microsoft Visual Studio 2008. Элементы управления ReportViewer упрощают внедрение функций служб Службы Reporting Services в пользовательские приложения. Элементы управления ReportViewer предназначены для разработчиков, которым нужно встроить в приложения заранее спроектированные отчеты. Например, приложение, предназначенное для управления веб-сайтом, может содержать отчеты, отображающие анализ посещений различных разделов веб-сайта компании. Элементы управления, внедряемые в приложение, служат простой альтернативой включению серверных компонентов служб Службы Reporting Services на этапе развертывания приложения. Эти элементы управления обеспечивают функциональные возможности отчетов, но не поддерживают дополнительные возможности создания, публикации, распространения и доставки отчетов, доступные в службах Службы Reporting Services.
Существует две версии элементов управления ReportViewer: одна предназначена для многофункциональных клиентских приложений Windows, а вторая — для приложений ASP.NET. Элементы управления поддерживают режимы локальной и удаленной обработки. В режиме локальной обработки приложение предоставляет определения отчетов, наборы данных и триггерную обработку отчетов. В режиме удаленной обработки получение данных и обработка отчетов выполняется на сервере отчетов, а элементы управления используются для отображения и навигации по отчету. Такая модель позволяет разрабатывать мощные, легкомасштабируемые приложения.
Документацию по элементам управления ReportViewer см. в справке по среде Visual Studio в Интернете. Дополнительные сведения см. в документации по продукту Visual Studio.
См. также