ASP.NET网页设计ASP.NET MVC3 中使用Jsonp跨域会见
感觉很多控件都必须自己去写代码;用了WebMatrix感觉也不是很好,毕竟没有很强的WYSIWYG效果。现在就不知道如何是好了。在信息体系开辟的时,依据相干营业逻辑不免会多体系之间相互登录。一样平常情形下我们必要在多体系之间利用多个用户名和暗码。如许客户就必要在多个系统之间反复上岸。每次登录都必要输出用户名和暗码。比来对照盛行的就是OAuth。新浪微博这个开放体系做的就很好。但OAuth并不是本文会商范围。这里次要会商jQuery1.5jsonp在Asp.netMVC3中的使用。本文使用场景:
假定您的开辟团队欲为某团体公司开辟一整套信息办理体系,今朝主要开辟的就是一套定单体系和一套外部OA体系。条件是这两套体系利用统一套数据库。只是两个分歧的MVC3.0Web项目。也就是说会在统一个IIS上部署两个假造目次。我们的方针是在不利用WCF、WebService等手艺完成跨域登录。也就是说用户用统一个帐号登录了定单体系,那末客户就能够间接登录OA体系。而不必要在OA体系上再输出一次用户名和暗码。反之亦成立。
jQuery1.5JSONP利用:
<scripttype="text/javascript">$(function(){3varoAUri="@ViewBag.OAVRUri";4varuser="@ViewBag.User";5varpwd="@ViewBag.PassWord";7$.ajax({type:"GET",url:String.format({0}Account/AppLogOn?UserName={1}&PassWord={2}&callback=?,oAUri,user,pwd),cache:false,error:function(){alert("程序堕落,请接洽办理员.");},dataType:"jsonp",jsonp:callback,success:function(result){}});});</script>在MVC3.0中创建JSONP公用ActionResult
代码以下:
publicclassJsonpResult<T>:ActionResult{publicTObj{get;set;}publicstringCallbackName{get;set;}publicJsonpResult(Tobj,stringcallback){this.Obj=obj;this.CallbackName=callback;}publicoverridevoidExecuteResult(ControllerContextcontext){varjs=newSystem.Web.Script.Serialization.JavaScriptSerializer();varjsonp=this.CallbackName+"("+js.Serialize(this.Obj)+")";context.HttpContext.Response.ContentType="application/json";context.HttpContext.Response.Write(jsonp);}}JsonpResult复杂挪用以下:
publicActionResultAppLogOn(stringUserName,stringPassWord,stringcallback){returnnewJsonpResult<object>(new{success=true,rankName=rankName},callback);}AppLogOn的action参数完整和上文中的jquery$.ajax参数分歧:
url:String.format({0}Account/AppLogOn?UserName={1}&PassWord={2}&callback=?,oAUri,user,pwd)小结:Jsonp的服务器真个道理实在就是回调一个js函数名(这里是callback参数)将该参数传给服务端,接着再由服务器端实行这个callbackjs函数,同时附上该js函数的参数。好比上文的C#代码:varjsonp=this.CallbackName+"("+js.Serialize(this.Obj)+")";另有一点我们要注重的就是平安隐患成绩:在利用jsonp因为触及到跨域,必要思索到对方站点大概对方体系的平安性成绩。应该制止平安隐患,不克不及滥用jsonp。因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
页:
[1]