- Клиентские приложения среднего уровня Middle-Tier Client Applications
- Увеличение производительности клиента среднего уровня Increasing Middle-Tier Client Performance
- IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
- Что такое клиент? Клиентский компьютер и клиентское приложение
- Общее определение термина клиент
- Клиентский компьютер
- Клиентская программа/приложение
- Создание клиентского приложения .NET Framework (краткое руководство по службам данных WCF) Creating the .NET Framework Client Application (WCF Data Services Quickstart)
- Создание клиентского приложения в среде Visual Studio To create the client application by using Visual Studio
- Добавление в проект ссылки на службу данных To add a data service reference to the project
- Обращение к данным службы данных в приложении WPF To access data service data in the WPF application
- Сборка и запуск приложения NothwindClient To build and run the NorthwindClient application
- Следующие шаги Next Steps
Клиентские приложения среднего уровня Middle-Tier Client Applications
В этом разделе обсуждаются различные проблемы, характерные для клиентских приложений среднего уровня, использующих Windows Communication Foundation (WCF). This topic discusses various issues specific to middle-tier client applications that use Windows Communication Foundation (WCF).
Увеличение производительности клиента среднего уровня Increasing Middle-Tier Client Performance
По сравнению с предыдущими технологиями связи, такими как веб-службы с использованием ASP.NET, создание экземпляра клиента WCF может быть более сложным из-за обширного набора функций WCF. Compared to previous communications technologies, such as Web services using ASP.NET, the creation of a WCF client instance can be more complex due to the rich feature set of WCF. Например, при открытии объекта ChannelFactory он может установить безопасный сеанс со службой, что увеличит время запуска экземпляра клиента. For example, when a ChannelFactory object is opened it can establish a secure session with the service, a procedure that increases the startup time for the client instance. Как правило, эти дополнительные функции не влияют на клиентские приложения, так как клиент WCF выполняет несколько вызовов, а затем закрывается. Typically, these additional feature capabilities do not affect client applications greatly since the WCF client makes several calls, and then closes.
Однако клиентские приложения среднего уровня могут быстро создавать множество клиентских объектов WCF и, в итоге, повысить требования к инициализации. Middle-tier client applications, however, can create many WCF client objects quickly and, as a result, experience increased initialization requirements. Существует два основных подхода к увеличению производительности приложений среднего уровня при вызове служб. There are two main approaches to increasing the performance of middle-tier applications when calling services:
Кэшировать клиентский объект WCF и повторно использовать его для последующих вызовов, где это возможно. Cache the WCF client object and reuse it for subsequent calls where possible.
Создайте ChannelFactory объект, а затем используйте этот объект для создания новых объектов канала клиента WCF для каждого вызова. Create a ChannelFactory object and then use that object to create new WCF client channel objects for each call.
При использовании этих подходов следует рассмотреть следующие вопросы. Issues to consider when using these approaches include:
Если служба обслуживает зависящее от клиента состояние с помощью сеанса, то нельзя повторно использовать клиент WCF среднего уровня с несколькими клиентскими запросами, так как состояние службы связано с клиентом среднего уровня. If the service is maintaining a client-specific state by using a session, then you cannot reuse the middle-tier WCF client with multiple-client tier requests because the service’s state is tied to that of the middle-tier client.
Если служба должна выполнять проверку подлинности для каждого клиента, необходимо создать новый клиент для каждого входящего запроса на среднем уровне, а не использовать клиент WCF среднего уровня (или объект канала клиента WCF), так как учетные данные клиента среднего уровня нельзя изменить после создания клиента WCF (или ChannelFactory ). If the service must perform authentication on a per-client basis, you must create a new client for each incoming request on the middle tier instead of reusing the middle-tier WCF client (or WCF client channel object) because the client credentials of the middle tier cannot be modified after the WCF client (or ChannelFactory ) has been created.
Поскольку каналы и клиенты, созданные этими каналами, потокобезопасны, они могут не поддерживать запись нескольких сообщений по сети одновременно. While channels and clients created by the channels are thread-safe, they might not support writing more than one message to the wire concurrently. При отправке больших сообщений, в частности, при потоковой передаче, операция отправки может заблокироваться, ожидая завершения еще одной отправки. If you are sending large messages, particularly if streaming, the send operation might block waiting for another send to complete. Это может стать причиной возникновения двух проблем: отсутствия параллелизма и возможности взаимоблокировки, если поток команд управления возвращается в службу, повторно используя канал (т. е. общий клиент вызывает службу, путь кода которой приводит к обратному вызову общего клиента). This causes two sorts of problems: a lack of concurrency and the possibility of deadlock if the flow of control returns to the service reusing the channel (that is, the shared client calls a service whose code path results in a callback to the shared client). Это справедливо независимо от типа клиента WCF, который вы повторно использовали. This is true regardless of the type of WCF client you reuse.
Каналы со сбоем необходимо обрабатывать независимо от того, используется ли канал совместно. You must handle faulted channels regardless of whether you share the channel. Однако, если каналы используются повторно, канал со сбоем может привести к отмене нескольких ожидающих запросов или отправок. When channels are reused, however, a faulting channel can take down more than one pending request or send.
IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
Что такое клиент? Клиентский компьютер и клиентское приложение
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Сервера и протоколы. Также я решил, что на моем блоге просто необходима рубрика Вопрос-ответ, в которой будет два раздела: «Что такое?» и «Как сделать?». Большинство публикаций на моем блоге довольно большие и подробные, но в этих разделах я буду стараться ответить на один простой вопрос коротко, понятно и с примерами. Грубо говоря, каждая запись — это ответ на вопрос, который задает новичок в сфере web.
Что такое клиент? Клиентский компьютер и клиентское приложение
В этой записи мы разберемся со значением термина клиент и поговорим о том, что такое клиентский компьютер и клиентское приложение. Надеюсь, что данная рубрика окажется действительно полезной и нужной для новичков.
Общее определение термина клиент
Мой блог имеет достаточно узкую тематику, но давайте сперва разберемся с термином клиент и посмотрим, что это слово означает. Как не банально, но клиент – это заказчик той или иной услуги или покупатель. Неважно где и что вы покупаете, например, вы покупаете доменное имя и становитесь клиентом регистратора или вы покупаете хостинг, тогда вы становитесь клиентом хостинг-провайдера. Покупая хлеб в магазине, вы становитесь клиентом магазина.
Вообще, термин клиент пришел к нам из Древнего Рима, в исконном значении слова клиент – это свободный гражданин Римской Империи, который находится в зависимости от патрона (знатного гражданина), но в то же время клиент пользуется покровительством и защитой патрона.
Если говорить про информатику, то клиент – это программное средство или физическое устройство, которое посылает запросы серверу (поставщику услуг)
Клиентский компьютер
В принципе, для описания термина клиентский компьютер нам подойдут оба определения, представленных выше. Если говорить про сеть Интернет, то ваше устройство, с помощью которого вы зашли на мой сайт – это клиентский компьютер, вы искали информацию и нашли ее на моем блоге, соответственно, вы искали того, кто удовлетворит вашу потребность в информации.
Если говорить про локальную сеть или, как частный случай, корпоративную сеть, то клиентский компьютер – это маломощный компьютер, который пользуется вычислительными мощностями сервера при необходимости выполнения той или иной операции. В общем, клиентский компьютер – это машина, которая пользуется услугами.
Клиентская программа/приложение
С клиентскими программами все несколько сложнее, чем с клиентскими компьютерами. Типичным примером клиентского приложения является браузер, с помощью которого вы заходите на сайты. Во-первых, вам нужно понимать архитектуру взаимодействия клиент-сервер. Во-вторых, вам нужно знать, что и клиентские программы, и серверные могут взаимодействовать на одном и том же компьютере.
В общем случае клиентское приложение – это приложение, отправляющее запросы серверу с целью получения той или иной информации. Термин клиент в области IT чаще всего применяется именно к приложениям. Если говорить о сфере веб, то мы уже упоминали о браузерах, которые отправляют серверу специальные HTTP сообщения, которые получили название HTTP запрос, серверы в свою очередь отправляют клиенту сообщения, которые называются HTTP ответы.
Запросы клиента содержат специальные HTTP методы, которые позволяют указать серверу на то, как он должен обрабатывать запрос (некоторые запросы позволяют получить информацию с сервера, некоторые удалить информацию, а некоторые записать, всё зависит от метода). HTTP сервер, отправляя ответ, сообщает клиенту о том, как он понял запрос при помощи специальных кодов состояния.
Если говорить про MySQL сервер, то у него есть клиент, который позволяет выполнять SQL запросы к базе данных из командой строки (это специальное приложение), а также есть клиент с графическим интерфейсом, который позволяет управлять базами данных при помощи мышки. В качестве сервера, к которому делают запросы браузеры, можно привести пример сервера Apache. Если же вас интересуют готовые сборки серверов для веб-разработки, то можно порекомендовать: локальный веб-сервер AMPPS и российскую сборку Denwer.
Подведем итоги: клиентское приложение – это программа, которая позволяет человеку взаимодействовать с сервером и получать требуемые услуги.
Создание клиентского приложения .NET Framework (краткое руководство по службам данных WCF) Creating the .NET Framework Client Application (WCF Data Services Quickstart)
Службы данных WCF является устаревшим и больше не будет доступен для скачивания из центра загрузки Майкрософт. WCF Data Services has been deprecated and will no longer be available for download from the Microsoft Download Center. Службы данных WCF поддерживали только более ранние версии протокола Microsoft OData (v1-v3) и не были активны в рамках активной разработки. WCF Data Services supported earlier versions of the Microsoft OData (V1-V3) protocol only and has not been under active development. OData v1-v3 заменена OData версии 4, которая является отраслевым стандартом, опубликованным OASIS и ратифицирован по ISO. OData V1-V3 has been superseded by OData V4, which is an industry standard published by OASIS and ratified by ISO. OData v4 поддерживается в базовых библиотеках, совместимых с OData V4, доступных в Microsoft. OData. Core. OData V4 is supported through the OData V4 compliant core libraries available at Microsoft.OData.Core. Документация по поддержке доступна по адресу OData.NET, а библиотеки служб OData v4 доступны в Microsoft. AspNetCore. OData. Support documentation is available at OData.Net, and the OData V4 service libraries are available at Microsoft.AspNetCore.OData.
Рестиер — это последующий службы данных WCF. RESTier is the successor to WCF Data Services. Рестиер помогает в минутах запрашивать стандартизированный, поддерживающий запросы интерфейс RESTFUL на основе HTTP. RESTier helps you bootstrap a standardized, queryable, HTTP-based REST interface in minutes. Как и службы данных WCF, Рестиер предоставляет простые и понятные способы формирования запросов и перехвата отправок до и после попадания в базу данных. Like WCF Data Services before it, Restier provides simple and straightforward ways to shape queries and intercept submissions before and after they hit the database. И, как и веб-API + OData, у вас по-прежнему есть гибкость в добавлении собственных настраиваемых запросов и действий с помощью уже знакомых методов. And like Web API + OData, you still have the flexibility to add your own custom queries and actions with techniques you’re already familiar with.
Это последняя задача краткого руководства по службы данных WCF. This is the final task of the WCF Data Services quickstart. В этой задаче вы добавите в решение консольное приложение, добавите ссылку на веб-канал Open Data Protocol (OData) в это новое клиентское приложение и получите доступ к каналу OData из клиентского приложения, используя созданные классы клиентской службы данных и клиентские библиотеки. In this task, you will add a console application to the solution, add a reference to the Open Data Protocol (OData) feed into this new client application, and access the OData feed from the client application by using the generated client data service classes and client libraries.
Для доступа к каналу данных наличие клиентского приложения на основе .NET Framework необязательно. A .NET Framework-based client application is not required to access a data feed. Доступ к службе данных может осуществляться любым компонентом приложения, использующим канал OData. The data service can be accessed by any application component that consumes an OData feed. Дополнительные сведения см. в разделе Использование службы данных в клиентском приложении. For more information, see Using a Data Service in a Client Application.
Создание клиентского приложения в среде Visual Studio To create the client application by using Visual Studio
В Обозреватель решений щелкните решение правой кнопкой мыши, выберите Добавить, а затем — Новый проект. In Solution Explorer, right-click the solution, click Add, and then click New Project.
В левой области выберите установленные > [Visual C# или Visual Basic] > Рабочий стол Windows, а затем выберите шаблон приложения WPF . In the left pane, select Installed > [Visual C# or Visual Basic] > Windows Desktop, and then select the WPF App template.
Введите NorthwindClient в качестве имени проекта и нажмите кнопку ОК. Enter NorthwindClient for the project name, and then click OK.
Откройте файл MainWindow.xaml и замените XAML-код следующим кодом. Open the file MainWindow.xaml and replace the XAML code with the following code:
Добавление в проект ссылки на службу данных To add a data service reference to the project
В Обозреватель решений щелкните правой кнопкой мыши проект узлом NorthwindClient, выберите команду Добавить > ссылку на службу, а затем нажмите кнопку обнаружить. In Solution Explorer, right-click the NorthwindClient project, click Add > Service Reference, and then click Discover.
При этом отображается служба данных Northwind, созданная в первой задаче. This displays the Northwind data service that you created in the first task.
В текстовом поле пространство имен введите Northwind , а затем нажмите кнопку ОК. In the Namespace text box, type Northwind , and then click OK.
При этом в проект добавляется новый файл кода, содержащий классы данных, которые используются для обращения и взаимодействия с ресурсами службы данных как с объектами. This adds a new code file to the project, which contains the data classes that are used to access and interact with data service resources as objects. Классы данных создаются в пространстве имен NorthwindClient.Northwind . The data classes are created in the namespace NorthwindClient.Northwind .
Обращение к данным службы данных в приложении WPF To access data service data in the WPF application
В Обозреватель решений в разделе узлом NorthwindClient щелкните правой кнопкой мыши проект и выберите команду Добавить ссылку. In Solution Explorer under NorthwindClient, right-click the project and click Add Reference.
В диалоговом окне Добавление ссылки перейдите на вкладку .net , выберите System.Data.Services.Client.dll сборку и нажмите кнопку ОК. In the Add Reference dialog box, click the .NET tab, select the System.Data.Services.Client.dll assembly, and then click OK.
В Обозреватель решений в разделе узлом NorthwindClient откройте кодовую страницу файла MainWindow. XAML и добавьте следующую using инструкцию ( Imports в Visual Basic). In Solution Explorer under NorthwindClient, open the code page for the MainWindow.xaml file, and add the following using statement ( Imports in Visual Basic).
Вставьте следующий код, запрашивающий службу данных и привязывающий результат к коллекции DataServiceCollection класса MainWindow . Insert the following code that queries that data service and binds the result to a DataServiceCollection into the MainWindow class:
Имя узла localhost:12345 нужно заменить на сервер и порт, на котором размещен экземпляр службы данных Northwind. You must replace the host name localhost:12345 with the server and port that is hosting your instance of the Northwind data service.
Вставьте следующий код, сохраняющий изменения, в класс MainWindow . Insert the following code that saves changes into the MainWindow class:
Сборка и запуск приложения NothwindClient To build and run the NorthwindClient application
В Обозреватель решений щелкните правой кнопкой мыши проект узлом NorthwindClient и выберите Назначить запускаемым проектом. In Solution Explorer, right-click the NorthwindClient project and select Set as startup project.
Чтобы запустить приложение, нажмите клавишу F5. Press F5 to start the application.
При этом выполняется сборка решения и запуск клиентского приложения. This builds the solution and starts the client application. Данные извлекаются из службы данных и отображаются в консоли. Data is requested from the service and displayed in the console.
Измените значение в столбце количество сетки данных и нажмите кнопку сохранить. Edit a value in the Quantity column of the data grid, and then click Save.
Изменения будут сохранены в службе данных. Changes are saved to the data service.
Эта версия приложения NorthwindClient не поддерживает добавление и удаление сущностей. This version of the NorthwindClient application does not support adding and deleting of entities.
Следующие шаги Next Steps
Вы успешно создали клиентское приложение, которое обращается к примеру веб-канала OData Northwind. You have successfully created the client application that accesses the sample Northwind OData feed. Вы также выполнили службы данных WCF быстрый запуск. You’ve also completed the WCF Data Services quickstart!
Дополнительные сведения о доступе к каналу OData из платформа .NET Framework приложения см. в разделе службы данных WCF Client Library. For more information about accessing an OData feed from a .NET Framework application, see WCF Data Services Client Library.