.NET通讯开源组件有哪些些好用的?

ASP.NET服务器控件 - 人生若只如初见 - ITeye技术网站
博客分类:
ASP.NET服务器控件控件可分为以下几类:
8.WebParts控件
ASP.NET中的Web部件技术提供了一种可以开发出由用户定制和灵活自由的界面的方法。由一个个小零件组成了一个web页,客户端用户可以随意地组合这些零件,添加或删除页面上的零件。要完成这样一个功能要使用WebParts的3个组成部分:最上层的WebParts控件(从Part类中派生,不是一个或一些控件,而是把普通ASP.NET服务器控件,用户控件,自定义服务器控件拖入区域控件中时,这些控件自动成为了WebParts控件)中间层的WebParts结构组件(包括WebPartManager和各种区域控件,他们用来管理和协调WebParts控件)最底层的个性化设置(跟用户个性化设置差不多)。
实现WebParts
WebPartManager是一个不可见控件,所有WebParts控件都要依赖于它,所以首先要添加它,并且要位于所有其他WebParts控件的前面。再添加WebPartZone(是一种区域控件,用来包含WebParts控件,一个页面可以放好多WebPartZone控件,把普通ASP.NET服务器控件,用户控件,自定义服务器控件拖入WebPartZone区域控件中时(这些控件必须位于WebPartZone的&ZoneTemplate&属性内(在设计界面拖动时自动加入该属性)),这些控件自动成为了WebParts控件(WebPart类,就可以用WebPart类的属性了,如title标题属性(webpart控件标题)等,需手动添加
,对于多个服务器控件最好将它们置于用户控件里再添加)。如果在页面运行时要添加或删除或编辑WebPartZone区域控件可拖入CatalogZone区域控件(默认情况下不做任何工作,但在其里再拖入1.PageCatalogPart控件后将用多选框列出当前页面上已删除的WebPart控件的标题用下拉列表框显示所有WebPartZone的标题(在WebPartZone的HeaderText属性里设置)可以将选中的WebPart控件的标题添加到任意WebPartZone区域中,在其里拖入2.DeclarativeCatalogePart控件后对于一些不会显示在webpartzone里的控件可以将其拖到
DeclarativeCatalogePart控件的模板里(智能任务栏里的编辑模板)之后就可以在页面中选中该控件向webpartzone添加该控件了并且同一个控件可添加在多个webpartzone中,在其里拖入3.ImportCatalogPart控件后将允许为页面导入.webpart文件)这仨CatalogPart可以拖入同一个CatalogZone区域控件内)。这时运行页面会发现CatalogZone区域控件一片空白,这是因为还没有设置WebPartManager的DisplayMode属性(只能在后置代码里设置,可以在Page_Load事件里给其赋值):
protected void Page_Load(object sender, EventArgs e)
WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayM(CatalogZone区域控件中
的那仨CatalogPart需要在此模式下工作)
其他DisplayMode属性值及其说明:BrowseDisplayMode(默认模式,普通显示模式,不能编辑)
DesignDisplayMode(设计模式,经过身份验证(web.config中默认的身份验证是windows身份验证,而登录控件是依赖Forms身份验证通过membership api来查询用户的,在windows身份验证下登录控件也能用但是以本机用户身份登录进去的)的用户才能拖动webpart更改页面布局,所以我们要配置membership(开启Forms身份验证的话,如果是windows身份验证只能本机登录页面自然不用配置membership),之前已经讲过,但那是将ASPNETDB.MDF加到自己数据库中,由于改了数据库,需要在web.config中配置成员提供者的connectionStringName属性当然那时完全重新写了一个成员提供者,这里我们直接只是开启Form验证就行了,使用默认的成员提供者AspNetSqlMembershipProvider及数据库ASPNETDB.MDF就可以了,然后利用登录控件登录)
补:对于SQLServer数据库文件(如ASPNETDB.MDF等没有被附加到SQLServer数据库的数据库文件)也能通过数据库连接字符串与之相连,只不过在数据源中选Microsoft SQL Server数据库文件然后浏览,将得到的连接字符串改成:
&add name="ConnectionString" connectionString="Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.Integrated Security=TUser Instance=True"
providerName="System.Data.SqlClient"/&
|DataDirectory| 应该是指应用程序默认数据库文件夹吧,如:App_Data目录,对SQL数据库文件(SQL数据库也适应)的查询,只要在服务器资源管理器的数据库上右键选新建查询即可。
EditDispalyMode(编辑模式,1.AppearanceEditorPart(自定义webpart的视觉属性如宽高),2.BehaviorEditorPart(自定义webpart的行为属性如最小化关闭编辑按钮(只有在共享个性化的设置下才会显示(下面会讲)),3.LayoutEditorPart(自定义webpart的布局属性如选择最小化或正常状态或设置控件将出现在目标区域中的位置的索引),4.PropertyEditorPart(编辑已声明webpart控件的一部分的自定义属性)这四个EditorPart需要在此模式下工作,可以单击每个webpart的编辑来设置)
ConnectDisplayMode(通信模式,允许个webpart间进行通信)
以上5种模式除BrowseDisplayMode模式外,都可以设置webpart,所以ASP.NET默认将保存用户(就是通过身份验证的用户,无论是windows还是Forms身份验证)的个性化设置(WebPartManager的PersonaliZation默认为true)到ASPNETDE.MDF里,同一用户设置完webpart后下次登录进来看到的界面将是上次设计的界面,但对于匿名用户则无法保存个性化信息甚至无法访问本页(webpart个性化不像用户个性化那样通过修改&anonymousIdentification enabled="true"/&就可以允许个性化信息的匿名保存)
接下来我们来设置WebPartZone控件的样式。WebPartZone的WebPartVerbRenderMode属性有俩值Menu(webpart的谓词存在于菜单中,此时可以设置以Menu开头的Style属性)TitleBar(webpart的谓词以链接的形式存在,这时可以设置以TitleBar开头的Style属性)。而对于每种谓词都可以对其设置样式:
ConnectVerb(链接按钮)CloseVerb(关闭按钮)DeleteVerb(删除按钮)EditVerb(编辑按钮)ExpoertVerb(导出按钮)HelpVerb(帮助按钮)MinimizeVerb(最小化按钮)RestoreVerb(恢复按钮)
partstyle(用于设置其内部的webpart的样式,其中有一个HorizontalAlign(设置webpart的对齐方式很有用))
LayoutOrientation(webpartzone内webpart的显示的排列方式)
EmptyZone(当内部没有webpart时显示的文字)
最好不要给webpartzone设置宽和高,因为这样即使关闭其内的webpart,webpartzone还是那么大。
对于那些webpart控件尤其是用户控件,最好在设计用户控件之前就把用户控件里的控件样式设计好,当然也可以现在去用户控件那里改。
在用户控件里给某一控件定义好cssclass,然后再到webpart页css此类,最后再到partstyle里的cssclass运用此类是很好的方法。
前面已经说过WebPartManager的Personallization属性默认为true,webpart在非普通模式下就为通过验证的用户提供webpart个性化设置。但我们要改变默认的ASPNETDB.MDF数据库时,因为连接字符串要改变,所以我们也要从新配置一下webpart个性化提供者(ASP.NET默认的个性化提供者是AspNetSqlPersonlizationProvider)。改变数据库的方法就不说了,现在说一下怎么在跟web.config里配置webpart个性化提供者:
&system.web&
&webParts&
&personalization defaultProvider="MyFirstSqlPersonlizationProvider"&
&providers&
&add name="MyFirstSqlPersonlizationProvider"
type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="连接字符串的name"/&
&/providers&
&/personalization&
&/webParts&
&/system.web&
跟membership成员提供者及Profile成员个性化提供者的设置差不多,完成后,验证用户的webpart个性化信息存储在
aspnet_PersonlizationPerUser表(用户个性化)aspnet_PersonlizationAllUser表(共享个性化)。
个性化范围设置
之前看了aspnet_PersonlizationPerUser表(用户个性化)aspnet_PersonlizationAllUser表(共享个性化)这两个表
。用户个性化表中存储的webpart个性化设置只对当前用户起作用,而共享个性化表中存储的webpart个性化设置对
所有在web.config中设置了verbs="enterSharedScope"的用户或角色都起作用(可在web.config中指定哪些用户或
角色拥有将webpart个性化设置存储在共享个性化表中的权利,则他设置的webpart个性化也能对其他被指定为拥有
将webpart个性化设置存储在共享个性化表的用户起作用)默认情况下webpartmanager的InitialScope属性值是user
就是用户个性化,还有一个值是shared就是共享个性化(当将其设为shared,那么那些被指定为拥有将webpart个性化
设置存储在共享个性化表的用户或角色们只要一个改变了webpart个性化其他人也会跟着改变,如果将值设为user那
么即使在web.congfig中指定了那些用户,那些用户也不会共有webpart个性化设置,所以可以在编程中设置让那些用
户选择是否将接下来的webpart个性化设置保存到共享个性化表中,这样做更为人性化,呵呵,由于这样一来那些用户
就有了两套webpwrt个性化设置(分别位于两个表中)所以当webpartmanager的InitialScope属性值是user时这些用
户就从aspnet_PersonlizationPerUser表中读取设置,当webpartmanager的InitialScope属性值是shared时这些用
户就从aspnet_PersonlizationAllUser表中读取设置)
在web.config中指定那些用户啊或角色拥有将webpart个性化设置存储在aspnet_PersonlizationAllUser表中的可
&system.web&
&webParts&
&personalization&
&authorization&
&allow verbs="enterSharedScope" users="wan"
roles="admin"/&
&allow verbs="enterSharedScope" users="feng"/&
&/authorization&
&/personalization&
&/webParts&
&/system.web&
可以看出这里并没有改变默认的webpart个性化提供者,自然也没有改变默认的数据库。
编程中设置让那些用户选择是否将接下来的webpart个性化设置保存到共享个性化表中:
先将webpartmanager的InitialScope属性值设为user
public partial class _Default : System.Web.UI.Page
private WebPartM
protected void Page_Load(object sender, EventArgs e)
string s = DropDownList1.SelectedV
switch (s)
case "普通模式":
WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayM
case "Catalog模式":
WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayM
case "设计模式":
WebPartManager1.DisplayMode = WebPartManager.DesignDisplayM
case "编辑模式":
WebPartManager1.DisplayMode = WebPartManager.EditDisplayM
case "通信模式":
WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayM
//获取当前页的WebPartManager的实例
wbp = WebPartManager.GetCurrentWebPartManager(Page);
//如果当前用户被配置为webpart个性化可以共享
if (wbp.Personalization.CanEnterSharedScope)
Panel1.Visible =
//Panel1里是供该用户是否共享其个性化设置的选择
//wbp.Personalization.Scope 获取当前webpartmanager的InitialScope属性值的设置
if (wbp.Personalization.Scope == PersonalizationScope.Shared)
RadioButton1.Checked =
RadioButton2.Checked =
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
//选中了是共享
//wbp.Personalization.Scope 获取当前设置,对应webpartmanager的InitialScope属性值
//PersonalizationScope.User对应webpartmanager的InitialScope属性值User
if (wbp.Personalization.Scope==PersonalizationScope.User)
wbp.Personalization.ToggleScope();
//在User与Shared间切换
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
//选中了不共享
if (wbp.Personalization.Scope == PersonalizationScope.Shared)
wbp.Personalization.ToggleScope();
//在User与Shared间切换
protected void LinkButton1_Click(object sender, EventArgs e)
wbp.Personalization.ResetPersonalizationState();
重置刚刚操作的个性化设置
个性化WebPart属性
有时候用户希望保存某个控件(当然这个控件必须位于webpartzone中即必须是webpart控件)的某个属性值,在下一
次访问时仍然能看到上次对该控件的某个属性值的操作。这就用到了个性化WebPart属性(通过在用户控件的后置代码里写一个级别为[Personalizable]的属性(这种属性的值能在页面回发时被保存到webpart个性化表中(具体是那
两个表的哪一个,看你设的user还是shared了)要强调的是在共享个性化模式下该属性既可以保存在共享个性化表里
也可以保存在个人个性化表里(个人个性化表里的属性值要在个人个性化模式下更改了)),当然也可以直接在本页的
后置代码中写(如果你的webpart控件没放在用户控件里)把要保存的该控件的属性写在get与set里。另外如果在页
面添加的控件的ID和用户控件里的同样的控件ID相同不要奇怪,因为其实它们的ID传到客户端是不相同的,因为位于
容器(如panel,用户控件等)里的控件的ID会添加上其父容器的ID作为前缀。
在用户控件的后置代码里写个性化WebPart属性的代码:
[Personalizable]
public string textvalue
get { return TextBox1.T }
set { TextBox1.Text = }
这里保存的是TextBox1的Text属性值。
在webpart页的后置代码里写个性化WebPart属性的代码(如果你的webpart控件放在用户控件Usercon1里):
[Personalizable]
public string textvalue
get { return ((TextBox)Usercon1.FindControl("TextBox1")).T }
set { ((TextBox)Usercon1.FindControl("TextBox1")).Text = }
很奇怪这样不能保存该属性值,难道在webpart页的后置代码里写个性化WebPart属性的代码,
webpart控件不能放在用户控件里?
最后在用户控件里的控件其实在其他容器里有时也会出现这种现象,你如果想给其里面的控件添加事件,发现在该控件的属性边框里没有事件闪电,这时可以手工在用户控件或其他容器的前置代码和后置代码里分别添加。
webpart控件之间的通讯
webpart控件之间的通信机制我们可以实现基于静态连接和动态连接的WebPart通信。
在互相通信的WebPart控件之间,一方作为Provider,另一方作为Consumer,他们之间的数据交互由WebPartManager来管理。在同一个页面中,可以存在多对通信,同一个Provider可以与多个Consumer通信,但是一个Consumer只能从一个
Provider那获取数据。
实现WebPart通信的方法:
(1)定义接口
(2)实现接口成员
(3)在Provider中实现[ConnectionProvider]方法
(4)在Consumer中实现[ConnectionConsumer]方法
(5)在WebPartManager中声明静态连接(如果是静态连接)
原理:Provider实现接口并且在[ConnectionProvider]级别的方法中向WebPartManager提供该接口,WebPartManager向Consumer的[ConnectionConsumer]级别的方法中输送该接口,Provider与Consumer就通过该接口通讯。
基于动态的连接的WebPart通信只是不需要在WebPartManager中声明静态连接,并且添加了一ConnectionsZone。
本例要实现有日历控件的webpart控件(Provider)与有文本框控件的webpart控件(Consumer)之间的通讯:
在website无法直接添加接口文件,可以直接添加一个类文件,然后将其改成接口文件即可:
public interface myinterface
DateTime GetTime();
//只定义了一个方法
日历控件所在的用户控件作为接口提供者,首先要实现接口,并且有一个[ConnectionProvider]级别的方法:
public partial class Calendar : System.Web.UI.UserControl,myfirstinterface//继承接口
protected void Page_Load(object sender, EventArgs e)
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
dt = Calendar1.SelectedD
[ConnectionProvider("myfirstinterface", "myProvider")]
public myfirstinterface theinterface()
//[ConnectionProvider]方法,第一个参数是接口,第
二个参数不知道是啥,不过静态链接的话要在
webpartmanager里ProviderConnectionPointID
里指出来,下面也是一样。
public DateTime GetTime() //实现接口方法
文本框所在的用户控件作为接口接收者,要有一个[ConnectionProvider]级别的方法,在该方法里得到接口完成通讯:
public partial class Formuc : System.Web.UI.UserControl
protected void Page_Load(object sender, EventArgs e)
[ConnectionConsumer("myfirstinterface", "myConsumer")]
public void consumer(myfirstinterface theinterface) //[ConnectionConsumer]方法
TextBox1.Text = theinterface.GetTime().ToString();
得到接口,就可以访问接口的成员了
而在此例中接口的GetTime()已在Calendar里实现了
如果是静态链接,还要在WebPartManager里:
&asp:WebPartManager ID="wpManager" runat="server"&
&StaticConnections&
&asp:WebPartConnection ID="myConnection"
ProviderID="Calendar1" ProviderConnectionPointID="myProvider"
ConsumerID="Formuc1" ConsumerConnectionPointID="myConsumer"&
&/asp:WebPartConnection&
&/StaticConnections&
&/asp:WebPartManager&
动态链接除了加ConnectionsZone,还要将WebPartManager的 DisplayMode 设置为
WebPartManager.ConnectDisplayM而动态链接则不要如此设置。(本人动态链接没实现,有谁知道请留言!)
webpart使用:/hide0511/archive//551020.html
/archive//263538.html
/happyhippy/archive//712399.html
/archive//301994.html (通讯)
http://blog.csdn.net/xuwenwu/archive//1485519.aspx (综合)
浏览: 115521 次
来自: 葡萄牙
opportunity 写道 谢谢kendezhu分享,今天正 ...
谢谢kendezhu分享,今天正好用上了!权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
Posts - 758,
Articles - 0,
Comments - 20983
21:39 by 通用C#系统架构, 56771 阅读, ,
十一休假,杭州西湖边逛了一圈只能用人山人海来形容,浙大紫金港校区也逛了一圈风景如画,建设得真不错很棒,假期就去了这2个地方,然后在家里陪老婆、看孩子、洗尿布、打了几局星际争霸,在网上接了一个B/S架构的内部管理类定制软件、淘宝上收了600元辛苦费后就开始行动了、现在把整个开发过程讲解分享如下文。
23:03 by 通用C#系统架构, 28745 阅读, ,
走火入魔通用权限管理视频讲解(娱乐大家、给生活加点儿料、突破思想框框),第三次录视频希望大家能谅解、都上传好了,给大家分享一下,不足之处请大家指点。
干事情需要要有激情,有力度,要像飞机的发动机一样有强有力的推动力,才容易不断进步走在行业领先的位置上。如何我们死去活来的做架构、做软件、做组件,然后又卖不出1毛钱,那还如在家休息看看电影逛逛街好了对身体也很好,搞那么累干啥?我们这么努力学技术,说白了,就是为了卖点儿钱不是?
23:06 by 通用C#系统架构, 17508 阅读, ,
让管理软件开发人员早点儿回家休息,做个跟老外有的一PK的软件组件,铜墙铁壁的权限组件。
年轻时、精力旺盛,有用不完的劲儿,但是工作经验不多,对各种行业实际应用没有深入的了解,大多停留在表面问题上,做不出过硬的有质量的软件组件来,刚精通C#程序时,发现又需要精通C/S、B/S才可以,这时又发现自己的数据库技术不过关,等刚掌握了SQLServer,又发现自己不懂Oralce,也不懂MySql,自己写出来的程序又不兼容这些数据库,等数据库也都精通了一些,发现自己的写文档能力不行,做个像样的东西非常不容易。
22:13 by 通用C#系统架构, 682 阅读, ,
正文内容加载中...
17:51 by 通用C#系统架构, 750 阅读, ,
摘要: 一些无关紧要的数据、被脱库了什么的, 也没啥的,但是有些比较重要的数据被脱库了,虽然可能没严重的损失,但是会很丢人一样的,被爆出脱库了什么的,总是会比较难为情的,说实话也是蛮丢人的,能多防范就多防范,有漏洞缺点就尽快补救。 为了防止没必要的麻烦发生,我们可以用现成的加密函数、把需要传递的参数进行加密...
12:51 by 通用C#系统架构, 603 阅读, ,
摘要: 当用户都在一个公司内,甚至一个办公室时,喉一下或者跑过去亲自更新一下程序,就可以了,问题就很简单也没多少复杂性,也不怎么考验技术能力。当面对全国10万以上客户端时,问题就来了。1:有的用户打开系统一天也不会关闭,甚至几天都不关闭电脑一直会用下去,这时候系统有升级变更就容易无法及时更新。我们需要开发一...
15:33 by 通用C#系统架构, 647 阅读, ,
摘要: 首先纪念一下今天的股票大跌抓个图,虽然我自己损失不是很大,但是应该大多人都损失不小、也可能有人会继续跳楼,也可能是股市一个新的转折点来了。接着还是重点关注自己写代码优化的主题吧、软件系统当访问量不大、数据量不大时、程序写得好与坏的差别,但是每天有上万人使用时那代码写得好与坏就差别很大了。优化前的系统...
21:47 by 通用C#系统架构, 559 阅读, ,
摘要: 因为大型应用系统可能有几十个子系统,为了减轻数据库频繁读写压力、提高系统的运行速度、反映速度,大型应用系统都需要采用缓存机制提高运行效率。Redis缓存预热实现将来大家很多基础数据都可以缓存获取,不需要从数据库获取。代码其实不在于多,在于给他什么时髦的名字,来个缓存预热就很时髦了,其实也就10行左右...
16:49 by 通用C#系统架构, 956 阅读, ,
摘要: 庞大的业务系统,特别是需要有离线作业操作支持的核心业务系统,需要有强大的基础数据同步功能,基础数据有在增加、有在变动、有在失效,同时有大量的客户端全天侯的在连接服务器、不间断的在处理核心数据。 经过2年的不断完善改进、又有保证性能、又有能保证性能、又支持自动升级的接近完美的客户端诞生了。在这个基础上...
14:25 by 通用C#系统架构, 927 阅读, ,
摘要: 由于这几年互联网电商的快速发展,快递公司也进入了快速发展的绝好快速成长期。随着社会的强劲需求公司的业绩年年攀新高。快速发展的公司都需要有强大的IT信息系统,硬件设备基本上款到了货也可以到了,但是软件系统就不是那么简单了,需要长期的维护完善才能平稳运行。 公司有几十套业务系统需要快速开发、开发队伍的建...
09:32 by 通用C#系统架构, 1923 阅读, ,
摘要: 以前的开发平台里,是用xml语言包实现了多语言功能,现在新的平台里进行了调整,把多语言包资源放在数据库表里实现了。我们系统预留了多语言的配置全局变量、可以通过配置这个参数达到切换多语言的目的我们在选项管理里增加一个多语言选择的选项目,然后有哪些语言资源就加上去下面的表是多语言的数据库设计表结构下面图...
15:05 by 通用C#系统架构, 981 阅读, ,
摘要: 客户的需求如下:所有基礎信息需要記錄創建人,創建時間,更改人,更改時間,刪除人,刪除時間。有停用基礎信息功能(停用不是刪除,只是暫時停用)。基礎信息可以查出已經刪除的信息(有選項可以選擇),有方法把刪除信息撤回。其实很多时候客户的需求也不难,但是全部实现起来总是挺不容易的,因为这个涉及到全局性的设计...
13:04 by 通用C#系统架构, 1448 阅读, ,
摘要: 作为一个完整的整体信息化解决方案需要有足够强大的各种功能,这些功能相对独立,又互相依存。当有需要这样的功能时可以随时拿出来用,适当修改一下就可以满足要求。只有这样才能快速开发各种信息化系统,才能满足各种客户的需求。同步数据需要解决的问题主要有:01:全国性大型集团公司的信息化改造项目会涉及到非常多...
13:14 by 通用C#系统架构, 1253 阅读, ,
摘要: 每个人外表看看都没什么大区别、但是内在的知识、处理问题的能力、解决问题的能力、头脑灵活性都会有很大的差距。软件组件也是一样,有些组件编写厉害,想问题深入,能处理的难题也多,构思巧妙。通用快速开发平台就是这样的一个组件、能处理大型集团化公司的用户权限管理系统、也可以同时处理维护多套信息系统的权限配置管...
23:18 by 通用C#系统架构, 784 阅读, ,
摘要: 由于整个集团公司非常庞大,有上千个分支机构,不可能由总部某个人能管理所有的数据,或者掌握所有的业务。某个业务都会由于某个相应的部门进行管理,例如所有分公司的人力资源,都由总部的人力资源部门管理。哪些分公司谁是人力资源部门的,谁在管理什么事务,只有总部对口的人力资源的人员最清楚。1: 总部有相应的人力...
22:19 by 通用C#系统架构, 913 阅读, ,
摘要: 当公司有几万人,上千家加盟网点,几个庞大的直属分公司后,系统账户的有效管理也是一个头疼的问题,把所有的帐户及时进行科学的管理,有人员离职时及时进行记录,防止离职人员的系统账户有各种安全漏洞。 谁什么时间操作了什么帐户?都进行了什么备注?什么时间阻止了帐户的登录系统的权限?是否有多个人需要处理人员离职...
18:56 by 通用C#系统架构, 738 阅读, ,
摘要: 由于我们同时开发多个大型应用系统同时系统有大量用户、高并发用户,平时访问系统的用户数量就有3万多人在线。需要对几十个系统进行持续优化改进,同时要增强信息系统的各种安全性。如此多的系统、如此多的用户,还要进行各种业务操作;大数据的查询统计等等,数据库系统的压力已经很大,再进行各种安全验证时时的认证,数...
23:04 by 通用C#系统架构, 600 阅读, ,
摘要: 大型业务应用系统很容易受到各种攻击,每加上一道防护就可以减少80%-90%的攻击。我们的核心接口组件里也做了一些限制,有些接口方法只有内网的用户才可以调用,防止外网的用户调用,这样安全性会有很大的提升。只有内网的电脑才可以调用的限制,这样,就防止外面的人非法调用我们的方法,可以提高一些安全性,方法上...
23:00 by 通用C#系统架构, 818 阅读, ,
摘要: 代码生成器进行了改进,针对Oracle数据库生成更优美的代码。这样生成出来的代码,更像微软的风格,更像C#.NET的标准规范,阅读起来也更优美。把Oracle表字段名默认大写, 有_分割等进行了优化,这样用我们代码生成器生成的代码,阅读起来,更顺眼。更能拿得出手了。代码生成器生成代码效率高、规范性强...
22:24 by 通用C#系统架构, 1301 阅读, ,
摘要: 由于信息系统庞大、各种业务子系统、各种开发语言开发的业务逻辑、各种年代维护的代码、各种参差不齐的历史遗留信息系统,面向全国的业务系统,面向某个领域的汽运管理信息系统,面向内部的业务系统,面向外部的各种互联网应用,各种业务系统都需要进行数据的交互。 但是这个时候没有一个标准的全国性的地区数据维护,那很...
23:30 by 通用C#系统架构, 1495 阅读, ,
摘要: 往往我们看到一个好用的工具、就能知道制作这个工具有多少不容易,使用好这个工具也有多少不容易?通用快速开发框架同样也是经过多年的完善改进才到了今天的稳定成熟度,知名程度,为什么能成为全国有名的软件组件自然也有他的道理。有上百号人的开发团队天天使用这个组件、每天有全国各地的几十万用户,全公司十多万员工的...
12:22 by 通用C#系统架构, 799 阅读, ,
摘要: 很多传统企业、包括系统集成类的IT企业,若不是从事专业软件开发领域的,能做出一套适合本公司企业信息化的灵活的信息系统还是很有难度的,还有一些已经多年不写程序的资深开发人员,初学者,都难把一个整套系统实现出来了。 市面上成熟的开发框架要几十万,又想不花那么昂贵的费用,又想有一套自己能驾驭的软件系统平...
11:24 by 通用C#系统架构, 735 阅读, ,
摘要: 我的梦想是给大家提供一个工具、可以用他来提高工作效率、就像战争上,你有一个得心应手的武器一个道理。给大家一个性能良好的信息化武器,就是我的梦想。有一个朋友来信息如下: 我就是企业维护信息的,也不大编程,懂点吧,但是也忘得差不多。最近看了点书,微软的,java的,我感觉自己数据库语句还行,持久层也就是...
12:44 by 通用C#系统架构, 1254 阅读, ,
摘要: 还是我上次提出的那个问题问题:假设一个订单表,1.角色A可以看自己的2.角色B可以看工作组的3.角色C可以看金额是1000元以下的(自定义条件是否可行?如果可以,请详细说明)4.角色D可以看整个部门的5.角色E可以看整个分公司的6.角色F可以看各分子公司的参考代码如下:代码量会非常小,而且根本不需要...
09:09 by 通用C#系统架构, 1714 阅读, ,
摘要: 主管可以看下属的数据,这个是经常用到的一个权限,不管是大公司,还是小公司都需要的功能。通过以下2个方法,可以任意达到想要的效果了,设置简单灵活,还能递归运算下属,有时候简单好用就是硬道理。 #region public List public List GetListByManager...
23:03 by 通用C#系统架构, 1348 阅读, ,
摘要: 公司的短信平台,数据量越来越大了,需要对数据进行一些优化,下面是拆分后的数据库量参考。新开发的软件模块,必须支持分表,拆表的功能一个数据表里,不适合保存1000万以上的记录新开发的业务模块,能分表的全分表,否则,将来我们无法用其他小型数据库,例如mysql 现在系统的短信已经进行了拆表接着打算把日...
19:52 by 通用C#系统架构, 999 阅读, ,
摘要: 客户端会提醒是否有网络订单来了,这样及时处理网络上的用户下单,当然也会有手机短信系统,全国几千个网点就可以协同作战了,竟然有序的处理海量用户的下单。网络订单提醒功能增强效果如下:系统每5分钟会检查一下当前网点是否有订单每个网点都仔细维护好自己所外的地理位置,省、市、县、街道为止。若数据有问题的,还可...
23:08 by 通用C#系统架构, 943 阅读, ,
摘要: 公司的系统庞大后,用户数量也庞大,容易引起各种网络安全相关问题,需要把每个用户的网络安全意识都提高,由于历史原因有些用户的密码过于简单,很容易被猜到,引起很多没必要的麻烦。 系统登录成功后,检查密码复杂度,若密码过于简单就强制要求修改密码,密码修改好后才可以正式使用系统,否则不让进入系统,没有实名认...
09:30 by 通用C#系统架构, 1327 阅读, ,
摘要: 并不是不想做B\S的管理工具,只是精力实在不够,由于用户权限管理组件是基础组件、所以C\S的也无妨,不会有几个人在乎Oracle,SQLServer是否不b\s的,注重的是功能性能,请大家不要纠结与是否B\S还是C\S上。 实现的方法、设计的界面、数据库结构的设计、底层DLL方法的函数调用,都可以...
14:29 by 通用C#系统架构, 1315 阅读, ,
摘要: 由于公司是面向全国服务的、全国各地都有分公司,需要管理到覆盖全国的各种业务,各种业务系统信息系统的数据都需要规范化。 公司开展网络订单功能,在全国范围内实现网络下单、提高工作效率,提高各公司之间的数据交换效率,承接订单的效率,防止沟通交流中的出错率。 通用权限管理系统组件已经实现了内置的电子商务基...
22:34 by 通用C#系统架构, 2165 阅读, ,
摘要: 本人供职于国内一家比较知名的物流公司,一直从事于基层公司物流软件的规划和设计开发工作,在长期的工作实践中深深地体会到作为不是专业的软件行业而又从事软件开发行业的业余性的软件开发设计人员来说,在工作中需要克服的困难和面对的艰辛有多大多难。 对与专业的软件开发设计公司来说,毋庸置疑的一点是都会有自己成...
10:49 by 通用C#系统架构, 1142 阅读, ,
摘要: 由于我们的系统接近有100000个用户账户,经常会有忘记密码的时候,用户多了,很小的一个功能,每天都会有很多人在用,每个功能都非常友善,会提高提系统的效率,提高用户体验。 一天最多能返回3次手机短信,找回密码,防止黑客攻击。当然也可以增加安全性,需要输入用户名才可以获取密码。
09:17 by 通用C#系统架构, 1396 阅读, ,
摘要: 代码生成器大数据分页下面参考代码是简易的数据权限的实现,大多情况下下面的数据权限的功能可以满足很多企业的需要了 #region public DataTable GetDataTableByPage(BaseUserInfo userInfo, out int recordCount,...
13:22 by 通用C#系统架构, 928 阅读, ,
摘要: 我们公司有1万多个网点,每个网点都可以看成是一个公司,公司对不同的网点有不同的策略,商业逻辑,每个网点的人员也都是在不断变化,全国有接近10万从业人员,当我们设计好业务逻辑程序后,不可能因为这些人员的变动,每天都调整角色成员,那不现实。 由于网点繁多,从业人员繁多,那系统权限判断只有适应公司的各种变...
12:09 by 通用C#系统架构, 1151 阅读, ,
摘要: 服务器上保存有上万条的基础数据,需要同步到全国各地的成千上万个客户端,而且这些基础数据也经常在有变化调整。这时候需要有一个稳定的数据同步程序,能分批同步基础数据,由于网络流量,网络的稳定性等因素,需要分批读取有更新过的数据,花费了半天时间写了一个例子代码,客户端同步从服务器上同步基础数据的功能,可以提供给大家参考一下,希望能有重复利用的价值。 // 1:打开业务数据库 SqLiteHelper dbHelper = new SqLiteHelper(BaseSystemInfo.BusinessDbConnection); //...
20:55 by 通用C#系统架构, 1009 阅读, ,
摘要: 尊敬的吉日嘎拉先生:我孩子20XX年考入哈工大威海软件工程专业。近来一直在网上关注程序员的话题,感觉不大好,一是比较辛苦、累; 二是工作不稳定,很难说在某个城市落住脚,不利于以后找对象,生孩子; 三是青春饭,35岁以后感觉路途迷茫。 综合以上因素,我实在不愿意孩子读这个专业,虽然说收入可以,但也失去为人处世的乐趣。我孩子成绩很好,班内第一,院内第三。孩子也在迷茫之中。所以我极为留心书店里的关于程序员的书。发现了你写的《程序员,你伤不起》,毫不犹豫的买了拜读,一天半时间读到了147页,当然其中的“大恶人吉日嘎拉走火入魔闭门造车之。。。。。。&蹦过了。感觉程序员真的不好做。我没有上过大学
22:09 by 通用C#系统架构, 643 阅读, ,
摘要: 公司有几万个用户,接近10万人,有一些紧急的通知,消息提醒,可以发个及时通知工具,这样可以快速把一些信息通知给大家,让大家快速收到信息,及时通知到系统的每个人。自动提示信息现实状态,会在客户端自动谈出来,比较友善,发布的内容支持html格式内容。
20:21 by 通用C#系统架构, 545 阅读, ,
摘要: 当用户数据非常庞大时需要一个功能,就是统计各种账户的访问系统的情况,用户数量的各种参数需要让管理者心里有个数。1:信息系统中有多少有效账户?可以很方便能知道具体个数,让管理者心里有个数。2:某个公司有多少有效账户?让管理者心里有个数。3: 当前在线的账户有多少个,让管理者心里有个数。4:登录过系统的账户有多少个,让管理者心里有个数,多少人在用系统。
09:48 by 通用C#系统架构, 603 阅读, ,
摘要: 可以给自己的信息管理系统增加一些即时消息提醒功能,简单方便,一般是一行代码就可以发送提醒信息了,方便二次开发,个性化改进。1:可以用简拼,快速查找内部员工。2:双击直接可以发QQ消息。3:双击直接可以发手机短信。4:当然也可以把电子邮件地址也加上。5:方便查找本部门人员,本公司人员。6:可以看到头像以及各种联系方式。
12:52 by 通用C#系统架构, 938 阅读, ,
摘要: 整个集团有几万个用户,一个个用户添加是不现实的,只有每个公司的系统管理员添加、或者用户申请帐户,然后有相应的管理员审核,才会更准确一些。每个公司、分公司、部门的账户情况只有所在公司的管理员是最清楚的,所以用户审核制度会很适合实际工作需要。当有用户连续连续输入N次错误密码时,账户就会被锁定,若公司用户少,可以采取人工审核策略,但是由于系统用户庞大,所以人工审核效率有时候会很底,为了增强系统的抗黑客攻击等等考虑,每10次输入错误密码,账户被锁定10分钟,10分钟后才可以重新登录系统,这样也不需要人工审核环节了,及时性也会好很多。当然若紧急情况也不用等10分钟,直接可以通过管理员进行干预直接审核通过
14:11 by 通用C#系统架构, 824 阅读, ,
摘要: 当开发人员多了,开发的系统多了,用户也多了,部署的服务器也多了,各种问题就出来了。1:如何方式黑客捣乱?2:如何防止竞争对手捣乱?3:如何方式核心信息系统的安全?4:如何可以灵活部署,互相不影响?5:如何可以定期修改核心数据库密码、保证安全性,保证部署的灵活性?6:如何保证你代码的整洁、增加方法、服务时可以灵活?7:如何保证跨平台的调用?8:如何保证调试、开发的效率?9:如何保证服务的内部安全性?、部分代码参考如下: #region private void GetObject(HttpContext context, NameValueCollection nameValueC...
13:12 by 通用C#系统架构, 661 阅读, ,
摘要: 用成套的现成的方法引导大家开发程序,整个团队的开发效率会很高、例如我们现在有30多个开发人员,若有300个开发人员,这开发工作很容易乱套,我们需要有效的管理维护所有团队的开发工作、把数据结构、通用的组件都开发测试好,然后给大家用,开发效率会很高,整个团队会节约开发时间、思路也会一致。系统的运行效果如下图:源码在这个位置设计时就这么拖拽就可以了可以在控件的属性里设置连接的目标数据库中的表系统里默认也有一些数据表,可以模仿一下数据库的表结构
12:30 by 通用C#系统架构, 875 阅读, ,
摘要: 要么就一次全成功,要么就一次全失败,插入主表的同时插入关联的子表,主表插入时返回当前插入的主键,字表插入时用这个主键做关联。参考代码如下: /// /// 添加角色(同时添加用户,一个数据库事务里进行处理) /// /// 用户 /// 实体 /// 用户主键数组 /// 返回状态码 /// 返回状态信息 /// 主键 public string AddWithUser(BaseUserInfo userInfo, BaseRoleEntity ent...
C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权
欢迎注册蒙古人交友网站,

我要回帖

更多关于 com组件 的文章

 

随机推荐