Хочу использовать мой текущий сайт 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 - вы, вероятно, захотите, чтобы основной проект поделился кодом между ними. Ваше приложение для настольного компьютера может обращаться к той же базе данных, что и ваше веб-приложение, но вам может потребоваться учитывать количество соединений и задержку между клиентом для настольного компьютера и базой данных в Интернете. Вам нужно будет установить его на ПК, чтобы приложение работало, если вы находитесь в сети, ваш системный администратор может сделать это с помощью групповой политики.

Существуют такие вещи, как локальное хранилище и т. Д. Для автономного / прерывистого подключения к веб-сайтам, я не думаю, что это поможет в вашем сценарии.

Другие вопросы по тегам