2010-12-14 7 views
1

私は2年半のVB.Netの経験があります。ほとんどの場合、独学で教えられます。私はあなたがこれを始める前にお茶を飲むことをお勧めします。これはかなり長い時間がかかっているようです...VB.Netアプリケーションを分割するかどうかを決定する方法と、分割する方法を決定する方法はありますか?

私は現在、15000行以上のコードのかなり大きなアプリケーション(VB.Netウェブサイト)を持っています。最後のカウント。そのような小売りや何か複雑なことはありません。それは文字通り、管理フロントエンド、カタログ/カタログ管理システム、およびページビューシステムを備えた卸売業の閲覧用ウェブサイトです。

.NETアプリケーションがバックグラウンドでどのように動作しているかはよく分かりません。すべて同じスレッドにロードされている場合でも、スレッドごとにロードされている場合もあります。次のように少なくとも:-) ...私は考えるのが好き

は、基本的には自分のアプリケーションが設定されています

  • 2つの異なる領域があります - 顧客地域と行政のフロントエンドが。
  • 顧客フロントエンドの主要部分はカタログです。 MasterPageは製品のリストをロードしますが、それはすべてです。これはすべての顧客フロントエンドページに共通しています。
  • 変更をアップロードする前に、一度に1つまたは複数のアプリケーションで作業する傾向があります。たとえば、カタログの階層を変更し、階層の変更に合わせてカタログページを変更し、それ以外はすべて残しておくことができます。
  • ページビューデータベースは非常に大きくなっています。そのため、アプリケーションが最初に要求されたときに動作が遅くなっています。
  • アプリケーションのタイムアウトは5分に設定されています。変更方法はわかりません。私はここでこの質問をしてみましたが、ソリューションが非常に複雑であり、変更しないことを覚えているようです顧客は最後のページビューの5分後にアプリケーションを要求し、アプリケーションを最初からリロードします。これは、5分間の非アクティブを超えるたびに非常に遅いページロードがあることを意味します。

私はこれがすべてであれば、アプリケーションを分割するために最善の方法を決定するために考慮が必要な場合はわからないが、次のようにカタログシステムの各部分が設定されています

  • Managerクラス管理者フロントエンドが指定された型の項目を追加、編集、削除するために使用する最上位レベルと、指定された型の項目のリストを取得するための顧客フロントエンドです。たとえば、「RangeManager」には製品範囲のリストが含まれ、顧客のフロントエンドからこれらの製品と対話するために使用されます。
  • 属性のリストを含むItemクラス(Rangeなど)。たとえば、Name、Description、Visible、Created、CreatedByなどです。追加/編集のためのフォームはこれらを介してループし、管理者に関連するコントロールを表示します。たとえば、BooleanAttributeのチェックボックス。
  • AttributeAttribute、BooleanAttribute、IntegerAttributeなどのタイプの属性クラスです。また、RangeAttribute、UserAttributeなどのカスタム属性(データ型だけでなく)もあります。これらには、最初に要求されたときに含まれているアイテムに固有のデータを取得するために使用されるデータフィールドが与えられます。基本的にItemには、最初に要求されたときにのみAttributesによって格納され、アクセスされるDataRowが与えられます。
  • 特定のマネージャから1つのアイテムが要求されると、マネージャはデータベース内のすべてのアイテムをループし、アイテムクラスの新しいインスタンスを作成します。たとえば、RangeManagerからRangeが要求されると、RangeManagerはRangesテーブルのすべてのDataRowをループし、それぞれのRangeの新しいインスタンスを作成します。上で述べたように、DataRowですべてのデータをそこにロードするのではなく、単に新しいインスタンスを作成します。属性自体は、最初に要求されたときにDataRowから関連するデータをフェッチします。

はそれだけでは、再コンパイルして(例えば、私が設定した場合、アプリケーション全体に私はマイナーなバグや背後にあるコードである単語のスペルの間違いを修正するたびにアップロードする、私の心の中で、少しは愚かなようですラベルのテキストは動的に)。カタログページへの修正/変更は、現在のように顧客がコンタクトページを表示しようとしている可能性があります。これは、カタログページとは全く関係なく、同じMasterPageを持つことによるものではなく、DLLアップロードされています。

基本的に私の質問は、私の現在の状況を考えれば、アプリケーションを複数のアプリケーションに分割する方法でアプリケーションのアーキテクチャをどのように変更することを提案するのでしょうか?私は顧客/管理者、顧客/管理者、ページビュー、あるいは他の何かの方法だろうか?それとも全く?ここで言及していない他の選択肢はありますか? Webサービスはここに便利なのでしょうか?カタログ自体を別のアプリケーションに分割し、他のすべてのページのマスターページにWebサービスを使用して、左側に一覧表示する製品の名前を取得するようにしますか?私はちょうど方法を複雑すぎるものにしていますか?この質問の長さで判断すると、これは初めてではありません...私はそれを短くしようとしていますが、いつも失敗します。:-)

事前に感謝します。私はちょうどあなたを完全に混乱させた場合は申し訳ありません!読書によって

よろしく、

リチャード

+0

私は誰かがおそらくこの質問の長さのためにあなたに悲しみを与えるだろうと思う:) –

+0

これはASP.NETですか?あなたはウェブサイトとマスターページを何度も持っていると言いますが、私はVB.NETが明示的に言及していることしか見ていません。 –

+0

@El Ronnoco:なぜ私は何度か謝罪し、それを読む前にお茶を飲むことを勧めました! :) @Cody:私はその後、.netタグを削除します。私に瞬間を与えてください... – ClarkeyBoy

答えて

1
  1. 15000 LOCは本当にすべてが大きくはありません。

  2. あなたのサイトを公開用にあらかじめコンパイルしていないようです。 http://msdn.microsoft.com/en-us/library/1y1404zt(v=vs.80).aspx

  3. アプリケーションを再コンパイルしてアップロードするのが最良の方法です。マークアップが変更されている場合は、個別にアップロードできます(たとえば、aspxページのhtmlレイアウトを変更するなど)。

  4. アプリケーションのタイムアウトで何を意味するのか分かりませんが、アプリドメインが5分ごとにリサイクルする場合は、まったくそう思わないことがあります。あなたはこれを調べるべきです。

  5. また

、あなた自身がサイトの様々な異なる部分で作業(つまり、多くの異なった変化)を見つけた場合、しかし、単独で唯一のいくつかのアイテムを展開する必要があり、その後、あなたはあなたのソースコントロールを使用しているかを調べる必要がありますツール(あなたは1つ使っていますか?) GITや分岐/マージのようなものを見てください。

+0

ポイント2に関して:はい私は出版に行くことによってそれをコンパイルしています。ポイント4:はい、約5分後にアプリドメインがリサイクルされるということです。セッションは1時間に設定されていますが、5時間後にユーザーはまだログアウトしています(幸いなことに、唯一のユーザーは管理者です)。私はこのことについて、今後さらに検討する予定です。私はソースコントロールを使用していないのではないかと心配しています。私はプレースメントの年から、チームに取り組んでいればこれが意味する印象を受けました。私は唯一の開発者なので、私の言うことに基づいて、私はそれが必要だとは思わなかった。 – ClarkeyBoy

+0

ポイント3:ちょうどそのようにするのは非常に "うまくいく"ようです。私は不必要な休憩時間を意味します。私はいつも真夜中以降にアップロードして、不必要な休憩時間を避けるようにしていますが、今では世界中で知られているので、このアプローチは必ずしも機能しません。 – ClarkeyBoy

+0

@ClarkeyBoy - ソースコントロールを使用します。それだけでもそれはあなたです - 本当にあなたが元に戻れば、あなたは元に戻すことができます。休憩時間については、それが忙しくなっている場合は、何らかの種類のWebファームを見る必要があるかもしれないので、あまりにも多くのユーザーを混乱させることなく、一度に個々のサーバーを停止することができます。 – Paddy

1
+0

ありがとうございます。私はこれを徹底的に読んだことを確認します!正直言って私がこのリンクを返信していたとしても、この質問をすることは有益でした。 – ClarkeyBoy

関連する問題