Миграция приложения Windows Forms с серверной части SQL Server в Silverlight - PullRequest
0 голосов
/ 30 марта 2012

В настоящее время у меня есть приложение Windows Forms, которое получает данные из базы данных SQL Server на отдельном сервере в нашей локальной сети. По сути, мы хотим максимально использовать наш исходный код, который взаимодействует с базой данных SQL Server, и изменить часть форм на решение Silverlight для тонких клиентов. Проблема заключается в том, что наше приложение Windows Forms является полнофункциональным клиентским приложением; тем не менее, наша компания недавно добавила сотрудников, работающих за несколько тысяч миль, поэтому они имеют длительную задержку в работе с нашим приложением, поскольку оно получает данные с сервера базы данных, который находится далеко от приложения клиентских форм сотрудника.

Идеальное для меня решение позволило бы разработчику динамически отображать данные на основе различных таблиц базы данных или представлений во время выполнения, например, исходя из того, какой элемент древовидной структуры щелкает пользователь, и не нужно жестко кодировать схему базы данных во время разработки. Так работает наше приложение Windows Forms.

Один из аспектов Silverlight, с которым я сейчас борюсь, заключается в том, что если вы хотите получить доступ к данным из базы данных SQL Server на стороне веб-сервера, вы должны использовать веб-сервисы или WCF RIA, что, конечно, включает создание EDMX времени разработки. файл или создание классов LINQ to SQL. Проблема в том, что наша схема базы данных меняется довольно часто, поэтому мне придется вручную обновлять веб-службы вместе с EDMX и / или LINQ to SQL. То, что я действительно хотел бы сделать, это просто подключиться к базе данных SQL Server, используя ADO.NET для заполнения различных наборов данных Silverlight без необходимости иметь дело с веб-службами. Обратите внимание, что я довольно новичок в Silverlight, поэтому, возможно, я упускаю что-то очевидное.

Вот одна из многих ссылок, которые я проверил, работая над этим решением; однако это просто переносит приложение Windows Forms, у которого уже есть веб-сервис, в приложение silverlight, имеющее аналогичный веб-сервис, поэтому, похоже, это не относится к моей ситуации:

http://www.silverlight.net/learn/advanced-techniques/moving-from-windows-forms/migrating-a-windows-forms-application-to-silverlight

Вот еще один сайт, на который я внимательно смотрел; однако база данных, с которой я работаю, настолько велика и имеет такую ​​большую схему, что всякий раз, когда я пытаюсь открыть или работать с окном Данные-> Показать источники данных или Данные-> Добавить источник данных в Visual Studio, это занимает около часа. процессора работает на полную мощность, прежде чем он отображает значения в Visual Studio. Конечно, это делает Visual Studio практически непригодным для использования, если этот час ожидания происходит каждый раз, когда я пытаюсь внести изменения в XAML-дизайнер silverlight:

http://msdn.microsoft.com/en-us/gg315272

Кроме того, приведенный выше пример веб-сайта не является приемлемым решением, поскольку мы хотим, чтобы веб-сервер и сервер базы данных были двумя отдельными компьютерами, поэтому мы не сможем поместить базу данных в папку App_Data в решении silverlight.

Если у кого-либо есть какие-либо предложения или рекомендации по переносу этого приложения, они будут весьма признательны. ТИА.

Роджер

1 Ответ

0 голосов
/ 02 апреля 2012

В основном я обнаружил, что, поскольку я привык писать настольные приложения, которые взаимодействуют напрямую с базой данных (например, SQL Server), я был удивлен, обнаружив, что в Silverlight нет объекта, который бы позволял вам это делать (SqlConnection, OdbcConnection и т. Д.). Это связано с тем, что Silverlight является клиентской платформой, предназначенной для запуска из браузера в любой точке мира, и поэтому не имеет смысла иметь прямой доступ к базам данных, поскольку базы данных обычно скрыты за брандмауэром. Цель службы - предоставить интерфейс для публичного предоставления данных с сервера, выступая в качестве канала между данными в базе данных и внешними приложениями. (источник: Крис Андерсон, «Профессиональные бизнес-приложения с Silverlight 5»)

Обратите внимание, что я также допустил ошибку при создании DomainService и присвоении ему всех таблиц, запросов и хранимых процедур во всей базе данных, когда на самом деле нужно создать отдельную службу домена для каждой отдельной таблицы. или запрос. Это объясняет, почему у меня возникла проблема раньше, когда мне пришлось ждать около часа, пока не появится окно Источники данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...