2013-05-08 13 views
8

Jakie są najlepsze praktyki udostępniania danych między różnymi aplikacjami na tym samym komputerze i powiadamiania ich, jeśli dane uległy zmianie?Najlepsza praktyka udostępniania danych i powiadomień między aplikacjami

Mam 4 aplikacje, które używają tego samego projektu ustawień do zmiany ustawień. Kiedy zmieniam ustawienie w projekcie, inne aplikacje muszą działać na tej zmianie i muszą wiedzieć, że ustawienie zostało zmienione.

Pomyślałem o IPC, aby wprowadzić zmiany ustawień, a następnie przekazać informacje o zmianie wszystkim użytkownikom, ale byłoby wspaniale, gdyby taka biblioteka już istniała.

EDIT:

znalazłem rozwiązanie, które pracowały dla mnie. Postanowiliśmy nie spędzać dużo czasu w tej funkcji, ponieważ nie jest ona krytycznie krytyczna, aby zaktualizować inne aplikacje.

Zapisujemy nasze ustawienia, tak jak poprzednio, w pliku XML i zarejestrowałem plik FileSystemWatcher w tym pliku, aby uzyskać wszystkie zmiany. Więc jeśli zmienię ustawienia, wszystkie 4 aplikacje pójdą i odczytają plik ustawień i ustalą, czy muszą podjąć działanie, czy nie.

Odpowiedz

1

Rozwiązanie należy wybrał zależą od różnych parametrów:

  1. Ile wysiłku można inwestować w realizacji.
  2. Jak ważne jest to, że aplikacje będą szybko aktualizowane.
  3. Jakie środowisko jest dostępne dla Ciebie/Twoich klientów.
  4. ...

Na przykład:

  • zapisywania zmian w pliku database/config, i niech aplikacje działają oddzielnego wątku, który jest poświęcony, aby sprawdzić ustawienie zmienia co n sekund. To tanie i łatwe do wdrożenia to rozwiązanie, ale nie "ładne", a wielu deweloperów odrzuci takie rozwiązanie.
  • Utwórz usługę WCF, która "publikuje" zmiany w aplikacjach. W takim przypadku przy użyciu podwójnych wiązań aplikacje będą natychmiast aktualizowane. Oczywiście to rozwiązanie jest droższe ...

To tylko 2 przykłady spośród wielu dostępnych rozwiązań (pamięć współużytkowana, wspólna domena aplikacji itp.).

+0

Hei Dziękuję za odpowiedź. Znalazłem rozwiązanie, które zadziałało dla mnie. – neutron

+0

Neutron, Tylko dla mojej ciekawości ... jakie rozwiązanie wybrałeś i dlaczego? –

+0

Cześć Amit, redagowałem główny post i rozbudowałem go o wybrane przeze mnie rozwiązanie. Wybrałem to rozwiązanie, ponieważ był to najprostszy/najtańszy sposób w obecnym kontekście i powinien działać dobrze. – neutron

0

Co powiesz na używanie wbudowanych obiektów zależności? jak:

  1. CacheDependency - http://msdn.microsoft.com/en-us/library/system.web.caching.cachedependency.aspx
  2. SqlDependency - http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx

te są dość proste do wykonania i i działają całkiem dobrze

+0

Mam aplikację WinForm i nie używam bazy danych. A CacheDependency jest tylko dla aplikacji internetowych, prawda? – neutron

+0

Witam, Jeśli korzystasz z .net 4, a następnie nie. Istnieje nowa przestrzeń nazw http://msdn.microsoft.com/en-us/library/system.runtime.caching.aspx System.Runtime.Caching. Znalazłem przykład jego użycia tutaj: http://www.codeproject.com/Articles/290935/Using-MemoryCache-in-Net-4-0 – JanivZ

1

Co masz zrobić wydaje wisely.And mam kolejne doświadczenie z użyciem MSMQ. Można tworzyć prywatne lub publiczne kolejki, ponieważ wszystkie aplikacje znajdują się na tym samym komputerze, kolejka prywatna jest w porządku, w przeciwnym razie należy użyć kolejek publicznych. W tym czasie wybrałem Spring.Net jako mój framework (obiekt budujący & Injector zależności). Spring.net ma genialne QuickStarts i jeden z nich używa MSMQ jako łączący most między. Gdybym był tobą, użyłbym podejścia Queueing, ponieważ możesz powiadamiać aplikacje działające na różnych komputerach.

Ponadto, WCF zapewnia dogodne środki do rozwijania usługi rozproszonej poprzez podstawowy składnik MSMQ.

Co więcej, publikowanie-subskrypcja jest powszechnym wzorcem projektowym, który jest szeroko stosowany w aplikacjach komunikacyjnych klienta/serwera . W WCF rozwoju eksploatacyjnego Publish-Subskrybuj wzór będzie również pomóc w tych scenariuszach, w których aplikacja usługa narazi danych do określonych grup klientów, którzy są zainteresowani w służbie, a dane są dostarczane do klientów za naciśnięciem model aktywnie (zamiast odpytywania przez klienta)

0

Co z gniazdami sieciowymi? Możesz tworzyć słuchaczy i nadawców na różnych portach.

Powiązane problemy