2012-03-13 23 views
-1

複数のASP.NET Webアプリケーションを処理するSQL Serverデータベースがあります。彼らはそれぞれデータを区別するために独自のSiteIDを持っています。1つのデータベースへの複数の接続を処理するサービスが必要

私は最近、複数のアプリケーションが1つのデータベースに直接アクセスすることをお勧めしていないことを認識し、すべてのデータベース接続を処理するサービスを実装することに決めました。

すべてのWebアプリケーションとデータベースは、同じWindows 2008サーバーにあります。

どのような種類のサービスがこの機能に最適であるかを知りたいと思います。 WebサービスまたはWindowsサービス?以前の仕事では、サーバー上で実行されたWindowsサービスがあるように見えましたが、これはWebサービスと比べてどのような利点がありますか? Webサービスの対

+2

これらはWebアプリケーションなので、WebサービスはWindowsサービスに対して多くの意味を持ちます。彼らはどちらも "ウェブ"を持っているので、あなたは知っています。 – jrummell

+0

皮肉の必要はありますか?私は、この非常に目的のためにwindows server 2008上でWindowsサービスを使って非常に成功したセットアップを見たので尋ねました。 – David

+0

あなたは何を達成しようとしていますか?単にWebアプリケーションを別のマシンに移動するだけでは、必要ありません。 – Maciej

答えて

0

Windowsサービスがオレンジ対りんごです... Windowsサービスが独自にデータを提供していない...だからここ

は、いくつかのオプションがあります:伝統的で

データアクセスコード

これはあなたの持っているようです。これが論理的に別のレイヤーである限り、これはおそらくそれほど悪くはありません。サービスを使用する

サービス

は懸念/実装の利点は、このような真の分離をたくさん持っています。クライアントアプリケーションとは異なる言語/プラットフォームでサービスを実装することもできます。欠点はパフォーマンスかもしれない。データをシリアル化/デシリアライズする必要があり、それをスライスする方法はCPUサイクルを要します。

インタフェース駆動型のアプローチ

あなたがインターフェイスに対してアプリケーションでのデータへのアクセスを書くことができるので、これはいいです。そのインタフェースは、従来のADO/ORMコードで実装できます。または、Webサービスを使用することもできます。これには、UIとデータを分離し、自動化された単体テストをはるかに容易にするという明確な利点があります。

1

複数のアプリケーションで1つのデータベースにアクセスすることは間違いありませんが、複数のWebサイトですべてのデータアクセスとビジネスロジックを複製することを避けようとしていると思います。言い換えれば、一度にすべてのアプリケーションを更新できる集中サービスを提供することになります。

WCFサービスが必要なように聞こえます.WCFサービスを使用すると、IIS上のWebアプリケーションとして、または自己ホストWindowsサービスとして実行できます。あなたがWCFをやったことがないなら、少し学習曲線がありますが、それは十分に学習価値があります。

IISの下でWCFを使用すると、Webサイトを実行するのと同じ利点が得られます。アプリケーションライフサイクル管理、IIS mmsプラグインを使用したメンテナンス、特定のプールIDでの実行など

Windowsサービスとして、サービスmmsを管理します。少し)サービスの起動とシャットダウンを処理し、もちろんIISで行うアプリケーションライフサイクル管理を取得しません。

あなたが選択するのは、サーバーに対するセキュリティアクセス権と実行が許可されているツールによって異なります。あなたがサーバーへのフルアクセス権を持っているなら、私はIISの方が好きですが、それは完全に主観的です。

関連する問題