piątek, 13 lutego 2009

Implementacja serwera OPC w C#

W poprzedniej części zasygnalizowałem co należy zrobić by stworzyć w C# (na platformie .NET) klienta OPC, nie były to proste zagadnienia, niestety stworzenie serwera niesie za sobą jeszcze większe wymagania.

W tym przypadku należy stworzyć i zarejestrować odpowiedni komponent jako obiekt COM. Zagadnienie to opisane było w części .NET i COM, dlatego nie będę go teraz dalej rozwijał. Niestety to nie wystarczy, gdyż okazuje się, że nie możliwa jest implementacja w pełni zgodnego ze specyfikacją serwera OPC wykorzystując tylko rozwiązania oparte o platformę .NET.

Cóż można więc zrobić? Należy wykorzystać tak zwany serwer wrapper, czyli element pośredniczący. Server Wrapper należy przygotować tak by był to plik wykonywalny i który po rejestracji jako obiekt COM/DCOM udostępnia wszystkie interfejsy wymagane przez standard OPC i jego specyfikacje. Serwer wrapper nie musi realizować żadnej funkcjonalności poza połączeniem się do obiektu COM, który jest plikiem DLL i realizuje całą funkcjonalność serwera, ten plik DLL może już być przygotowany w C#, w oparciu o platformę .NET.

Opisywane tutaj rozwiązanie przedstawia rysunek poniżej:

Na rysunku widać jak "OPC Wrapper.exe" łączy się poprzez COM i wykorzystuje interfejsy zbliżone do tych ze specyfikacji OPC, by wykorzystać implementację serwera OPC występującego jako plik DLL (skompilowany na platformie .NET). "OPC Wrapper.exe" natomiast jest OPC serwerem, do którego dostęp mają klienci OPC i implementuje wszystkie potrzebne do tego interfejsy.

Brzmi to dość skomplikowanie, pytanie więc czy można w ten sposób zrobić OPC serwer w pełni zgodny ze specyfikacją? Okazuje się że tak, właśnie taką konstrukcję wybrało m.in. OPC Foundation do przygotowania swojego pakietu SDK wspierającego tworzenie oprogramowania zgodnego z OPC.

Kolejne pytanie może brzmieć: czy jest to rozwiązanie odpowiednio wydajne? Z doświadczenia mogę powiedzieć, że tak. A dodatkowa komunikacja odbywająca się wewnątrz komputera ma mały wpływ na wydajność całego serwera.

Brak komentarzy:

Prześlij komentarz

Posty powiązane / Related posts