none
“1”和“2”两种思路 RRS feed

  • 问题

  • asp.net的Web项目中要使用很多个“Xap”文件(大约10多个),也就是要关联好多个“Silverlight项目”,每个“Silverlight项目”各不相同,但都要和asp.net站点进行通信。
    准确来说是要和Web三层中的“DAL”进行数据交互,主要是“查询”操作,基本上没有“增、删、改”操作。


    项目背景:主要是因为使用“Visifire”插件做图表。每个图表就是一个“Xap”文件,对应着自己要查询的数据集对象。而且需要和后台数据进行绑定,根据条件筛选“对象集合”的信息进行展示。


    问题一:这样的需求是使用“WCF”,“RIA Service”,还是“WebService”合适?

    1、用“RIA Service”,不用分层。
    2、用“WCF”,结合现在的asp.net站点。可以结合“Model”对象,创建List<T>类库“Client”和“Server”(Server链接Client中的类,在一个命名空间。),
    Web站点使用“Server类库”,Silverlight使用“Client类库”。

    问题二:“1”和“2”两种思路,结合asp.net站点,是不是“2”更好呢?因为“SL”客户端基本上没有“增、删、改”操作。

    问题三:一个asp.net站点,关联好多个“Silverlight项目”。每个项目查询的“对象集”不同,服务上应该怎样划分,可以使每个客户端“Xap”(图表)都加载比较快,不影响加载速度?

    问题四:“SL客户端”添加“WCF服务引用”时,是不是可以勾选程序集,选择服务中“若干方法”,而不是全部添加进去?

    有精到广,做出自己的特色。

    2012年2月14日 13:26

答案

全部回复

  • 1: 用“RIA Service”,因为你只要查询。

    2:“每个图表就是一个“Xap”文件”不妥, 加载时间太长。 你用一个xap,   或者用用一个xap再加dll反射

    2012年2月15日 0:53
  • 1: 用“RIA Service”,因为你只要查询。

    2:“每个图表就是一个“Xap”文件”不妥, 加载时间太长。 你用一个xap,   或者用用一个xap再加dll反射

    用一个“Xap”文件吗?  读取不同的数据集,动态生成图表???

    有精到广,做出自己的特色。

    2012年2月16日 1:15
  • 你好,

    我猜想你要用多个xap是因为你是在原有的Asp.net项目中要添加Silverlight控件,这样一来多个.aspx就要引用不同的.xap文件。

    以下是几点意见:

    1. 如果你的Asp.net项目还在刚开始开发阶段,你何不完全开发一个Silverlight项目,这样就只用一个.xap就好。

    2. 如果你的Asp.net是已有的项目,那对于Service你可以选择Ria service, 就像你提到了只需要查询,使用Ria service可以让你减少很多的工作。

    3. 对于Service是否要化分开来,我认为你还是把所有的Service整合在一起,以便日后可以更方便的重用(例如日后可能有要开发一个与现有Asp.net项目功能相同的Silverlight项目的需求)。


    Daoping Liu - MSFT

    2012年2月16日 2:56
    版主
  • 你好,

    我猜想你要用多个xap是因为你是在原有的Asp.net项目中要添加Silverlight控件,这样一来多个.aspx就要引用不同的.xap文件。

    以下是几点意见:

    1. 如果你的Asp.net项目还在刚开始开发阶段,你何不完全开发一个Silverlight项目,这样就只用一个.xap就好。

    2. 如果你的Asp.net是已有的项目,那对于Service你可以选择Ria service, 就像你提到了只需要查询,使用Ria service可以让你减少很多的工作。

    3. 对于Service是否要化分开来,我认为你还是把所有的Service整合在一起,以便日后可以更方便的重用(例如日后可能有要开发一个与现有Asp.net项目功能相同的Silverlight项目的需求)。


    Daoping Liu - MSFT

    是的,3Q...


    有精到广,做出自己的特色。

    2012年2月16日 11:31
  • 你好,

    我猜想你要用多个xap是因为你是在原有的Asp.net项目中要添加Silverlight控件,这样一来多个.aspx就要引用不同的.xap文件。

    以下是几点意见:

    1. 如果你的Asp.net项目还在刚开始开发阶段,你何不完全开发一个Silverlight项目,这样就只用一个.xap就好。

    2. 如果你的Asp.net是已有的项目,那对于Service你可以选择Ria service, 就像你提到了只需要查询,使用Ria service可以让你减少很多的工作。

    3. 对于Service是否要化分开来,我认为你还是把所有的Service整合在一起,以便日后可以更方便的重用(例如日后可能有要开发一个与现有Asp.net项目功能相同的Silverlight项目的需求)。


    Daoping Liu - MSFT

    “你是在原有的Asp.net项目中要添加Silverlight控件,这样一来多个.aspx就要引用不同的.xap文件。”     就是这样的。。。

    大家看小弟的思路可行吗?

    1、在图表加载时,调用WCF RIA Service服务,将使用到的数据集从服务器端同步到客户端。

    2、在客户端的asp.net页面中,选择条件。通过JS和客户端的“XAP”进行通信,操作客户端的数据集,进行不同条件下数据的展示。这样省去了网络通信,只是第一次加载可能时间比较长。

    3、因为页面中使用到了很多图表,不能每个图表都作为一个“SL”项目。所以将图表归类,同类的图表使用同一个“SL项目”,作为一个“XAP”文件,通过不同的参数配置,展示为不同的类型。比如:绑定的数据集的名称。图表的默认类型,等等。


    有精到广,做出自己的特色。

    2012年2月17日 1:41
  • 你好,

    你的思路是可行的。

    但会存在这么一个问题:如果你的数据量很大,那客户端就会有很大的开销,因为你要在客户端为每个页面的都保存数据集,而且会出现每个页面第一面加载会比较慢的现象。所以如果数据量在,选择按需请求数据比较好。

    但是如果你的数据集不大,是可以考虑这样做的,这样做的好处就是提高用户的体验(与数据交互比较快)。


    Daoping Liu - MSFT


    2012年2月17日 2:27
    版主
  • 你好,

    你的思路是可行的。

    但会存在这么一个问题:如果你的数据量很大,那客户端就会有很大的开销,因为你要在客户端为每个页面的都保存数据集,而且会出现每个页面第一面加载会比较慢的现象。所以如果数据量在,选择按需请求数据比较好。

    但是如果你的数据集不大,是可以考虑这样做的,这样做的好处就是提高用户的体验(与数据交互比较快)。


    Daoping Liu - MSFT


    谢谢您,还有几个问题想请教下您。

    问题一:数据量也不小呢,“按需请求数据”该怎么做呢?

    问题二:客户端的数据集是存储在哪里的呢?用户PC的内存中吗?



    有精到广,做出自己的特色。

    2012年2月18日 7:53
  • 用什么做通信其实都影响不大,是你的多个.xap你在纠结。

    你可以只开发一个图表容器组件,每个图表应用单独开发,然后通过动态装作查看需要的图表即可。


    Microsoft MVP(Silverlight) BLOG:http://beniao.cnblogs.com MSN:beniao@live.cn

    2012年2月20日 11:56
  • 谢谢您,还有几个问题想请教下您。

    问题一:数据量也不小呢,“按需请求数据”该怎么做呢?

    问题二:客户端的数据集是存储在哪里的呢?用户PC的内存中吗?

    你好,

    我说的按需请求数据是指你的页面要显示多少数据就从服务端返回多少数据,这样你就不用一次性把所有数据都返回到客户端了,这样不仅可以提高效率,而且也减小了客户端的负担。

    你做的图表显示,可以保存在用户内存中,这样可以提高用户体验。其实你还可以在服务端中建立数据缓存,把请求过的数据先缓存起来,下次请求的时候就可以直接调用了,而不需要再次从数据库中进行查询,这样也可以提高效率。


    Daoping Liu - MSFT

    2012年2月21日 2:08
    版主
  • 是的,多个“.xap”文件在纠结。

    您所说的“图表容器组件”指什么?能详细点吗???


    有精到广,做出自己的特色。

    2012年2月21日 4:11
  • 谢谢您,还有几个问题想请教下您。

    问题一:数据量也不小呢,“按需请求数据”该怎么做呢?

    问题二:客户端的数据集是存储在哪里的呢?用户PC的内存中吗?

    你好,

    我说的按需请求数据是指你的页面要显示多少数据就从服务端返回多少数据,这样你就不用一次性把所有数据都返回到客户端了,这样不仅可以提高效率,而且也减小了客户端的负担。

    你做的图表显示,可以保存在用户内存中,这样可以提高用户体验。其实你还可以在服务端中建立数据缓存,把请求过的数据先缓存起来,下次请求的时候就可以直接调用了,而不需要再次从数据库中进行查询,这样也可以提高效率。


    Daoping Liu - MSFT

    谢谢您,谢谢。

    您看这种思路可行吗?

    1、使用一个Sliverlight的项目,这个项目包含多个“的XAML”页面。

    2、每个 XAML页面对应于一个图表,该图表绑定一系列的数据。

    3、在“asp.net”页面中,引入“xap”文件时为其指定参数,设置“xap”文件从哪一个“XAML”页面启动。也就是显示哪一张图表。

    4、这样所有的图表就都在同一个“XAP”文件中了。


    有精到广,做出自己的特色。

    2012年2月21日 4:16
  • 你好,

    有一种方法你可以尝试一下,运行导航框架与JS交到相结合。

    第一步,用导航框架设计好每个页面。请参考文档:http://msdn.microsoft.com/zh-cn/library/cc838245(v=VS.95).aspx

    第二步,在每个asp.net 页面中用Javascrip传参选并调用Silverlight里的方法(导航方法)导航到相应的的页面。请参考文档:http://msdn.microsoft.com/zh-cn/library/cc645076(v=vs.95).aspx


    Daoping Liu - MSFT

    2012年2月21日 5:36
    版主
  • 你好,

    有一种方法你可以尝试一下,运行导航框架与JS交到相结合。

    第一步,用导航框架设计好每个页面。请参考文档:http://msdn.microsoft.com/zh-cn/library/cc838245(v=VS.95).aspx

    第二步,在每个asp.net 页面中用Javascrip传参选并调用Silverlight里的方法(导航方法)导航到相应的的页面。请参考文档:http://msdn.microsoft.com/zh-cn/library/cc645076(v=vs.95).aspx


    Daoping Liu - MSFT

    嗯,谢谢您。

    好好研究下,您感觉本人的思路怎么样啊,可行吗?


    有精到广,做出自己的特色。

    2012年2月21日 6:27
  • 嗯,谢谢您。

    好好研究下,您感觉本人的思路怎么样啊,可行吗?

    你好,

    关于你说的“在“asp.net”页面中,引入“xap”文件时为其指定参数,设置“xap”文件从哪一个“XAML”页面启动。也就是显示哪一张图表。”我没有试过,你可以自己尝试一下。

    如果可以,你可以发在这里给我们分享一下。


    Daoping Liu - MSFT

    2012年2月22日 2:22
    版主
  • 嗯,谢谢您。

    好好研究下,您感觉本人的思路怎么样啊,可行吗?

    你好,

    关于你说的“在“asp.net”页面中,引入“xap”文件时为其指定参数,设置“xap”文件从哪一个“XAML”页面启动。也就是显示哪一张图表。”我没有试过,你可以自己尝试一下。

    如果可以,你可以发在这里给我们分享一下。


    Daoping Liu - MSFT

    谢谢您,谢谢您一直以来的帮助,问题解决了,但还是有点问题想请教下您。

    前台:

                                

    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="1100" height="650">

               <param name="source" value="../ClientBin/MyCharts.xap"/>
    <param name="initparams" value="ChartType=WaterMonitoring" />
               <param name="onError" value="onSilverlightError" />
               <param name="background" value="white" />
               <param name="minRuntimeVersion" value="4.0.50826.0" />
               <param name="autoUpgrade" value="true" />
               <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
           <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"/>
               </a>
       </object>

    后台:   

    private void Application_Startup(object sender, StartupEventArgs e)
            {
                string  charttype = e.InitParams["ChartType"].ToString();
                if (charttype == "")
                {
                    this.RootVisual = new MainPage();
                }


                if (charttype == "ElecMonitoring")
                {
                    this.RootVisual = new ElecMonitoring();
                }


                if (charttype == "WaterMonitoring")
                {
                    this.RootVisual = new WaterMonitoring();
                }
            }

    问题:这样根据条件来加载“XAML页面”,是不是比较节省资源???没有用到的页面不被初始化,不用进行数据通信。



    有精到广,做出自己的特色。

    2012年2月28日 3:55
  • 你好,

    请参考 http://social.microsoft.com/Forums/zh-CN/silverlightzhchs/thread/4a0ceb55-b1d9-46fd-ab4c-fb7048bd1794

    以后请对一个问题只开设一个帖子,这样便于论坛的管理,也便于其他论坛成员对帖子的浏览。

    谢谢合作。


    Daoping Liu - MSFT

    2012年2月28日 4:45
    版主
  • 你好,

    请参考 http://social.microsoft.com/Forums/zh-CN/silverlightzhchs/thread/4a0ceb55-b1d9-46fd-ab4c-fb7048bd1794

    以后请对一个问题只开设一个帖子,这样便于论坛的管理,也便于其他论坛成员对帖子的浏览。

    谢谢合作。


    Daoping Liu - MSFT

    好的,谢谢。。。

    有精到广,做出自己的特色。

    2012年2月29日 0:51