“Лучший” способ связаться между.NET 1.1 и.NET 3.5

Лучшим я имею в виду:

  • Самые дешевые затраты на разработку (1,1 проекта вряд ли будут жить> 6 месяцев),
  • Самая легкая миграция к WCF или подобный

Связываются между, я имею в виду:

  • Удаленная связь между компьютерами
  • Скорее всего, никакие ограничения брандмауэра

С.Net 1.1 опции, кажется: сокеты, дистанционная работа и различные ароматы веб-сервиса.

Опция использования двоичного файла, сериализированного, DataTables по сокетам был предложен как решение, но я опасаюсь этого.

ОБНОВЛЕНИЕ: "Сервер" в этом случае является Windows Embedded Standard с.Net 1.1. На данном этапе мы не можем добавить любые новые компоненты к изображению, такие как IIS, ASP или MSMQ и т.д. Примите это во внимание

6
задан Jack Ukleja 14 January 2010 в 07:54
поделиться

7 ответов

Поскольку в конечном итоге вы будете мигрировать на WCF, вы можете немедленно рассмотреть возможность создания службы WCF, используя Basichttpbinding, который поддерживает старый веб-сервисы Style ASMX, I.e. WS-BasicProfile 1.1. Вы сможете легко потреблять эту услугу из вашего приложения .NET 1.1.

Вы также можете рассмотреть возможность использования MSMQIntegrationBinding в WCF, где ваше приложение .Net 1.1 будет опубликовать / получать сообщения из MSMQ.

Возможно, вы захотите проверить следующие связанные статьи:

8
ответ дан 8 December 2019 в 14:43
поделиться

Поскольку большинство значений N не являются степенями 2, невозможно строго гарантировать вероятность 1/N от любого количества подбрасываний монет. Вместо этого вам придется рассчитаться на то, что подходит 1/N к вашей желаемой точности. Но эй, это все равно подбрасывание монеты для тебя.

Нарисуйте дерево решений с 2 ветвями в корне (обозначенные H и T), затем 2 ветвями в каждом узле (также обозначенные H и T), пока не достигнете достаточного количества листовых узлов для удовлетворения требований к точности. Отметьте нужную (для вас) долю листьев нужными значениями, например 1,2,3, если N = 3. Каждый лист затем определяет маршрут от корня, такой как HHHTTHH (или что-либо еще). Они определяют последовательность бросков, которые приводят к «3».

Я оставлю вам кодировку.

-121--4716677-

Розетки должны быть довольно простыми. Какие данные нужно отправить? Если это просто простые строки/другие примитивные типы, вы можете просто придумать базовый xml-макет и отправить его.

-121--4180482-

WebServices (на основе asmx) должны работать между ними без проблем.

3
ответ дан 8 December 2019 в 14:43
поделиться

Розетки должны быть довольно тривиальными. Какие данные вам нужно отправить? Если это просто простые строки / другие примитивные типы, вы можете просто придумать базовый макет XML и отправьте это.

1
ответ дан 8 December 2019 в 14:43
поделиться

Мы используем как удаленные, так и веб-сервисы в нашем коде для связи 1.1 <-> 3.5. Мы обнаружили, что веб-сервисы самые легкие для порта от 1,1 до 3,5.

1
ответ дан 8 December 2019 в 14:43
поделиться

Поверьте в этом или нет, после некоторого расследования , отступление на самом деле выглядит как очень хороший кандидат на это:

  • Это дает аналогичное API к WCF
  • Гораздо более высокий уровень, чем розетки
  • Поддержка нескольких «каналов» (HTTP или TCP)
  • довольно прост в миграции в WCF (необходимы изменения кода).

Насколько я могу работать веб-сервисы - это слишком сложно »для 1.1 из-за того, что он требует ASP.NET, который у нас нет +, как правило, слишком много настроек.

Розетки слишком низкий уровень.

MSMQ отсутствует только из-за высокого барьера к входу (аналогично веб-службам) ... мы не можем добавить какие-либо новые компоненты в нашу встроенную сборку Windows (машина 1.1), и я подозреваю, что MSMQ не приходит как Стандарт ".

1
ответ дан 8 December 2019 в 14:43
поделиться

В .NET 1.1 нельзя использовать двоично-сериализованные таблицы данных. В версии 1.1 и по умолчанию в версии 2.0 при сериализации DataSet или DataTable с помощью двоичного формата все, что вы получаете - это сериализация XML, хранящаяся в массиве байтов, с тем раздуванием, которое вы можете ожидать от всех этих повторяющихся тегов.

В .NET 2.0 и выше Вы можете установить RemotingFormat = SerializationFormat.Binary в DataSet или DataTable, чтобы получить истинную компактную сериализацию двоичных данных, но я не верю, что это опция в .NET 1.1.

1
ответ дан 8 December 2019 в 14:43
поделиться

Чтобы расширить SimpleCaptcha и настроить CAPTCHA, я понимаю, что вам придется создать свой собственный StartServlet (может быть, расширяет SimpleCaptchaServlet ). Для этого рекомендуется загрузить исходный код и просмотреть SimpleCaptchaServlet или StickyCaptchaServlet . Вот как выглядит метод doGet () метода SimpleCaptchaServlet :

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    Captcha captcha = new Captcha.Builder(_width, _height)
        .addText()
        .addBackground(new GradiatedBackgroundProducer())
        .gimp()
        .addNoise()
        .addBorder()
        .build();

    CaptchaServletUtil.writeImage(resp, captcha.getImage());

    req.getSession().setAttribute(NAME, captcha);
}

Это должно быть самозаверяющим: создайте собственный сервлет и поместите пользовательский код Captcha Builder в метод doGet () . Затем следуйте инструкциям раздела Установка , но вместо использования одного из сервлетов объявите свой в файле web.xml . Наконец, выполните пакетирование/развертывание приложения. Пример представлен в исходном распределении в примерах . Проверьте его, если вам нужны дополнительные рекомендации по структуре, зависимостям и упаковке веб- приложения.

-121--4268603-

Здесь можно найти ответы: https://stackoverflow.com/questions/507441/best-weather-apis

-121--4076954-

Нет необходимости использовать встроенную сериализацию для сериализации объектов DataTable. DataTable - это просто набор столбцов и строк. Следует просто закольцевать строки таблицы и сериализовать каждую из них.

В зависимости от компромиссов может потребоваться скопировать DataTable в эквивалентный объект передачи данных, а затем выполнить двоичную сериализацию этого объекта. Такой объект состоит из массива объектов, отражающих структуру DataTable . Объект будет иметь одно свойство для каждого столбца DataTable .

Таким образом, вы избегаете сериализации метаданных таблицы, и вы должны получить простую и быструю двоичную сериализацию.

Учитывая это, я бы избежал Remoting. Это правда, что структура несколько похожа на структуру WCF, но это все, кроме поддержки. Достаточно плохо вы застряли, используя почти самую устаревшую версию .NET, вы действительно не хотите полагаться на технологию, которая сама по себе устарела.

Розетки не очень красивые, но они хорошо понятны. Если вы будете осторожны, вы создадите код сокета, который относительно легко поддерживать, по крайней мере, до тех пор, пока вы должны придерживаться .NET 1.1.

Вы могли бы хотеть посмотреть на новые классы, добавленные в.NET 2.0 ( TcpClient, например), и создать подобный API. Таким образом, если вы когда-либо сможете обновить образ до .NET 2.0, то вам будет легче использовать преимущества кода, который будет необходимо поддерживать Microsoft.

1
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: