Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何决定是否拆分VB.Net应用程序,如果是,如何拆分?_Vb.net_Web Applications_Architecture - Fatal编程技术网

如何决定是否拆分VB.Net应用程序,如果是,如何拆分?

如何决定是否拆分VB.Net应用程序,如果是,如何拆分?,vb.net,web-applications,architecture,Vb.net,Web Applications,Architecture,我有2年半的VB.Net经验,大部分是自学的,所以如果我看起来还是很不懂,不懂一些基础知识,请容忍我。我建议你在开始之前先喝杯茶,因为时间似乎已经很长了 我目前有一个相当大的应用程序(VB.Net网站),在最后一次计数时,代码超过15000行。它不做零售或任何特别复杂的事情-它实际上只是一个批发浏览网站,带有管理前端、目录/目录管理系统和页面浏览系统 我真的不太了解.Net应用程序在后台是如何工作的-它们是否都加载在同一个线程上,或者是否每个应用程序都有自己的线程。。。我只知道如何编写代码,或者

我有2年半的VB.Net经验,大部分是自学的,所以如果我看起来还是很不懂,不懂一些基础知识,请容忍我。我建议你在开始之前先喝杯茶,因为时间似乎已经很长了

我目前有一个相当大的应用程序(VB.Net网站),在最后一次计数时,代码超过15000行。它不做零售或任何特别复杂的事情-它实际上只是一个批发浏览网站,带有管理前端、目录/目录管理系统和页面浏览系统

我真的不太了解.Net应用程序在后台是如何工作的-它们是否都加载在同一个线程上,或者是否每个应用程序都有自己的线程。。。我只知道如何编写代码,或者至少我喜欢这样认为…:-)

基本上,我的应用程序设置如下:

  • 有两个不同的区域-客户区域和管理前端
  • 客户前端的主要部分是目录。母版页将加载一个产品列表,但仅此而已,这对于所有客户前端页面都是通用的
  • 在上传更改之前,我倾向于一次只处理应用程序的一个或几个部分。因此,例如,我可能会改变目录的层次结构,并更改目录页面以匹配层次结构的更改,而不考虑其他内容
  • pageview数据库变得非常大,因此由于其工作方式的原因,当应用程序第一次被请求时,它会变得非常缓慢
  • 应用程序超时设置为5分钟-不知道如何更改它,我甚至尝试在这里问这个问题,似乎还记得解决方案非常复杂,建议我不要更改它,但如果客户在最后一次页面查看后5分钟请求应用程序,它将从头重新加载应用程序。这意味着当页面加载超过5分钟不活动时,页面加载速度会非常慢
我不确定是否需要考虑这一点,以确定如何最好地拆分应用程序(如果有),但目录系统的每个部分的设置如下:

  • 顶级的Manager类,管理员前端使用它添加、编辑和删除指定类型的项目,客户前端使用它检索指定类型的项目列表。例如,“RangeManager”将包含产品“范围”列表,并将用于从客户前端与这些产品进行交互
  • 包含属性列表的项类,例如Range。例如名称、描述、可见、已创建、已创建等等。用于添加/编辑循环以向管理员显示相关控件的表单。例如,布尔属性的复选框
  • 属性类,可以是StringAttribute、BooleanAttribute、IntegerAttribute等类型。还有一些自定义属性(不仅仅是数据类型),如RangeAttribute、UserAttribute等。这些被赋予了一个数据字段,用于在第一次请求时获取特定于所包含项的数据。基本上,该项被赋予一个DataRow,只有当属性第一次被请求时,它才被属性存储和访问
  • 当从特定的管理器请求一个项时,管理器将遍历数据库中的所有项,并创建该项类的新实例。例如,当从RangeManager请求范围时,RangeManager将循环遍历Ranges表中的所有数据行,并为每个数据行创建一个新的Range实例。如上所述,它只是使用DataRow创建一个新实例,而不是将所有数据加载到DataRow中然后再加载。属性本身在第一次被请求时从数据行获取相关数据
在我看来,每当我修复代码中某个单词的小错误或拼写错误时(例如,如果我动态设置标签的文本),重新编译并上传整个应用程序似乎有点愚蠢。对目录页面的修复/更改(现在的方式)可能意味着客户试图查看联系人页面(除了使用相同的母版页之外,与目录页面没有任何关系),但由于正在上载DLL,因此无法进行此操作

基本上,我的问题是,鉴于我目前的情况,人们会如何建议我通过将应用程序拆分为多个应用程序来更改应用程序的体系结构?我的意思是仅仅是客户/管理员,或者客户/管理员和页面浏览量,或者其他方式?或者根本没有?还有其他我在这里没有提到的选择吗?web服务在这里能派上用场吗?比如将目录本身拆分为不同的应用程序,让所有其他页面的母版页使用web服务在左侧列出产品名称?我是不是把事情复杂化了?从这个问题的长度来看,我可能是,这不是第一次。。。我试着保持简短,但总是失败…:-)

非常感谢,如果我刚才把你弄糊涂了,我很抱歉

问候,

Richard开始阅读:

  • 15000 LOC并不是那么大

  • 听起来你不是在为发布而预编译网站。您可能需要阅读以下内容:

  • 重新编译和上传应用程序是最好的方法。如果您要更改的只是标记,则可以单独上载标记(例如,更改aspx页面中的某些html布局)

  • 我不知道你这里所说的应用程序超时是什么意思,但如果你的应用程序域每5分钟循环一次,那么这似乎根本不正确。你应该调查一下

  • 还有,如果你发现自己在工作