Кроссплатформенный асинхронный HTTP и DB с открытым исходным кодом на C #
-
05-07-2019 - |
Вопрос
Кто-нибудь знает хороший ресурс для библиотек с открытым исходным кодом для асинхронного C # (или нативные вещи для языка). Меня интересует что-нибудь по этой теме, но я специально ищу материал, относящийся к вызовам HTTP и DB. Может быть, управляемая событиями инфраструктура с плагинами для HTTP и DB?
Пожалуйста, не говорите о решении, отличном от C #, или о чем-либо, что не работает в режиме моно (если только не планируется запустить его в моно).
Решение
Для HTTP это в некоторой степени зависит от того, говорите ли вы о клиенте или сервере. Предполагая клиента, вы можете просто использовать методы * Async в WebClient
http: // www. go-mono.com/docs/index.aspx?link=T:System.Net.WebClient/ *
Для БД класс sqlcommand (или аналогичный) предоставляет методы BeginExecute * для асинхронных вызовов
http: // www.go-mono.com/docs/index.aspx?link=T:System.Data.SqlClient.SqlCommand/ *
Другие советы
Возможно, вам придется использовать какую-то систему очередей. Есть много механизмов очереди. MSMQueue является «стандартным» Решение Microsoft.
Вы смотрели на систему интернет-шины Linxter? Некоторые подробности можно найти на http://www.linxter.com и в некоторых примерах приложений, в которых показано, как выполнять База данных транзакций распространяется через Интернет.
Вопрос довольно общий, и HTTP, и DB, и асинхронный могут означать много разных вещей, в зависимости от требований:
На codeplex вы можете найти реализацию HTTP-сервера, более совместимую со стандартами и управляемую событиями, совместимую с Моно и был успешно использован другими.
Существует целый ряд провайдеров Asp.Net, а также NHibernate
Для Linq to Sql лучшим вариантом, вероятно, будет использование DbLinq , хотя DbLinq включен в пространство имен Mono.
Вам, вероятно, следует проверить NServiceBus . Если он работает на моно, он предлагает вам хорошую основу для асинхронных вызовов (на основе обмена сообщениями). По умолчанию он не обеспечивает подключения к БД или HTTP, но его довольно легко интегрировать.