Хочу использовать мой текущий сайт asp.net на рабочем столе
Я очень новичок в asp.net. Infact все, что я знаю до даты через веб-сайт:) У меня есть сайт, который работает нормально. но теперь по некоторым причинам я должен преобразовать его в настольное приложение. Я хочу, чтобы они оба работали. Мои вопросы: а) как я могу преобразовать его в настольное приложение? б) какой сервер я буду использовать, так как у меня уже есть веб-сайт на сервере Goaddy? c) я должен установить настольное приложение на каждом оконном ПК, чтобы оно работало? любая другая альтернатива, если так? г) я хочу, чтобы приложение для моего компьютера работало так же, как веб-сайт.
любая помощь будет оценена. заранее спасибо:)
3 ответа
А) Вам нужно будет изучить WinForms. Веб-сайты (или, как я полагаю, в вашем случае это будет веб-приложение) создаются совершенно иначе, чем приложения WinForm.
б) Ваше веб-приложение останется с GoDaddy, и в) вам нужно будет установить его на каждый рабочий стол, который будет использовать версию веб-приложений WinForms.
б) + в) но если вы правильно построите свое приложение WinForms, вы, возможно, сможете использовать базу данных с GoDaddy в качестве источника данных.
г) веб-приложения могут быть в автономном режиме. В офисной среде у вас может быть центральный сервер, который можно использовать в качестве веб-сервера. Вы бы установили там свое веб-приложение и, зная имя центрального сервера, вы могли бы получить к нему доступ, например,
http://myinternalserver:8080/mywebapp/
или через IP-адрес
http://192.168.5.255/mywebapp/
Таким образом, если ваше внешнее интернет-соединение прекратит работу, веб-приложение все равно будет работать (если у вас нет внешних зависимостей). Если вы идете по этому пути, есть много разных способов заставить его работать.
По моему личному мнению, вам лучше всего использовать 1 сервер в вашей офисной среде для размещения веб-приложения, чтобы обеспечить доступ ко всем настольным компьютерам в вашем офисе. Это будет также дешевле, чем наличие учетной записи хостинга в другом месте. Это обеспечивает больший контроль над вами, более быстрые обновления, не беспокоясь о проблемах с оборудованием. Вы можете подключиться ко всем функциям безопасности сервера и войти в систему. В принципе, это намного круче и веселее, чем WinForms:D
Надеюсь это поможет.
Я решил эту проблему следующим образом:
Создайте небольшое приложение winforms, которое запускается (или минимизируется) в трее.
Получите сборку Mono.WebServer из монопроекта.
Добавьте его как ссылку на ваше веб-приложение, установите для localcopy значение true.
Поместите ваше веб-приложение в папку c:\what \YourWebApplication
Ссылка на ту же версию mono.webserver в вашем приложении winforms.
Приложение должно запускаться с портом> 10000 (поэтому оно не требует прав администратора)
Откройте браузер по вашему выбору по адресу http:// localhost:yourport (вы можете скопировать google-chrome и использовать его без прав администратора) с помощью system.diagnostics.process.start
И использовать веб-приложение в качестве настольного приложения.
Если вы используете Firebird, вы можете использовать Firebird в Интернете, а Firebird - на рабочем столе.
Если вы используете MySQL, вы можете использовать MariaDb (просто скопируйте zip-deploy в папку по вашему выбору и запустите базу данных перед запуском приложения).
Если вы используете PostgreSQL, вы можете использовать Postgresql Portable и xcopy deploy перед запуском приложения.
если вы используете SQL-Server, вы облажались, потому что SQL-Server Express потребует установки...
public static void Main (string[] args)
{
int Port=18080;
string path=@"c:\wherever\YourWebApplication";
XSPWebSource websource=new XSPWebSource(IPAddress.Any,Port);
ApplicationServer WebAppServer=new ApplicationServer(websource);
//"[[hostname:]port:]VPath:realpath"
string cmdLine=Port+":/:"+path;
WebAppServer.AddApplicationsFromCommandLine(cmdLine);
WebAppServer.Start(true);
Console.WriteLine("Mono.WebServer running. Press enter to exit...");
System.Diagnostics.Process.Start("iexplore http:// localhost /:" + Port.ToString());
Console.ReadLine();
WebAppServer.Stop();
}
Если вы хотите, чтобы данные находились на центральном сервере, вам нужно использовать веб-службы (JSON/JSONP) и http-post для обновления и получения данных. Тем не менее, это не очень офлайн-иш.
В любом случае, избегайте необходимости поддерживать 2 отдельных приложения любой ценой.
Вы также можете синхронизировать базы данных между автономной и онлайн-версией. Вам понадобится веб-сервис, который синхронизирует данные (и схему) между ними.
Если вы работаете с GUID (uuids в PostgreSQL) в своих таблицах, вы можете синхронизировать новые записи в автономной базе данных относительно легко в онлайн-базе данных.
Проблема начинается при удалении или изменении записей.
Вам нужно разобраться "что произойдет, если кто-то другой изменил после того, как вы синхронизировали и перешли в автономный режим, и вы изменили то же поле в той же строке, но на другое значение?)
А как вы обнаруживаете удаления?
Новая строка, возможно, была добавлена после того, как вы перешли в автономный режим, поэтому вы не можете просто удалить любую строку, которой больше нет в вашем offline-db...
Простое решение будет:
Блокировать изменения и удалять в автономном режиме
Что ж, вам нужно провести рефакторинг некоторого вашего кода, чтобы вы могли поделиться им между вашим веб-приложением asp.net и настольным приложением winforms - вы, вероятно, захотите, чтобы основной проект поделился кодом между ними. Ваше приложение для настольного компьютера может обращаться к той же базе данных, что и ваше веб-приложение, но вам может потребоваться учитывать количество соединений и задержку между клиентом для настольного компьютера и базой данных в Интернете. Вам нужно будет установить его на ПК, чтобы приложение работало, если вы находитесь в сети, ваш системный администратор может сделать это с помощью групповой политики.
Существуют такие вещи, как локальное хранилище и т. Д. Для автономного / прерывистого подключения к веб-сайтам, я не думаю, что это поможет в вашем сценарии.