探讨一下分布式结构在网络应用中的种种好处

分布式|网络

以前我在开发中小型企业网站的时候,都是倾向于使用明确简单的直译型代码来进行开发(asp或php),一来可以缩短开发周期,二来日后维护修改起来容易。不至于遇到连自己也看不懂的尴尬情况,的确,我到现在为止还是在采用着这一快捷而有效的方式进行小型项目的开发。

但如果遇到复杂一点的网络应用程序诸如MIS系统、ERP等,使用这种开发手段似乎就
显得有点力不从心。经常会碰到一些诸如数据库读写的安全性不足、数据库更换困难、代码编写量大、几乎无法扩展等种种的烦恼。在我寻找如何解决这些烦恼的过程中,我发现使用ASP.Net架构的分布式的N层结构来进行开发可以有效的解决以上问题。

可扩展性与可重用
构建分布式N层结构网络应用的精髓在于将程序中的业务逻辑(BLL)和数据库访问逻辑(DAL)分离成两个独立的组件。从而使你编写的代码更容易维护,适应性也更强。例如,如果你想将数据库从SQL Server改变到Oracle,将会是很容易的。你只要在数据访问逻辑层进行更换,其他众多已开发好的业务逻辑程序基本无须修改就能运行。同样的道理,如果你想将已开发好的系统从一个基于B/S结构的Web应用转移到一个桌面EXE版本的话,你只要再重新开发一个可供EXE版本调用的业务逻辑层(BLL)组件就可以了。当然,使用这种分布式N层结构还有着许多“可重用”的优秀特性...,比如,你可以将你的业务逻辑组件(BLL)放到你的服务器机群中(如果你有的话)来处理更多的请求。
同时,使用这种分布式结构进行开发,有利于我们在团队中明却责任与任务,从而能有效的调用更多的人来参与开发项目。

数据读写的安全性与性能优化
同时我们在数据库访问逻辑(DAL)层中也可以使用诸如存储过程...等手段来带来很多数据读写上的优势,
其优势主要表现在以下几个方面:

·安全性:一般我们在用ASP写数据库调用时都是直接将帐号与密码写在代码里头,这样很容易被泄露给
第三方,采用存储过程后,我们将数据库对用户设置成只开放对存储过程的数据读写,这样就避免了数据被
直接读写的可能。
·性能的优化:由于存储过程是预编译的,在首次运行存储过程时,查询优化器对其分析、优化,
并给出最终存在系统表中的计划。
·可扩展性:已开发好的数据库存储过程,可以被程序多次调用,同样也可以被其他语言所开发的程序
调用。
以上这些我使用.Net架构进行开发的一些心得,在这里发布出来,只是为了抛砖引玉,希望能得到同行的指导。我相信在程序设计结构方面、数据读写优化等方面还有着更为科学、有效的开发技巧。欢迎有在这方面同样感兴趣的朋友与我交流,共同提高!

时间: 2024-12-03 04:29:18

探讨一下分布式结构在网络应用中的种种好处的相关文章

c语言-冒泡排序可以这样写吗,我只对结构体数组中某一个元素进行排序,然后交换

问题描述 冒泡排序可以这样写吗,我只对结构体数组中某一个元素进行排序,然后交换 struct troop { char name[1]; int a[3]; }tro[4]; void bubblesort(int a, int b, int c) { struct troop temp; int i, j; for (i=a; i { for (j=a+1; j { if (tro[j].a[c] > tro[i].a[c]) { temp = tro[j]; tro[j] = tro[i];

如何在结构体数组中删掉重复值

问题描述 如何在结构体数组中删掉重复值 假如结构体数组中的数据为:3 3 5 5 5 3 7 0 2 5 ,删除后的结构体数组中的数据为:3 5 3 7 0 2 5 解决方案 用个土方法吧,先吧结构体的数据截取出来,放在数组里遍历.在截取该数组的足后一个对象来遍历比较是否有相同的,有就删除,没有就吧该对象存放在新的数组中. 解决方案二: 如果你的数据最大小于数组的长度则可以这样实现.思想: 根据拆装箱思想,先统计各个数据重复个数,再删除重复数据 #include #include using n

c程序设计-C语言截结构体指针中的变量又是另一个结构体指针,怎么用,代码运行不了

问题描述 C语言截结构体指针中的变量又是另一个结构体指针,怎么用,代码运行不了 #include #include #include #include #define LIST_INIT_SIZE 100//线性表存储空间的初始分配量 #define LISTINCREMENT 10//线性表存储空间的分配增量 typedef struct { int No; char name[10]; }Student; typedef struct { Student *elem;//存储空间基址 int

编程c语言-vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表

问题描述 vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表 这样定义对么 编译时报错 缺少:在*前面 这是哪错了啊 请高手指点指点 解决方案 你把两个结构体的定义调换一下次序就没问题啦,要先声明或定义结构体:Station,才能使用 解决方案二: 因为struct Station是在struct Train结构体之后才定义的,所以你要在这之前先声明一下struct Train 解决方案三: 做一个前向声明,或者调换两个结构位置都可以. 解决方案四: 结构体数组

struct-请教结构体声明中内存状况

问题描述 请教结构体声明中内存状况 数据结构如下: typedef struct{ char str[10]; }SElemType;//自定义元素类型. typedef struct{ SElemType *base; SElemType *top; int stacksize;//栈长度. }SqStack;//顺序栈 假设我现在声明一个数组SqStack Sq[10];那么这时内存中怎么个表示情况?这个数组声明时SElemType中的str[10]数组有没有同时声明呢?换句话说,声明的Sq

c++struct 2 c#- 这个c++ 结构在c#中如何定义呀

问题描述 这个c++ 结构在c#中如何定义呀 在c#中我是这么定义的 ConStartFlags 这里面总数据是对的. 但是提取 base ,和mul数据就不对了 [Flags] public enum ConStartFlags { Base=0x1E, Mul=0x2 } [StructLayout(LayoutKind.Sequential,Pack = 1, CharSet = CharSet.Ansi)] public struct MWORD { public enum WordEn

《Hadoop MapReduce实战手册》一1.8 在分布式集群环境中设置Hadoop

1.8 在分布式集群环境中设置Hadoop Hadoop MapReduce实战手册 Hadoop的部署包括一套HDFS.一个JobTracker和多个TaskTracker.在1.5节中,我们讨论了HDFS的部署.为了设置Hadoop,我们需要配置JobTracker和TaskTracker,然后在HADOOP_ HOME/conf/slaves文件中指定TaskTracker列表.当我们启动JobTracker时,它会启动相应的TaskTracker节点列表.图1-5描述了一套完整的Hado

c++-C++ 6.0按照结构体数组中多个字段的排序

问题描述 C++ 6.0按照结构体数组中多个字段的排序 用系统库函数怎么实现?传函数指针么?但是多个条件没办法传函数指针的,用冒泡排序行么 解决方案 自己写一个比较器,作为参数传给qsort 大概的写法 if (a.字段1 == b.字段1) return a.字段2 - b.字段2; return a.字段1 - b.字段1; 解决方案二: 楼主还不如自己写一个来的好 解决方案三: 在丁一结构体里面定义bool operator <

从非结构化数据中发现问题 富国银行的风险分析之道

9月初,美国消费者金融保护局称美国富国银行(Wells Fargo)员工在未告知客户的情况下,自2011年起私自建立近两百万个虚假银行账户,富国银行被要求支付1.9亿美金高额的罚款. 9月中旬我也在大洋彼岸见到了美国富国银行企业模型风险部副总裁刘维政(Richard Liu),第二次见面没有客气,一上来我就提出了"幽灵账户"和风险管控的问题.虽然刘维政最近正热衷于研究和学习太极,但他却并没有和我"打太极". "这一现象其实在很多银行都可能发生,可能只是没有