Cześć !
W pracy udało mi się dołączyć do zespołu tworzący dość duży i skomplikowany system. Zanim się wdrożę, chciałbym mieć własne przemyślenia i trochę większy pojęcie o temacie.
Mam stworzyć jeden z modułów ( jakie jest jego zadanie, nie jest do końca ważne ), który będzie się komunikował z w/w systemem.
Z tego co się dowiedziałem, komunikacja jest oparta o transmisje wiadomości w formacie XML, o różnych formatach, z różnymi danymi.
Technologią jest .NET, sam będę pisał w C#.
Chciałbym Was na początku zapytać o trzy rzeczy :
1 ) Skoro wiadomości mogą mieć różną formę ( nagłówek wiadomości XML jest stały ), to jak w elegancki sposób można zapewnić sobie ich parsowanie ? Kiedy system się bardziej rozwinie, a wiadomości może dojść jeszcze wiele nowych, chciałbym od razu przemyśleć rozwiązanie które zapewni w miarę szybką możliwość ich obsługi. Może należałoby trzymać szablony tych wiadomości XML gdzieś zewnątrz ?
Czy znacie może jakiś artykuł, albo możecie nakierować w stronę którą powinienem obrać ?
2 ) Sam system daje możliwość nasłuchiwania nowych wiadomości, odbierania ich i interpretowania. Tutaj pojawia się kolejne pytanie architektoniczne. W tym celu obok głównej aplikacji należy stworzyć dodatkowy wątek, który będzie tylko nasłuchiwał tego „mailboxa”, i w razie wykrycia wiadomości kierowanej do nas, przekaże do głównego wątku w którym będzie interpretowany. Mam rację ?
3 ) Ostatnią rzeczą, jest sposób napisania aplikacji której działanie opiera się na zasadzie pytanie/odpowiedź. Już tłumacze o co chodzi .
Scenariusz działania modułu, zwykle opiera się o taki dialog:
- Moduł : Mogę wejść do domu ?
- System : Możesz
- Moduł : To daj mi klucze
- System : Proszę
- Moduł : Użyłem, i oddaje.
Czyli aby wykonać jakąś akcję, najpierw należy wymienić parę informacji z samym systemem.
W tym miejscu też chciałbym się wspomóc Waszym doświadczeniem. Możecie mnie nakierować w dobrą stronę ? Jak dobrać odpowiednią architekturą rozwiązania takiego problemu ?
Pozdrawiam serdecznie wszystkich !