В последние несколько месяцев я часто сталкиваюсь с одними и теми же препятствиями в дизайне при разработке определенных видов распределенных приложений.
Во-первых, позвольте мне изложить мою среду и распределенные приложения:
- .NET среда
- Все общение осуществляется по HTTP
- Приложения часто находятся на разных серверах
- Обычно представляет собой комбинацию веб-приложений и служб рабочего стола.
- Обычно службы рабочего стола обслуживают множество веб-приложений, поэтому можно сказать, что это отношение один ко многим, когда служба Windows может опрашивать различные веб-приложения на предмет разных данных и обратной связи.
Теперь, в среде .NET, позвольте мне сначала заявить, что я бы предпочел не использовать SOAP специально или вообще не использовать WCF.
Это потому, что я бы хотел, чтобы общение было действительно простым.
Это значит, что я буду разбрасывать простой XML-код на четвертый. Однако я хотел бы, чтобы все мои вызовы API были статически типизированы и имели дело с классами, а не с необработанным XML.
Это потому, что я думаю, что новому разработчику гораздо удобнее и проще прийти к API и иметь в нем простые объекты со свойствами вместо необходимости конструировать и деконструировать XML.
Обычно я использую методы сериализации и десериализации на уровне интерфейса.
Пока все хорошо. Теперь вот проблемы
Затем я обычно создаю одну dll, которая определяет эти классы и методы сериализации, и я отбрасываю их во всех узлах.
Преимущество состоит в том, что у меня есть один исходный код, одно решение для изменения, и это означает, что все узлы имеют определения всего, и все же они могут общаться, используя простые сервисы RESTful и XML.
Очевидным недостатком является то, что теперь обновление этой библиотеки становится проблематичным, поскольку везде есть dll.
Итак, мой вопрос. Ребята, не могли бы вы что-нибудь предложить или указать мне несколько полезных шаблонов?
Простым решением было бы использовать что-то вроде SOAP или некоторый конфиг WCF, потому что тогда я мог бы обмениваться определениями классов по проводам. Однако я не хочу этого делать.
ура!