Programowanie usługi przepływu pracy narzędzia Contract-First
Począwszy od programu .NET Framework 4.5, program Windows Workflow Foundation (WF) oferuje lepszą integrację między usługami internetowymi i przepływami pracy w formie tworzenia przepływu pracy pierwszego kontraktu. Narzędzie do programowania przepływu pracy pierwszego kontraktu umożliwia najpierw zaprojektowanie kontraktu w kodzie. Następnie narzędzie automatycznie generuje szablon działania w przyborniku dla operacji w kontrakcie. Ten temat zawiera omówienie sposobu mapowania działań i właściwości w usłudze przepływu pracy na atrybuty kontraktu usługi. Aby zapoznać się z przykładem krok po kroku tworzenia usługi przepływu pracy opartej na umowie, zobacz How to: Create a workflow service that consumes an existing service contract (Jak utworzyć usługę przepływu pracy, która korzysta z istniejącego kontraktu usługi).
W tym temacie
Mapowanie atrybutów kontraktu usługi na atrybuty przepływu pracy
Tabele w poniższych sekcjach określają różne atrybuty i właściwości programu WCF oraz sposób ich mapowania na działania i właściwości komunikatów w przepływie pracy pierwszego kontraktu.
Atrybuty kontraktu usługi
Nazwa właściwości | Obsługiwane | opis | Walidacja WF |
---|---|---|---|
CallbackContract | Nie. | Pobiera lub ustawia typ kontraktu wywołania zwrotnego, gdy kontrakt jest kontraktem dwudupleksowym. | (Nie dotyczy) |
ConfigurationName | Nie. | Pobiera lub ustawia nazwę używaną do lokalizowania usługi w pliku konfiguracji aplikacji. | (Nie dotyczy) |
HasProtectionLevel | Tak | Pobiera wartość wskazującą, czy element członkowski ma przypisany poziom ochrony. | Receive.ProtectionLevel nie powinien mieć wartości null. |
Nazwisko | Tak | Pobiera lub ustawia nazwę <elementu portType> w języku WSDL (Web Services Description Language). | Element Receive.ServiceContractName.LocalName powinien być zgodny. |
Przestrzeń nazw | Tak | Pobiera lub ustawia przestrzeń nazw <elementu portType> w języku WSDL (Web Services Description Language). | Receive.ServiceContractName.NameSpace powinien być zgodny |
ProtectionLevel | Tak | Określa, czy powiązanie kontraktu musi obsługiwać wartość właściwości ProtectionLevel. | Wartość Receive.ProtectionLevel powinna być zgodna. |
Tryb sesji | Nie. | Pobiera lub ustawia, czy sesje są dozwolone, niedozwolone lub wymagane. | (Nie dotyczy) |
TypeId | Nie. | Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). | (Nie dotyczy) |
Tutaj wstaw treść podsekcji.
Atrybuty kontraktu operacji
Nazwa właściwości | Obsługiwane | opis | Walidacja WF |
---|---|---|---|
Akcja | Tak | Pobiera lub ustawia akcję adresowania WS komunikatu żądania. | Wartość Receive.Action powinna być zgodna. |
AsyncPattern | Nie. | Wskazuje, że operacja jest implementowana asynchronicznie przy użyciu pary metod Begin<methodName> i End<methodName> w kontrakcie usługi. | (Nie dotyczy) |
HasProtectionLevel | Tak | Pobiera wartość wskazującą, czy komunikaty dla tej operacji muszą być szyfrowane, podpisane, czy oba. | Receive.ProtectionLevel nie powinien mieć wartości null. |
IsInitiating (IsInitiating) | Nie. | Pobiera lub ustawia wartość wskazującą, czy metoda implementuje operację, która może zainicjować sesję na serwerze (jeśli taka sesja istnieje). | (Nie dotyczy) |
IsOneWay | Tak | Pobiera lub ustawia wartość wskazującą, czy operacja zwraca komunikat odpowiedzi. | (Brak funkcji SendReply dla tej odbierania lub brak funkcji ReceiveReply dla tego wysyłania). |
IsTerminating | Nie. | Pobiera lub ustawia wartość wskazującą, czy operacja usługi powoduje zamknięcie sesji przez serwer po wysłaniu komunikatu odpowiedzi. | (Nie dotyczy) |
Nazwisko | Tak | Pobiera lub ustawia nazwę operacji. | Element Receive.OperationName powinien być zgodny. |
ProtectionLevel | Tak | Pobiera lub ustawia wartość określającą, czy komunikaty operacji muszą być szyfrowane, podpisane, czy oba. | Wartość Receive.ProtectionLevel powinna być zgodna. |
Odpowiedz | Tak | Pobiera lub ustawia wartość akcji SOAP dla komunikatu odpowiedzi operacji. | Akcja SendReply.Action powinna być zgodna. |
TypeId | Nie. | Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). | (Nie dotyczy) |
Atrybuty kontraktu komunikatów
Nazwa właściwości | Obsługiwane | opis | Walidacja WF |
---|---|---|---|
HasProtectionLevel | Tak | Pobiera wartość wskazującą, czy komunikat ma poziom ochrony. | Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu). |
IsWrapped | Tak | Pobiera lub ustawia wartość określającą, czy treść komunikatu ma element otoki. | Brak walidacji (Receive.Content i Sendreply.Content muszą być zgodne z typem kontraktu komunikatu). |
ProtectionLevel | Nie. | Pobiera lub ustawia wartość, która określa, czy komunikat musi być zaszyfrowany, podpisany, czy oba. | (Nie dotyczy) |
TypeId | Tak | Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). | Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu). |
Nazwa otoki | Tak | Pobiera lub ustawia nazwę elementu otoki treści wiadomości. | Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu). |
WrapperNamespace | Nie. | Pobiera lub ustawia przestrzeń nazw elementu otoki treści komunikatu. | (Nie dotyczy) |
Atrybuty kontraktu danych
Nazwa właściwości | Obsługiwane | opis | Walidacja WF |
---|---|---|---|
IsReference | Nie. | Pobiera lub ustawia wartość wskazującą, czy zachować dane odwołania do obiektu. | (Nie dotyczy) |
Nazwisko | Tak | Pobiera lub ustawia nazwę kontraktu danych dla typu. | Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu). |
Przestrzeń nazw | Tak | Pobiera lub ustawia przestrzeń nazw dla kontraktu danych dla typu. | Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu). |
TypeId | Nie. | Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). | (Nie dotyczy) |
Atrybuty kontraktu błędów
Nazwa właściwości | Obsługiwane | opis | Walidacja WF |
---|---|---|---|
Akcja | Tak | Pobiera lub ustawia akcję komunikatu o błędzie protokołu SOAP określony jako część kontraktu operacji. | Akcja SendReply.Action powinna być zgodna. |
DetailType | Tak | Pobiera typ obiektu z możliwością serializacji, który zawiera informacje o błędzie. | Właściwość SendReply.Content powinna być zgodna z typem |
HasProtectionLevel | Nie. | Pobiera wartość wskazującą, czy komunikat o błędzie protokołu SOAP ma przypisany poziom ochrony. | (Nie dotyczy) |
Nazwisko | Nie. | Pobiera lub ustawia nazwę komunikatu o błędzie w języku WSDL (Web Services Description Language). | (Nie dotyczy) |
Przestrzeń nazw | Nie. | Pobiera lub ustawia przestrzeń nazw błędu PROTOKOŁU SOAP. | (Nie dotyczy) |
ProtectionLevel | Nie. | Określa poziom ochrony, który wymaga błędu protokołu SOAP z powiązania. | (Nie dotyczy) |
TypeId | Nie. | Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). | (Nie dotyczy) |
Dodatkowe informacje o obsłudze i implementacji
Nieobsługiwane funkcje kontraktu usługi
Korzystanie z zadań TPL (biblioteki równoległej zadań) w kontraktach nie jest obsługiwane.
Dziedziczenie w kontraktach usług nie jest obsługiwane.
Generowanie skonfigurowanych działań obsługi komunikatów
Dwie publiczne metody statyczne są dodawane do Receive działań i SendReply w celu obsługi generowania wstępnie skonfigurowanych działań komunikatów podczas korzystania z usług przepływu pracy pierwszego kontraktu.
Działanie wygenerowane przez te metody powinno przejść walidację kontraktu, dlatego te metody są używane wewnętrznie w ramach logiki walidacji dla Receive elementów i SendReply. Wszystkie OperationNamewartości , ServiceContractName, Action, SerializerOption, ProtectionLeveli KnownTypes są wstępnie skonfigurowane tak, aby odpowiadały zaimportowanej umowie. Na stronie właściwości zawartości dla działań w projektancie przepływu pracy sekcje Komunikat lub Parametry są również wstępnie skonfigurowane do dopasowania kontraktu.
Kontrakty błędów programu WCF są również obsługiwane przez zwrócenie oddzielnego zestawu skonfigurowanych SendReply działań dla każdego z błędów, które pojawiają się w obiekcie Faults FaultDescriptionCollection.
W przypadku innych części, OperationDescription które są obecnie nieobsługiwane przez usługi WF (np. zachowania WebGet/WebInvoke lub zachowania operacji niestandardowych), interfejs API zignoruje te wartości w ramach generowania i konfiguracji. Nie zostaną zgłoszone żadne wyjątki.