Wprowadzenie do implementacji architektur plug-in w PHPPHPCon Poland
Autor: Damian Tylczyński
Aktualne serwisy internetowe coraz częściej przypominają rozbudowane aplikacje, tworzone w dużych zespołach programistów z myślą o długofalowym rozwoju. Opowiem jak okiełznać pokaźne bazy kodu i umożliwić elastyczną rozbudowę aplikacji dzięki architekturom typu plug-in.
Omówienie podstawowych wzorców projektowych oraz zasad architektonicznych na przykładzie aplikacji ASP.NET, ale w większości niezależnych od stosowanej technologii. Najważniejsze założenia domain-driven design, SOLID principles, itp.
Wyobraźmy sobie, że budowanie aplikacji tak proste, jak budowanie domku z klocków, gdzie poszczególne elementy (klocki) są połączone w całość (domek) podczas zabawy (życia domku). Przecież coraz częściej zachodzi potrzeba budowy aplikacji tak, aby składała się ona z luźno związanych komponentów, które ulegają kompozycji dopiero podczas działania aplikacji. Właśnie na takie podejście pozwala MEF, czyli „Managed Extensibility Framework", nowa biblioteka wchodząca w skład .NET Framework 4.0.
Chciałbym wszystkich zainteresowanych zaprosić na moją prezentację "Wprowadzenie do Managed Extensibility Framework w .NET 4.0", którą pokażę na najbliższym spotkaniu Łódzkiej Grupy Profesjonalistów IT & .NET.
Niniejsza sesja ma za zadanie wprowadzić słuchacza w zagadnienia związane z „Managed Extensibility Framework", wskazać potencjalne zastosowania oraz pokazać przykładową aplikację.
Project Introduction: MVC (Model View Controller) framework for ASP.NET 2.0. Contains AJAX module as well. It was created before official Microsoft framework was released so i've learned a lot creating it. (PL Only)
Wprowadzenie do implementacji architektur plug-in w PHPPHPCon Poland
Autor: Damian Tylczyński
Aktualne serwisy internetowe coraz częściej przypominają rozbudowane aplikacje, tworzone w dużych zespołach programistów z myślą o długofalowym rozwoju. Opowiem jak okiełznać pokaźne bazy kodu i umożliwić elastyczną rozbudowę aplikacji dzięki architekturom typu plug-in.
Omówienie podstawowych wzorców projektowych oraz zasad architektonicznych na przykładzie aplikacji ASP.NET, ale w większości niezależnych od stosowanej technologii. Najważniejsze założenia domain-driven design, SOLID principles, itp.
Wyobraźmy sobie, że budowanie aplikacji tak proste, jak budowanie domku z klocków, gdzie poszczególne elementy (klocki) są połączone w całość (domek) podczas zabawy (życia domku). Przecież coraz częściej zachodzi potrzeba budowy aplikacji tak, aby składała się ona z luźno związanych komponentów, które ulegają kompozycji dopiero podczas działania aplikacji. Właśnie na takie podejście pozwala MEF, czyli „Managed Extensibility Framework", nowa biblioteka wchodząca w skład .NET Framework 4.0.
Chciałbym wszystkich zainteresowanych zaprosić na moją prezentację "Wprowadzenie do Managed Extensibility Framework w .NET 4.0", którą pokażę na najbliższym spotkaniu Łódzkiej Grupy Profesjonalistów IT & .NET.
Niniejsza sesja ma za zadanie wprowadzić słuchacza w zagadnienia związane z „Managed Extensibility Framework", wskazać potencjalne zastosowania oraz pokazać przykładową aplikację.
Project Introduction: MVC (Model View Controller) framework for ASP.NET 2.0. Contains AJAX module as well. It was created before official Microsoft framework was released so i've learned a lot creating it. (PL Only)
The document discusses 10 reasons to use storage virtualization including simplifying provisioning, enabling data mobility, providing fast data recovery, fixing backup problems, pooling storage, eliminating vendor barriers, reducing disaster recovery costs, keeping storage vendors honest, and saving money overall. Storage virtualization provides an abstraction layer that hides physical storage complexity and adds new functionality to optimize efficiency and flexibility.
Using Suffix Arrays for Efficient Recognition of Named Entities in Large ScaleBenjamin Adrian
The document presents a method for using suffix arrays to efficiently recognize named entities in text and link them to formal representations in RDF graphs. The method involves chunking text into noun phrases, constructing a suffix array of phrases, hashing phrase prefixes to query a database of RDF symbols, and identifying candidate entities with matching prefixes to find exact matches. This allows linking of entity references in natural language text to referents defined in RDF graphs.
Instrumente tic - sistem pentru planificarea resurselor întreprinderii (ERP)eComunitate.ro
Când desfăşuraţi o activitate relativ restrânsă, nevoile financiar - contabile pot fi acoperite de un simplu soft de contabilitate. Dar ce se întâmplă când un simplu soft de contabilitate nu mai poate acoperi componenta de management a acestor procese?
Pentru astfel de situaţii există sisteme informatice complexe care pot gestiona integrat toate chestiunile financiar-contabile. Aflaţi mai multe detalii despre soluţiile de Planificare a Resurselor Întreprinderii.
[1] O documento explica os passos para elaborar um projeto, incluindo definir o problema, objetivo, público-alvo, divulgação, localização e possíveis parcerias. [2] É importante estruturar um projeto para organizar as ideias e planejar a execução das etapas. [3] Estabelecer parcerias pode ajudar a obter recursos e apoio extra para implementar o projeto de forma mais efetiva.
L'e-magazine di destination marketing e management di Four Tourism: in questo numero di parla di Fondi Europei, la programmazione 2014-2020; cosa vuol dire fare promocommercializzazione oggi; un interessante focus sul mercato russo e sulle opportunità che offre in termini di incoming
Josep Ejarque, persidente di Four Tourism società di consulenza in marketing e management turistico, parla a Perugia della cultura come leva per lo sviluppo turistico ed economico del territorio
Corso di formazione "Informazione e Accoglienza 2.0 per operatori Info Point"...FTourism & Marketing
Il profondo cambiamenti della domanda inevitabilmente impone una trasformazione del modello di raccolta, gestione ed erogazione delle informazioni così come delle funzioni, dei ruoli e dei tempi di azione degli enti del turismo. L’informazione e l’accoglienza turistica oggi è necessaria prima, durante e dopo il viaggio.
El documento describe una actividad de evaluación sobre búsqueda avanzada en Google. La actividad incluyó realizar búsquedas avanzadas en Google con múltiples parámetros, así como búsquedas en Google Académico y Google Libros sobre el tema del "Protocolo de Estambul", guardando los resultados. Se creó una presentación con capturas de pantalla de las búsquedas y referencias a los artículos y libros seleccionados.
This document discusses a study on developing intercultural competence through dual-language peer review. The study involved US students studying Spanish composition and Chilean students studying English composition meeting to provide peer feedback on each other's writing in their respective target languages. The study found that students benefited from seeing an outside perspective on their writing and culture. They also shared an understanding of language learning difficulties. While it helped motivate students to work with a native speaker, it also risked reinforcing the native speaker hierarchy. Overall students had a positive attitude about the experience. Future research on dual-language peer review and courses is recommended.
Better Know Your Butterfly: Hairstreaks, Satyrium spMary Legg
Introducing Hairstreaks of Europe with five species: Blue-spot Hairstreak, Satyrium spini, Brown Hairsteak, Thecla betulae, Green Hairstreak, Callophrys rubi, Sloe Hairstreak, Satyrium acaciae, White Letter Hairstreak, Satyrium w-album with short desciption and imagers. Lepidoptera, Lycaenidae
How to become an agnostic. A platform agnosticavakon+
In order to rise above the clutter of Social Media you need to start thinking like a platform agnostic. How do we build content, how to we create experiences that engage with our audiences.
Ideas, case studies and challenges that we need to face.
This was avakon+'s keynote at #smc15 Athens
Nel mercato attuale, i finanziamenti europei rappresentano un’opportunità unica per le destinazioni turistiche che intendono realizzare uno sviluppo turistico efficace, duraturo e stabile. La programmazione europea offre infatti
un’ampia varietà di occasioni, di grande interesse,
che bisogna assolutamente saper cogliere e sfruttare, al fine di valorizzare i territori ed incrementarne la crescita turistica. Four Tourism organizza un corso di formazione proprio per trasferirvi le conoscenze e una metodologia chiara di lavoro, al fine di poter partecipare e concorrere all’assegnazione dei fondi in modo competitivo.
The document discusses 10 reasons to use storage virtualization including simplifying provisioning, enabling data mobility, providing fast data recovery, fixing backup problems, pooling storage, eliminating vendor barriers, reducing disaster recovery costs, keeping storage vendors honest, and saving money overall. Storage virtualization provides an abstraction layer that hides physical storage complexity and adds new functionality to optimize efficiency and flexibility.
Using Suffix Arrays for Efficient Recognition of Named Entities in Large ScaleBenjamin Adrian
The document presents a method for using suffix arrays to efficiently recognize named entities in text and link them to formal representations in RDF graphs. The method involves chunking text into noun phrases, constructing a suffix array of phrases, hashing phrase prefixes to query a database of RDF symbols, and identifying candidate entities with matching prefixes to find exact matches. This allows linking of entity references in natural language text to referents defined in RDF graphs.
Instrumente tic - sistem pentru planificarea resurselor întreprinderii (ERP)eComunitate.ro
Când desfăşuraţi o activitate relativ restrânsă, nevoile financiar - contabile pot fi acoperite de un simplu soft de contabilitate. Dar ce se întâmplă când un simplu soft de contabilitate nu mai poate acoperi componenta de management a acestor procese?
Pentru astfel de situaţii există sisteme informatice complexe care pot gestiona integrat toate chestiunile financiar-contabile. Aflaţi mai multe detalii despre soluţiile de Planificare a Resurselor Întreprinderii.
[1] O documento explica os passos para elaborar um projeto, incluindo definir o problema, objetivo, público-alvo, divulgação, localização e possíveis parcerias. [2] É importante estruturar um projeto para organizar as ideias e planejar a execução das etapas. [3] Estabelecer parcerias pode ajudar a obter recursos e apoio extra para implementar o projeto de forma mais efetiva.
L'e-magazine di destination marketing e management di Four Tourism: in questo numero di parla di Fondi Europei, la programmazione 2014-2020; cosa vuol dire fare promocommercializzazione oggi; un interessante focus sul mercato russo e sulle opportunità che offre in termini di incoming
Josep Ejarque, persidente di Four Tourism società di consulenza in marketing e management turistico, parla a Perugia della cultura come leva per lo sviluppo turistico ed economico del territorio
Corso di formazione "Informazione e Accoglienza 2.0 per operatori Info Point"...FTourism & Marketing
Il profondo cambiamenti della domanda inevitabilmente impone una trasformazione del modello di raccolta, gestione ed erogazione delle informazioni così come delle funzioni, dei ruoli e dei tempi di azione degli enti del turismo. L’informazione e l’accoglienza turistica oggi è necessaria prima, durante e dopo il viaggio.
El documento describe una actividad de evaluación sobre búsqueda avanzada en Google. La actividad incluyó realizar búsquedas avanzadas en Google con múltiples parámetros, así como búsquedas en Google Académico y Google Libros sobre el tema del "Protocolo de Estambul", guardando los resultados. Se creó una presentación con capturas de pantalla de las búsquedas y referencias a los artículos y libros seleccionados.
This document discusses a study on developing intercultural competence through dual-language peer review. The study involved US students studying Spanish composition and Chilean students studying English composition meeting to provide peer feedback on each other's writing in their respective target languages. The study found that students benefited from seeing an outside perspective on their writing and culture. They also shared an understanding of language learning difficulties. While it helped motivate students to work with a native speaker, it also risked reinforcing the native speaker hierarchy. Overall students had a positive attitude about the experience. Future research on dual-language peer review and courses is recommended.
Better Know Your Butterfly: Hairstreaks, Satyrium spMary Legg
Introducing Hairstreaks of Europe with five species: Blue-spot Hairstreak, Satyrium spini, Brown Hairsteak, Thecla betulae, Green Hairstreak, Callophrys rubi, Sloe Hairstreak, Satyrium acaciae, White Letter Hairstreak, Satyrium w-album with short desciption and imagers. Lepidoptera, Lycaenidae
How to become an agnostic. A platform agnosticavakon+
In order to rise above the clutter of Social Media you need to start thinking like a platform agnostic. How do we build content, how to we create experiences that engage with our audiences.
Ideas, case studies and challenges that we need to face.
This was avakon+'s keynote at #smc15 Athens
Nel mercato attuale, i finanziamenti europei rappresentano un’opportunità unica per le destinazioni turistiche che intendono realizzare uno sviluppo turistico efficace, duraturo e stabile. La programmazione europea offre infatti
un’ampia varietà di occasioni, di grande interesse,
che bisogna assolutamente saper cogliere e sfruttare, al fine di valorizzare i territori ed incrementarne la crescita turistica. Four Tourism organizza un corso di formazione proprio per trasferirvi le conoscenze e una metodologia chiara di lavoro, al fine di poter partecipare e concorrere all’assegnazione dei fondi in modo competitivo.
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
Autor: Michał Żyliński
Projektujesz serwisy lub aplikacje internetowe i czujesz, że popadasz w rutynę? Zobacz, co może zaoferować Silverlight, ninja i czarny koń technologii RIA.
Krótka prezentacja na temat możliwości platformy Google Web Toolkit oraz przedstawienie sposobu stworzenia nowego projektu dla GWT w środowisku Eclipse.
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
Tworzenie skalowalnych i wydajnych mikroserwisów w rozproszonym środowisku chmurowym wymaga dużej dyscypliny u programisty oraz zastosowania wielu narzędzi ułatwiających to zadanie. Im większy system, tym większej uwagi wymaga. Rozproszone środowisko dodatkowo wymusza korzystanie z zewnętrznych rozwiązań ułatwiających pracę ze stanem systemu, takich jak cache.
Zdarzyło Ci się kiedyś pogubić w tym, gdzie leży która usługa i skąd się wziął błąd w systemie? Czy nie łatwiej byłoby mieć jedno narzędzie, które utrzyma wszystkie usługi pod kontrolą i zapewni niezawodne zarządzanie stanem aplikacji bez konieczności używania zewnętrznych systemów?
W czasie swojej prelekcji Krzysiek przedstawi, jak sprawdzony w bojach Azure Service Fabric zapewnia stabilną kontrolę nad systemem mikroserwisów oraz pozwala stworzyć aplikację bez użycia zewnętrznej bazy danych i systemu cachingu. Swoje doświadczenie z Azure Service Fabric nabył w codziennej pracy w dużym projekcie dla korporacji finansowej w Future Processing.
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposeMariusz Bąk
Docker i Docker Compose to popularne wśród deweloperów narzędzia do konteneryzacji i orkiestracji kontenerów, które wypierają wcześniej stosowaną wirtualizację. Dzięki nim możemy opisywać infrastrukturę za pomocą kodu, utrzymywać jej spójność w ramach zespołu deweloperskiego oraz wersjonować ją. Znacznie ułatwia to rozwijanie złożonych z wielu usług aplikacji.
Prezentacja zawiera krótkie wprowadzenie do tych narzędzi oraz pokazuje kilka użytecznych i ułatwiających pracę trików. Prezentuje również stworzone przeze mnie open-source'owe narzędzie Feater, służące do dynamicznego tworzenia izolowanych środowisk testowych i demonstracyjnych. Dzięki wykorzystaniu przez nie konteneryzacji, można je szybko wdrożyć w typowym wykorzystującym Docker Compose projekcie
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
Azure oferuje wiele platform na których możesz uruchomić swoją aplikację. Każda ma swoje zalety i wady. Zrobiłem przegląd tych platform dla Ciebie. W prezentacji wyrażam swoją prywatną opinię.
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
Przedstawiamy firmware UEFI, dzięki któremu możliwe jest coraz śmielsze wkraczanie architektury ARM64 do świata urządzeń serwerowych, czyli królestwa władanego przez Intel. Standardy, ich założenia i realizacja zostałą przybliżona na przykładzie dodawania wsparcia dla n
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Lukasz Kaluzny
Zagadnienia:
Nowe funkcjonalności Microsoft Windows Server 2016 w kontekście budowy aplikacji typu cloud-native:
Zastosowanie Nano Servera, czyli odchudzonej wersji Windows Server 2016, oszczędniej korzystającej z zasobów IT.
Uruchamianie na Nano Serwerach WS2016 aplikacji napisanych w .NET, Javie, Pythonie (Django) czy JavaScript (Node.js).
Migracja - bez konieczności zmiany kodu - istniejących aplikacji do architektury opartej o kontenery. Kontenery to rozwiązania oparte na szybkiej wirtualizacji na poziomie procesów. Nie tworzą dodatkowych instancji jądra systemu operacyjnego. Na tym samym hoście można uruchomić większą ilość kontenerów niż maszyn wirtualnych. Uruchamianie i zamykanie kontenera jest też znacznie szybsze, niż uruchamianie i zamykanie maszyny wirtualnej.
Wspólna praca developerów i administratorów nad produktem, czyli DevOps z wykorzystaniem Windows Server 2016 i Visual Studio Team Services w chmurze Azure. Automatyczne budowanie obrazów kontenerów dla każdego nowego kodu i wdrażania ich w różne środowiska
Łatwiejsze zarządzanie obciążeniami aplikacji pomiędzy zasobami we własnej infrastrukturze i w chmurze Azure dzięki WS2016 oraz Azure Service Fabric.
Funkcjonalności Windows Server 2016 powstałe z myślą o wygodzie administratorów:
Nowa wersja PowerShell 5.0 - przynosząca lepsze funkcjonowanie powłoki linii poleceń oraz udoskonalony język skryptowy,
Azure Remote Server Management Tools – zdalne zarządzanie Nano i Windows Server 2016 z Azure,
PowerShell Direct,
Nested Virtualization jako wsparcie ułatwienia nauki i testów.
2. Nazywam się Maciej Zbrzezny Pracuje w firmie CAS, w której jest architektem oprogramowania i programistą, współtworzę tam oprogramowanie do komunikacji w rozproszonych systemach automatyki przemysłowej i integracji z systemami biznesowymi (rodzina oprogramowania: CommServer). Tworzę oprogramowanie wykorzystujące platformę .NET(głównie C#) i standard OPC. Autor bloga „Programowanie i Technologie” (http://maciej-progtech.blogspot.com/). Posiadam certyfikaty MCTS z obszaru ASP.NET i Windows Forms Applications. maciejzbrzezny@gmail.com O mnie
3. Wykorzystanie wielowątkowości i przetwarzania asynchronicznego Implementacja „Globalizacji” i „Lokalizacji” Integrowanie Windows Forms i WPF w jednej aplikacji Co w tej części?
4. Kod obsługi zdarzenia (np. kliknięcia przycisku) powinien być krótki (ma miejsce „zamrożenie”) Co z dłuższymi operacjami? Co z interakcją z użytkownikiem Ważna też jest informacja o postępie wykonania operacji, jej zakończeniu, jak również pozwolenie na anulowanie operacji Wykorzystanie wielowątkowości i przetwarzania asynchronicznego
5. System.ComponentModel.BackgroundWorkerjest komponentem wspierającym programistę w wykonywaniu długotrwałych operacji (jak np. ładowanie pliku, komunikacja z bazą danych itp…) Realizuje on zadaną pracę w osobnym wątku, jednocześnie udostępniając mechanizmy informujące o jego stanie, postępie, zakończeniu. Pozwala na anulowanie operacji. Jego mechanizmy informacyjne korzystają z głównego wątku okna aplikacji, dzięki czemu mogą łatwo aktualizować interfejs użytkownika BackgroundWorker – niech on wykona pracę
6. RunWorkerAsync – podstawowa metoda, która wywołana powoduje aktywację zdarzenia DoWork. Można ją wywołać bez parametrów lub z parametrem (Object) jako parametr inicjalizacyjny przekazywany do operacji, która ma być wykonana DoWork – metoda z obsługą zdarzenia (private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)) , które wykonane jest w osobnym wątku, więc interfejs użytkownika pozwala na dalszą obsługę poleceń ze strony użytkownika. DoWorkEventArgs ma m.in. właściwość Argument przez którą można pobrać przekazany, przez RunWorkerAsync argument. BackgroundWorker - podstawy
7. Informacja o zakończeniu operacji: Zdarzenie: RunWorkerCompleted. Ma miejsce kiedy praca do wykonania w tle skończyła się lub miał miejsce wyjątek.Szczegółowe informacje (w tym czy operacja była anulowana, jaki rezultat, itp…) dostępne przez przekazany obiekt klasy RunWorkerCompletedEventArgs. Informacja o postępie: Właściwość: WorkerReportsProgress. Wskazuje, czy BackgroundWorker może informować o postępie. Metoda: ReportProgress. Wyzwala zdarzenie ProgressChanged. Można do niej przekazać int (postęp w %) i object (stan). Zdarzenie: ProgressChanged. Ma miejsce gdy jest wywołana metoda ReportProgress.Udostępnia informacje poprzez obiekt klasy ProgressChangedEventArgs. Informacja o stanie: Właściwość: IsBusy. Wskazuje, czy BackgroundWorkeraktualnie wykonuje jakąś pracę. Właściwość: CancellationPending. Wskazuje, czy aplikacja żąda anulowania pracy. BackgroundWorker – funkcje informacyjne
8. Właściwość: WorkerSupportsCancellation. Wskazuje, czy BackgroundWorker wspiera asynchroniczne anulowanie pracy. Metoda: CancelAsync. Wysyła żądanie anulowania pracy w tle. Wykonywana operacja sprawdza, czy nie pojawiło się żądanie anulowania poprzez właściwość CancellationPending(klasy BackgroundWorker) i jeżeli została anulowana, to powinna ustawić właściwość Cancel klasy DoWorkEventArgs. BackgroundWorker – anulowanie operacji
10. Oprócz klasy BackgroundWorker można oczywiście wykorzystywać: Delegacje (Delegates) – synchronicznie i asynchronicznie Wątki (Threads) Zadania (Tasks) (tylko od .NET 4.0) I wszystkie możliwości synchronizacyjne dostępne w .NET (Monitor, Mutex, Semaphore, …) Trzeba jednak pamiętać, że kontrolki Windows Forms, czy WPF można tylko aktualizować z poziomu wątku, który je wytworzył! Gdy BackgroundWorker nie wystarcza.
12. Każda kontrolka ma właściwość InvokeRequired, informującą o konieczności aktualizacji poprzez metodę BeginInvoke, która wykonuje przekazaną delegację w wątku obsługującym kontrolkę. Dostęp do kontrolki z innego wątku (Windows Forms) http://maciej-progtech.blogspot.com/2009/07/winforms-cross-thread-operation-not.html
13. Dostęp do kontrolki z innego wątku (WPF) Aktualizacja kontrolek dostępna z poziomu Dispatcher’a: Invoke BeginInvoke Sprawdzanie konieczności: CheckAccess (return true/false) VerifyAccess (return void oraz exception) http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.checkaccess.aspx
15. Globalizacja i lokalizacja to różne procesy związane z internacjonalizacją aplikacji: Globalizacja związana jest z formatowaniem istniejących danych do formatów właściwych dla danych ustawień kulturowych. Lokalizacja związana jest z dostarczaniem właściwych danych dla ustawień kulturowych. Przykład: Globalizacja – W niektórych krajach część całkowita liczby jest oddzielana od ułamkowej kropką, a w innych przecinkiem. Globalizacja odpowiedzialna jest w takim przypadku za odpowiednie wyświetlanie danych. Lokalizacja – Tytuł okienka, napisy na przyciskach często powinny być różne, dla różnych języków w których aplikacja jest dostępna. „Globalizacja” i „Lokalizacja”
16. Kultura w .NET związana jest informacją dotyczącą kultury dla danego kraju lub regionu, w którym aplikacja jest użyta. Kultura w .NET wybierana jest za pośrednictwem kodu 1,2 lub 3 elementowego (zwykle: język-region), np.: uz-UZ-Cyrlspecyfikuje język Uzbecki, w regionie Uzbekistanu i alfabet cyrylicę Ustawiania kultury: Dla wątku: System.Threading.Thread.CurrentThread.CurrentCulture = newSystem.Globalization.CultureInfo(„pl-PL"); Dla interfejsu: System.Threading.Thread.CurrentThread.CurrentUICulture = newSystem.Globalization.CultureInfo(„pl-PL"); Kultura (Culture)
17. Ustawiamy właściwośćLocalizable okienka (Form) naTrue. Projektujemy UI okna i tłumaczymy wszystkie elementy UI na języki, w których chcemy mieć zlokalizowaną aplikację. Dodajemy elementy UI dla domyślnej kultury. Będą one wykorzystane, gdy wspierana kultura nie będzie wyspecyfikowana. Ustawiamy właściwość Language okienka (Form) na kulturę, w której chcemy mieć zlokalizowane okno. Dodajemy zlokalizowaną zawartość UI do okna. Powtarzamy kroki 4 i5 dla każdego języka. Kompilujemy i budujemy aplikację. Lokalizacja w Windows Forms
18. Lokalizacja w WPF jest dostępna poprzez satelickie assembly przygotowane dla konkretnych języków.Lokalizowane elementy aplikacji korzystają z zasobów assembly, które są ładowane automatycznie w zależności od aktualnej kultury UI. Kiedy zlokalizowana aplikacja startuje, najpierw wyszukuje assembly z zasobami dla określonego języka i regionu. Jeśli nie można znaleźć właściwego assembly, wyszukiwane jest tylko dla właściwego języka. Jeśli również to assembly nie można znaleźć, wyszukiwany jest zestaw dla kultury neutralnej. Jeżeli również tego nie można znaleźć rzucany jest wyjątek. Wyjątków związanych z lokalizacją można uniknąć, poprzez ustawienie atrybutuNeutralResourcesLanguage. Ten atrybut specyfikuje, którą kulturę należy użyć jeżeli nie ma dostępnej początkowo wymaganej.Atrybut można ustawić w następujący sposób:NeutralResourcesLanguage: [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] Lokalizacja w WPF - podstawy
19. Dodanie atrybutu kultury (UICulture)do pliku projektu i build projektu, by wygenerować katalogi dedykowane dla danej kultury. Oznaczymy lokalizowalne elementy atrybutemUidaby były rozróżniane unikalnie. Należy wykonać ten krok dla każdego pliku XAML w aplikacji. Uwaga: Lokalizowane właściwości mogą dotyczyć innych elementów niż tylko łańcuchy tekstowe. Mogą to być również kolory, układy kontrolek lub dowolnych innych elementów ważnych dla kultury. Ekstrahujemy lokalizowaną zawartość z aplikacji przy użyciu specjalistycznego narzędzia. Tłumaczymy lokalizowaną zawartość. Tworzymy podkatalogi, które będą przechowywać assembly dla różnych kultur. Tworzymy assemblydla różnych kultur przy pomocy specjalistycznego narzędzia. Lokalizacja w WPF – kroki do wykonania
20. Należy dodać atrybut UICulture do projektu: Otwieramy plik projektu (<ProjectName>.csprojdlaC# lub <ProjectName>.vbprojdlaVisual Basic) przy pomocy dowolnego edytora tekstu (np. Notepad’a). Odnajdujemy element XML: <PropertyGroup>. Wewnątrz elementu dodajmy ustawienie domyślnej kultury: <UICulture>en-US</UICulture> Zapisujemy plik i wykonujemy Build aplikacji. Ustawienie kultury dla projektu
21. W pliku XAML dodajemy atrybut Uid do lokalizowanych elementów, np.: <Button x:Uid="Button_1" Margin="112,116,91,122„Name="Button1">Button</Button> Używamy msbuild, by zrobić to automatycznie: msbuild /t:updateuidmyApplication.vbproj Lokalizowane elementy powinny być oznaczone
22. W lokalizacji aplikacji pomoże nam narzędzie LocBaml (http://msdn.microsoft.com/en-us/library/ms771568%28v=VS.90%29.aspx) Generujemy plik csv ze wszystkimi elementami do lokalizacji locbaml /parse en-USyApplication.resources.dll Tłumaczymy Tworzymy odpowiedni podkatalog (np. fr-CA) i generujemy w nim assemlby: locbaml /generateen-USyApplication.resources.dll /trans:myApplication.resources.FrenchCan.csv /cul:fr-CA /out:fr-CA LocBaml i sprawy związane
23. LocBaml nie jest narzędziem wchodzącym w skład VS lub .NET SDK Trzeba go osobno pobrać i skompilować Identyfikatory zasobów w pliku CSV mogą się powtarzać. W związku z tym proces odwrotny czyli wygenerowanie dll'ki na podstawie pliku CSV się nie powiedzie. Czasami VS sam generuje zlokalizowaną DLL’kę, wtedy nie można użyć wygenerowanej przez LocBaml i trzeba dwie połączyć linkerem (al.exe). Aby zautomatyzować proces trzeba napisać skrypty LocBaml i uwagi do niego
25. Nie wszystkie kontrolki znane z Windows Forms są w aplikacjach WPF (brakuje np. MaskedTextBoxlub PropertyGrid), choć w większości przypadków dostępne są odpowiedniki Bez problemu można używać okien dialogowych z poziomu aplikacji WPF (np. OpenFileDialog). Dostępny jest WindowsFormsHost w WPF Dostępna jest kontrolka ElementHostw Windows Forms Integrowanie Windows Forms i WPF w jednej aplikacji
26. WindowsFormsHostjest elementem (kontrolką) WPF pozwalającą na osadzenie pojedynczego elementu będącego kontrolką Windows Forms. Hostowana kontrolka Windows Forms jest automatycznie dopasowywana do rozmiaru kontrolki nadrzędnej (WindowsFormsHost). Można używać WindowsFormsHostdo deklaratywnego (z poziomu XAML) tworzenia instancji kontrolek Windows Forms i również ustawiania ich właściwości w sposób deklaratywny. WindowsFormsHost w WPF
27. WindowsFormsHost w WPF – w praktyce Dodajemy namespaces: xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" Dodajemy WindowsFormsHost i element z Windows Forms: <my:WindowsFormsHost Margin="48,106,30,56" Name="windowsFormsHost1"> <wf:Button Text="Windows Forms Button" /> </my:WindowsFormsHost> Możemy odczytać referencję od osadzonego elementu Windows Forms poprzez właściwość Child, np.: System.Windows.Forms.ButtonaButton; aButton= (System.Windows.Forms.Button)windowsFormsHost1.Child;
29. Kontrolka ElementHost w Windows Forms pozwala na osadzanie kontrolek WPF. Kontrolka WPF jest podstawiana do właściwości Child klasy ElementHost. WPF wewnątrz Windows Forms WPFProject.UserControl1 aWPFcontrol = new WPFProject.UserControl1; ElementHost1.Child = aWPFcontrol;
The difference between CheckAccess and VerifyAccess is CheckAccess returns a Boolean if the calling thread does not have access to the Dispatcher and VerifyAccess throws an exception.DispatcherPriorityEnumerationduża tabelka dostępna http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcherpriority.aspx// Uses the Dispatcher.CheckAccess method to determine if // the calling thread has access to the thread the UI object is on.privatevoidTryToUpdateButtonCheckAccess(objectuiObject){ Button theButton = uiObject as Button;if (theButton != null) { // Checking if this thread has access to the object.if (theButton.Dispatcher.CheckAccess()) { // This thread has access so it can update the UI thread.UpdateButtonUI(theButton); }else { // This thread does not have access to the UI thread. // Place the update method on the Dispatcher of the UI thread.theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,newUpdateUIDelegate(UpdateButtonUI), theButton); } }}
Zwróćmy uwagę że właściwości są ustawiane deklaratywnie, tak samo jak w WPF