6

私は現在、データベースからいくつかのデータを取得し (A)、データに対していくつかの作業を行ってから、別のデータベースの別のテーブルにコピーする (B) ビジネス用のプロセスを作成しています。大量のデータを処理しており、このプロセスには長い時間 (数週間) かかると予想されます。

この種のタスクで WCF を使用するのは賢明な設計選択ですか? そうすれば、インポート プロセス全体の進行状況を「クエリ」/表示するために、ある種のクライアント アプリケーション/Web フロントエンド (ビジネスの残りの部分が使用できる) を使用できると考えました。また、クライアントがサービスを通じてインポート プロセスを開始/一時停止/停止できるようにしたいと考えています。

これはWCFで実行できますか? これも正しい選択ですか?いくつかの点で、これは通常の Windows サービスのように機能する必要があると思います (WCF 経由で公開できるいくつかの方法を使用して、インポートの進行状況を「クエリ」する方が簡単だと思いましたか?)

また、たとえば、1 人のユーザーが同時にインポート プロセスを開始/停止しようとした場合などに、問題が発生する可能性はありますか? シングルトン パターンは、誰もが同じ単一のインポート プロセスで作業できるようにするためのアプローチですか?

どんな考え/アイデアも大歓迎です。

4

2 に答える 2

2

はい。これは、WCF ストリーミングで機能します。ここで、別の同様の質問に対する私の回答を見てください。

于 2012-04-17T15:41:40.863 に答える
2

編集/序文: この回答は、ソフトウェア スタック全体の通信ではなく、プロセスとのユーザー インタラクションのみにWCF を使用すること、およびコア作業は長時間実行されるサービス自体によって行われることを前提としています。

はい、これは WCF で実行可能であり、おそらく適切なソリューションです。相互運用プロパティのセットを頻繁にクエリ/更新する長時間実行プロセッサ スレッドがあります (たとえば、完了率、作業中の項目を更新し、「一時停止」フラグなどを確認します)。 .)。これらのプロパティは、WCF インターフェイス メソッドによってクエリ/設定されます。

シングルトン パターンはこれに最適です。スレッドが正しくセットアップされている場合、ユーザーは長時間実行されるスレッド (または複数のスレッド) がチェックするいくつかのプロパティと対話します。

非常に高いレベルの観点から、プロセッサ クラスはおそらくコアで次のようになります (これは、それがどのように実行されるかの単なるモデルです。このように正確に作成しないでください。そうしないと、悪夢に見舞われます)。

// IWcfProcessor is the ServiceContract interface
// Processor runs as a singleton and does (or has a thread that does) the processing work
class Processor : IWcfProcessor
{
    public Processor()
    {
        new Thread(Process).Start();
    }

    public void Process()
    {
        while (Run)
        {
            // Do long-running process stuff, update some tables
            PercentDone += 0.1;
        }
    }

    public decimal PercentDone { get; set; }
    public bool Run { get; set; }

    /// WCF method defined in IWcfProcessor
    public void SetState(bool state)
    {
        Run = state;
    }

    /// WCF method defined in IWcfProcessor
    public decimal GetStatus()
    {
        return PercentDone;
    }
}

IWcfProcessor次に、Web またはアプリケーション エンドポイントからタッチポイントにフックできます。

また、たとえば、1 人のユーザーが同時にインポート プロセスを開始/停止しようとした場合などに問題が発生する可能性はありますか?

スレッドの相互運用を正しく設定していれば、問題は発生しません。

シングルトン パターンは、誰もが同じ単一のインポート プロセスで作業できるようにするためのアプローチですか?

はい、これで完璧です。

于 2012-04-17T15:14:06.290 に答える