Ja pracuję z WSS 3.0 i MOSS 2007 od ok. pół roku, więc wiem jeszcze
nie za dużo :). Jeśli chodzi o Web Party, to obowiązkowa książka to
"ASP.NET 2.0 Web Parts in Action" (http://www.manning.com/neimke/).
Nie dotyczy ona SharePointa, ale to chyba najlepsza książka nt. Web
Partów. Cały czas czeka w kolejce do przeczytania.
> W związku z tym:
>
> czy ma ktoś może jakieś linki, materiały opisujące dobre techniki
> podejścia do projektowania webpartów ? Nie chodzi mi bynajmniej tutaj
> o to "Jak stworzyć web part" - to wiem. Dodam, że mam spore
> doświadczenie w .Net, ale widzę, że nie wszystkie rozwiązania z tamtąd
> przenoszą się w prostej lini do WSSów.
>
> Pewnym przykładem tego czego szukam może być : "Jak rozwiązywać
> komunikacje WebPartów z bazą danych ?". W przypadku aplikacji .NET
> pisałałem bibliotekę, która kożystała z enterpriselibrary, a które
> kożystały z definicji providera ustawionej w web.configu. Niby można
> zrobić podobnie w WSSie, ale gdzieś ktoś pisał, że dla przypadku
> WebPartów poprawnie powinno się to robić, poprzez zbudowanie web
> serwisu, który będzie źródłem dla budowanego webpartu.
>
> Dzięki z góry za wszelkie sugestie i materiały.
Niestety nie pisałem Web Partów, które komunikują się z zewnętrznym
źródłem danych, tylko takie, które korzystają z SharePoint Object
Model. Widzę jednak pewien problem w używaniu ustawień z Web.config
przez WP: nie wiem, czy mechanizm deploymentu (tzw. Features) pozwala
dopisać coś do Web.config podczas deploymentu.
Jakbyś naszkicował konkretny scenariusz, żebyśmy mogli rozmawiać o
konkretnym przykładzie, to myślę, że byłoby łatwiej.
Pozdrawiam!
Marcin
U mnie też czeka w kolejce.
> Jasne,
> wybierz jeden z poniższych.
>
> Przykład 1:
[ciach]
> Przykład 2:
[ciach]
> Odrazu też dodam, że dopiero zaczynam poruszać się w WSSie i być może
> problemy które opisałem w pełni się dają zrealizować z wykorzystaniem
> tego co on sam oferuje. Jeżeli tak jest to będę wdzięczny za
> naprowadzenie.
Odpowiadam dzisiaj z opóźnieniem, bo musiałem poszukać w Internecie i
książkach. Wydaje mi się, że integrację z zewnętrznymi aplikacjami
robi się w SharePoincie przez Business Data Catalog. Z tego, co się
dowiedziałem, to definiuje się tam połączenia do zewnętrznych źródeł
danych (bazy danych, usługi Webowe) i potem korzysta się z modelu
obiektowego tego Business Data Catalog. Zaleta: w Web Parcie mamy
dostęp do zewnętrznych danych bez dodatkowego wysiłku, ładnie
integruje się to z SharePointowym wyszukiwaniem itp. Wada: Business
Data Catalog jest dostępny tylko w MOSS, w WSS go nie ma.
Jeśli chodzi o rozwiązanie bazujące tylko na WSS, to chyba niestety
trzeba trzymać ustawienia gdzieś w systemie plików WSSa (np. w
folderze do którego instaluje się Feature -- zaletą jest łatwość
deploymentu) i odczytywać je za każdym połączeniem do bazy danych.
Jak znajdę jakieś inne rozwiązanie, np. jak za pomocą dostępnych w WSS
mechanizmów deploymentu dodać connection string do pliku Web.config,
to dam znać.
Pozdrawiam!
Marcin
No niestety, WSS to tylko podstawa. Takie bajery jak BDC to tylko w MOSSie.
> W między czasie przyszły mi dwa rozwiązania do głowy:
>
> 1.
> Dobudowanie custom editor zone, w której będzie wpisywało się
> połączenie do bazy (server,baza,user,pass) a które będą przechowywane
> przez WSS. Oczywistą wadą jest tutaj fakt, ze trzbea będzie to klepać
> przy każdym dodaniu webParta.
>
> 2.
> Przejście na WebSerwisy i oparcie całej warstwy biznessowej o nie. W
> takim przypadku trzeba byłoby też dopisać custom editor zone i prosić
> użytkownika o wpisanie adresu webserwisu. Trochę to lepsze od
> podejścia 1, ale zawsze też wymaga tego, żeby to wpisywać przy dodaniu
> webParta do strony.
>
> Jak będziesz miał chwilę czasu to napisz mi proszę jakie wady mogą
> mięć powyższe rozwiązania ?
Komentarz do obu rozwiązań:
Rozwiązanie oparte o Web serwisy jest fajniejsze i da się je zrobić
mniejszym nakładem kodu, np. zapuszczając transformację XSLT
bezpośrednio na danych otrzymanych z Web serwisu. Zgaduję, że często
może to oszczędzić kodowania w C# albo VB.NET.
Co do przechowywania adresu Web serwisu, to faktycznie można użyć
właściwości Web Parta i ustalić jej zasięg na dzielony. Wtedy
wszystkie instancje tego Web Parta dzielą tę samą wartość ustawienia.
Dodatkowo, można napisać własnego editor parta, który będzie pozwalał
na edycję tego ustawienia jedynie administratorowi. I gotowe :).
> ps. Przebiłem się już przez połowę książki którą zaproponowałeś i
> trzeba oddać, że to dobra pozycja, która układa wszystko w głowie.
Wygląda ona naprawdę dobrze. U mnie czeka w kolejce, ale pomogła mi
już kilka razy.
Pozdrawiam!
Marcin
Powinno się to dać zrobić. Jakbyś miał jakieś problemy to pisz, co
dwie głowy to nie jedna. A jak Ci się uda, to też napisz!
Pozdrawiam!
Marcin
Kolega pisał o WSS, w którym nie ma audiences. Poza tym audiences to
moim zdaniem środek do "dystrybucji" contentu, czyli jak
zaimplementować to, żeby ludzie widzieli to, co ich interesuje.
Mariuszowi chodzi raczej o security, czyli jak pozwolić tylko wybranym
użytkownikom zmieniać ustawienia oprogramowania.
Problem o którym dyskutowaliśmy jest następujący: chcemy napisać Web
Parta, który ma jakieś ustawienie, np. adres Web serwisu albo
connection string do bazy danych.
Moje pytanie brzmi: gdzie przechowywać to ustawienie tak, żeby było
zgodnie z regułami sztuki. Przez reguły sztuki mam na myśli np.
deployment Web Parta poprzez mechanizm Features.
Wymyślilismy więc, żeby ustawienie zapisać we właściwości Web Parta,
która ma ustawiony zakres personalizacji (personalization scope) na
Shared i za pomocą specjalnego editor parta dać dostęp do edycji tylko
administratorom.
Dla niezainteresowanych to pewnie mało zrozumiałe, ale gdybyś mógł nam
Arturze coś poradzić, to byłoby fajnie :).
Pozdrawiam!
Marcin