Udostępnij za pośrednictwem


Omówienie usług przepływu pracy

Usługi przepływu pracy to usługi oparte na technologii WCF, które są implementowane przy użyciu przepływów pracy. Usługi przepływu pracy to przepływy pracy, które używają działań obsługi komunikatów do wysyłania i odbierania komunikatów programu Windows Communication Foundation (WCF). Program .NET Framework 4.5 wprowadza szereg działań obsługi komunikatów, które umożliwiają wysyłanie i odbieranie komunikatów z poziomu przepływu pracy. Aby uzyskać więcej informacji na temat działań obsługi komunikatów i sposobu ich użycia do implementowania różnych wzorców wymiany komunikatów, zobacz Działania obsługi komunikatów.

Zalety korzystania z usług przepływu pracy

W miarę jak aplikacje stają się coraz bardziej rozproszone, poszczególne usługi stają się odpowiedzialne za wywoływanie innych usług w celu odciążenia niektórych prac. Implementowanie tych wywołań jako operacji asynchronicznych wprowadza pewną złożoność w kodzie. Obsługa błędów zwiększa dodatkową złożoność w postaci obsługi wyjątków i zapewnia szczegółowe informacje śledzenia. Niektóre usługi są często długotrwałe i mogą zająć cenne zasoby systemowe podczas oczekiwania na dane wejściowe. Ze względu na te problemy aplikacje rozproszone są często bardzo złożone i trudne do zapisu i konserwacji. Przepływy pracy to naturalny sposób wyrażania koordynacji pracy asynchronicznej, zwłaszcza wywołań do usług zewnętrznych. Przepływy pracy są również skuteczne w reprezentowaniu długotrwałych procesów biznesowych. Są to te cechy, które sprawiają, że przepływ pracy jest doskonałym elementem zawartości do tworzenia usług w środowisku rozproszonym.

Implementowanie usługi przepływu pracy

Podczas implementowania usługi WCF należy zdefiniować szereg kontraktów opisujących usługę i dane, które wysyła i odbiera. Dane są reprezentowane jako kontrakty danych i kontrakty komunikatów. Zarówno WCF, jak i usługi przepływu pracy używają definicji kontraktu danych i kontraktu komunikatów w ramach opisów usług. Sama usługa uwidacznia metadane (w postaci WSDL) w celu opisania operacji usługi. W programie WCF kontrakty usług i kontrakty operacyjne definiują usługę i obsługiwane przez nią operacje. Jednak w usłudze przepływu pracy te kontrakty są częścią samego procesu biznesowego. Są one uwidacznione w metadanych przez proces nazywany wnioskowaniem kontraktu. Gdy usługa przepływu pracy jest hostowana przy użyciu WorkflowServiceHostmetody , definicja przepływu pracy jest badana i jest generowana na podstawie zestawu działań obsługi komunikatów znalezionych w przepływie pracy. W szczególności następujące działania i właściwości są używane do generowania kontraktu:

Receive Działania

SendReply Działania

TransactedReceiveScope Działania

Wynikiem końcowym wnioskowania kontraktu jest opis usługi używającej tych samych struktur danych co usługi WCF i kontraktów operacyjnych. Te informacje są następnie używane do uwidaczniania WSDL dla usługi przepływu pracy.

Uwaga

Program .NET Framework 4.6.1 nie umożliwia pisania usług przepływu pracy przy użyciu istniejącej definicji kontraktu bez dodatkowej obsługi narzędzi. Kontrakty usług przepływu pracy są tworzone przez omówiony wcześniej proces wnioskowania kontraktu. Kontrakty komunikatów i kontrakty danych są jednak w pełni obsługiwane.

Usługi przepływu pracy i powiązania oparte na msMQ

Program WCF definiuje dwa powiązania oparte na protokole NetMsmqBinding MSMQ i MsmqIntegrationBinding. Powiązania oparte na msMQ są często używane z usługami przepływu pracy ze względu na długotrwały charakter takich usług. Powiązania oparte na protokole MSMQ mają właściwość określającą ValidityDuration , jak długo komunikaty MSMQ mogą być prawidłowe. Ze względu na długotrwały charakter usług przepływu pracy możliwe jest, że czas trwania ważności komunikatu MSMQ może upłynąć, zanim usługa przepływu pracy będzie mogła go przetworzyć. Dlatego bardzo ważne jest ustawienie czasu ważności powiązania MSMQ z odpowiednią wartością. Tę wartość należy wybrać na podstawie przepływu pracy i sposobu przetwarzania komunikatów. Jeśli na przykład masz przepływ pracy z działaniem Receive , po którym następuje działanie niestandardowe, które trwa 10 minut, a następnie kolejne Receive działanie, poprawna wartość ValidityDuration będzie większa niż 10 minut.

Hostowanie usługi przepływu pracy

Podobnie jak usługi WCF, usługi przepływu pracy muszą być hostowane. Usługi WCF używają ServiceHost klasy do hostowania usług i usług przepływu pracy używanych WorkflowServiceHost do hostowania usług. Podobnie jak usługi WCF, usługi przepływu pracy mogą być hostowane na różne sposoby, na przykład:

  • W zarządzanej aplikacji .NET Framework.

  • W usługach Internet Information Services (IIS).

  • W usłudze aktywacji procesów systemu Windows (WAS).

  • W zarządzanej usłudze systemu Windows.

Usługi przepływu pracy hostowane w zarządzanej aplikacji .NET Framework lub zarządzanej usłudze systemu Windows tworzą wystąpienie WorkflowServiceHost klasy i przekazują jej wystąpienie WorkflowService zawierające definicję przepływu pracy we Body właściwości . Definicja przepływu pracy zawierająca działania obsługi komunikatów jest uwidoczniona jako usługa przepływu pracy.

Aby hostować usługę przepływu pracy w usługach IIS lub WAS, umieść plik xamlx zawierający definicję usługi przepływu pracy w katalogu wirtualnym. Domyślny punkt końcowy (przy użyciu ) BasicHttpBindingjest tworzony automatycznie, aby uzyskać więcej informacji, zobacz Uproszczona konfiguracja. Możesz również umieścić plik Web.config w katalogu wirtualnym, aby określić własne punkty końcowe. Jeśli definicja przepływu pracy znajduje się w zestawie, możesz umieścić plik svc w katalogu wirtualnym i zestaw przepływu pracy w katalogu App_Code. Plik .svc musi określać fabrykę hosta usługi i klasę, która implementuje usługę przepływu pracy. W poniższym przykładzie pokazano, jak określić fabrykę hosta usługi i określić klasę, która implementuje usługę przepływu pracy.

<%@ServiceHost Factory="System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory"
Service="EchoService"%>