Клиентская архитектура веб-сервиса - c # - PullRequest
1 голос
/ 18 июля 2011

Доброе утро,

Мне было поручено разработать клиентский инструмент для API облачного веб-сервиса (простой WSDL).Я не опытный и даже не квалифицированный разработчик, у меня есть промежуточные знания C #, и я достаточно верю, чтобы сделать эту работу, но я не хочу, чтобы решение просто работало, я хочу создать что-то чистое и хорошо написанное, что другой разработчикумеет читать и понимать, и это интуитивно понятно.

Вы можете остановить меня и сказать: «Это то, чему вы можете научиться только через опыт».если это так, то я могу принять это и двигаться дальше, но если у вас есть какой-то совет, остальные детали приведены ниже.

Решением будет консольное приложение C #.Я подготовил спецификацию для этого, она ниже:

1.) Создайте консольное приложение в .NET, которое имеет следующие возможности:

2.) Использование файла CSV, содержащегоОбработанные данные ИЛИ ODBC Соединение с промежуточной базой данных SQL и чтение записей непосредственно из таблицы загрузки

3.) Выполните следующие вызовы веб-службы Zuora (асинхронный) ·
SubscribeWithExisitingAccount () · Создать () ·
Вход () · Подписаться () · Обновить () · Удалить ()

(*) Выделенные таким образом вызовы возможно избежать,

* можно создать подписку, учетную запись и контакт с помощью одного вызова (Subscribe ())

* Create () может быть исключением, так как может возникнуть сценарий, когда нам нужно создать экземпляробъект без соответствующей подписки.

4.) Сообщать об успехах и ошибках каждой записи в CSV-файл.

 Mappings will be done on a 1 to 1 basis, where the input file

будет иметь те же имена столбцов, что и целевой

Где я ляCK Knowledge следует дизайну, который сделает это приложение разумным и эффективно работает.Я не ищу кого-то, кто мог бы сделать это для меня, мне нужны советы о том, как я могу улучшить то, что я уже делаю

В настоящее время я просто органично строю решение из-за недостатка предвиденияна таких работах, поэтому я также заинтересован в том, что я могу сделать после разработки.

ВСЕ Советы и критика приветствуются.

Заранее спасибо,

Мэтт

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

Принципы проектирования - это большая тема, и то, как их правильно применять, - это только то, что приходит с опытом.Их намного больше, чем вы когда-либо использовали бы в данном проекте, и в некоторых случаях их правильное использование означает, что они вообще не используются (или выбираются только те, которые подходят для проекта).Первый шаг - это желание написать хороший код, поэтому вы начинаете в правильном месте.:) Пара вещей действительно выделялась для меня:

2.) Использовать CSV-файл, содержащий обработанные данные ИЛИ ODBC-подключение, к промежуточной базе данных SQL и читать записи непосредственно из таблицы загрузки

То, что вы хотите здесь сделать, - это только построить логику, которая делает что-то с этими данными один раз.Самый прямой способ добиться этого - заставить вашу логику ожидать данные в определенном формате (возможно, бизнес-классы, которые содержат проанализированные данные и что ваша логика используется).

Итак, вы должны взятьвходные данные (CSV / таблица SQL / все, что угодно) и сначала проанализируйте их во внутренних бизнес-классах.Затем вы передаете проанализированные данные в свою логику, которая делает с ней все, что делает ваше приложение.Преимущество здесь в том, что вы можете изменить логику один раз, и она будет работать с обоими типами данных, И если кто-то придет позже и скажет: «Теперь нам нужно прочитать этот файл Excel», все, что вам нужно сделать, это добавить еще один анализатор.чтобы получить данные Excel в ваш внутренний формат.Никаких изменений в логике не потребуется.

4.) Сообщите об успехах и ошибках каждой записи в CSV-файл.

Отображения будут выполнены на 1 к 1основе, где входной файл

будет иметь те же имена столбцов, что и цель

То же, что и выше.Не думайте, что вы будете экспортировать в CSV навсегда, создайте простой класс «ReportError» или другой класс, содержащий подробности об ошибках, и вставьте его в список во время обработки.В конце, когда пришло время вывести ваши ошибки, вы можете преобразовать их в CSV.Поэтому, если это требование меняется, и вы вместо этого сообщаете об ошибках в веб-службу, вам нужно всего лишь изменить небольшую часть кода (и ни одна из них не является вашей логикой обработки).

Здесь есть тема.:) Постарайтесь инкапсулировать логические биты, чтобы, если что-то изменилось, легко было найти, где это что-то находится в коде.Если вы научитесь делать это, у вас получится поддерживаемый код, даже если вы не будете следовать никаким другим процессам или шаблонам (особенно потому, что как один человек вы не будете делать огромные проекты).

3.) Выполните следующие вызовы Zuora Webservice (асинхронный) · SubscribeWithExisitingAccount () · Создать () · Логин () · Подписаться () · Обновить () · Удалить ()

Asконсольное приложение, я задам вопрос, нужно ли вам это на самом деле быть асинхронным или нет.Что вы надеетесь получить от асинхронного вызова Login ()?Может ли ваша программа сделать что-нибудь в ожидании возврата Login ()?

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

0 голосов
/ 18 июля 2011

Я бы порекомендовал вам прочитать книгу по веб-сервисам ( это хорошая книга ). На самом деле это не то, что вы можете просто взять из игры, и может быть довольно неприятно, если вы не знаете, что делаете.

Что касается разработки, я рекомендую вам сначала сделать ее прототип. Молотить что-то грязное, но позволяет понять, как это делать. Затем вы можете использовать это в качестве справочного материала, когда вы на самом деле строите свое приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...