维坦

感谢您的关注!


  • Oct
    29

    Silverlight Tools RTW 英文版释出

    Filed under: 编程; Tagged as:

    Silverlight Tools

    http://www.microsoft.com/downloads/details.aspx?FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&DisplayLang=en

     


     

    Silverlight Toolkit

    http://www.codeplex.com/Silverlight

     

    Silverlight Toolkit 是什么?

    Silverlight Toolkit 是搜集 Silverlight 控件, 组件和在 Silverlight 发行版之外有用的部分. 它为设计和开发人员迅速的提供新功能, 还能借力社区以便帮助快速定位 创意和 BUG 修复. 第一个发行版本包含 12 个新控件 (图表 样式 布局和用户输入) 的完整源代码 单元测试, 例子和文档.

    演示地址:

    http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html

    http://silverlight.net/samples/sl2/toolkitchartsamples/run/default.html

     

    No Comments
  • Oct
    23

    Blend 和 VisualSVN 的冲突

    Filed under: 随笔; Tagged as:

    关键词: Blend 和 SVN 的冲突

    Silverlight 身上有一样东西, MS 能碰, SVN 不能碰. 是什么?

    呃... 很不时髦的笑话了. 今天却发生在我身上.

    如果你在开发 Silverlight, 肯定离不开 Blend, 你需要用 Blend 来打开解决方案. 当然可能你还需要 SVN 进行源代码管理.

    一切看起来理所当然, 不幸的是, 如果你碰巧使用的是 VisualSVN, 你会发现 Blend 与 SVN 之间罕见的冲突. 受 SVN 管理的解决方案在 Blend 中再也打不开了, 即使是你把 SVN 卸载掉!

    问题出在你的解决方案 (XXX.sln) 文件上面, 使用记事本打开, 末尾会发现这样三行:

    GlobalSection(ExtensibilityGlobals) = postSolution
    VisualSVNWorkingCopyRoot =
    EndGlobalSection

    这是 VisualSVN 用来记录目录的节点, 怕生的 Blend 看到后就会提示打开的解决方案包含不安全代码拒绝打开. 真是个大笑话, 解决方案竟然不能解决问题.

    把这三行删除掉就可以解决这一问题, 注意: .sln 文件的内容对格式要求极严, 你要保证只删除这三行且不留空行才可以.

    如果你也碰巧同时安装了 Blend 和 VisualSVN, 试试这个解决方案吧.

    No Comments
  • Oct
    18

    Silverlight 2 RC1 中文版已发布

    Filed under: 编程; Tagged as:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&DisplayLang=zh-cn

    安装体验较之前的版本好了很多 可以自动对之前的版本进行卸载, 不过强烈建议还是先卸载旧版本之后再装.

    另外:

    从 Shawn Burke's Blog 看到了 Silverlight 接下来的走向, 我们可以看到实际上控件还是很丰富的, 为了尽可能的减少运行时的体积, 非内置的控件将会以控件包的形式发布:

    No Comments
  • Sep
    26

    Silverlight 2 RC0 已发布

    Filed under: 编程; Tagged as:

    Visual Studio 2008 Tools RC0:
    http://go.microsoft.com/fwlink/?LinkId=129043 

    Expression Blend SP1 RC0:
    http://www.microsoft.com/expression/try-it/default.aspx?filter=prerelease  

    Windows Silverlight 2 Dev Runtime RC0:
    http://go.microsoft.com/fwlink/?linkid=129011

     

    我是从 http://silverlight.net/forums/p/30209/97238.aspx#97238 得知的消息之后转到 http://silverlight.net/blogs/msnow/archive/2008/09/25/silverlight-version-2-rc0-released.aspx 找到的下载地址, 详细的我也没来得及细看, 就是这样...

    突然发现近来莫名其妙的忙...

     

    补充: 中文版VS2008用户稍安勿燥

    Installation Requirements:

    Visual Studio 2008 (English) or Visual Web Developer Express 2008 (English) must be installed before installation of Silverlight Tools can continue.  Silverlight Tools is available in other languages at http://go.microsoft.com/fwlink/?LinkId=120319. 

    Build 9.0.30729.XX of Visual Studio 2008 SP1 or Visual Web Developer 2008 SP1 must be installed before installation can continue.  See http://go.microsoft.com/fwlink/?LinkID=122094 for download information. 

    Beta and preview versions of Microsoft Expression Blend must be uninstalled before installation can continue.

    1 Comment
  • Aug
    25

    冲出亚马逊 - 避开 WCF 的序列化

    Filed under: 编程; Tagged as: ,

    或许这个标题会让你觉得很是不解.

    还是先说说为什么会产生这个荒唐的想法吧:

    对于 WCF 来说最应该出现的地方应该是 IIS 中, MSDN 上的例子也是以 IIS 作宿主的居多. 但是我要存放的东西并不多, 所以我并不想用 IIS, 对于静态的页面和 Silverlight 倒还好说, 用 F# 实现的异步并发袖珍静态网站服务器在响应速度方面一点也不亚于 IIS. 至于 WCF, 几经打拼终于自承载了(Self-Host) .

    一切看起来已经没问题了, 可是我又一次败给了我的完美主义... 之前因为要解决 Silverlight 的跨域访问, 曾经在官方论坛上使用了一种构造 Message 的方法成功的把 clientaccesspolicy.xml 返回给客户端了, 这让我变的不安分起来, 要是我能把任意类型的文件返回给浏览器, 那我还自己实现网站服务器做什么?

    本来应该承载在网站中的 WCF, 如今却要扮演网站的角色, 你中有我, 我中有你, 这听起来很有趣, 我曾经这样解释给我的一个朋友听: 我要养鱼, 可我不想麻烦换水, 我希望我的鱼自己会吐出清洁富含氧气的水.

    但是如何实现呢? 似乎不管是什么都逃不过序列化这一关,
    返回字符串?
    结果根结点是 String.
    返回 FileStream 或 MemoryStream?
    够狠! 根结点仍然是序列化后的结果.

    构造 Message 么?
    我有想过, 我曾经想改变 Xml 数据主根结点名为 html, 但字符串内容被转义丢失了所有符号.

    为此郁闷了好久, 但结果却让我非常意外, 以至于我都不想写什么演示代码

    微软其实早就留好了后门: Stream
    对~ 就是这么简单 你只要把各种流 Upcast 为 Stream 就 OK 了! 哭~

    感谢和羡慕官方论坛上的 rico.sauve, 能用英文做关键词来进行搜索真好, 我就是找不到中文资料又不知道英文如何表述所以才会郁闷这么久...

    详见英文版的 MSDN, VS 附带的 MSDN 缺少这篇文章.

    How to: Create a Service That Returns Arbitrary Data Using The WCF Web Programming Model
    http://msdn.microsoft.com/en-us/library/cc681221.aspx

    No Comments
  • Aug
    16

    用于 VS2008sp1 的 SL2b2 简体中文版

    Filed under: 编程; Tagged as:

    下载地址:
    http://www.microsoft.com/downloads/details.aspx?FamilyID=50a9ec01-267b-4521-b7d7-c0dba8866434&DisplayLang=zh-cn

    具休没有什么更新, 只是为了应对 VS2008 的 SP1 补丁而存在的.

    一个 SP1 补丁就很头疼, 这次新的工具包不知道安装是否顺利...

    No Comments
  • Jun
    24

    Silverlight 2 beta2 + WCF = 404 error ?

    Filed under: 编程; Tagged as:

    大致情形是这样的:

    Silverlight 2 beta2 (目前最新的支持 VS2008 中文版的开发包)
    WCF (采用 SL2b2 安装后新增的那个模板创建的)
    LINQ to SQL (对应 SQL 服务器中的四个表)

    使用 DataGrid 控件来显示和编辑 SQL 中的 Component 表, 强大的LINQ帮我创建了一个对应的 Component 类, 查询和显示的过程很顺利

    可是到了更新数据这一步, 却碰上了莫名其妙的 404 错误... 少量可以, 大量数据就会出错.

    The remote server returned an unexpected response: (404) Not Found.

    [OperationContract]
    public List<Component> QueryComponentList(Guid TowerID)
    {
        using (var db = new LINQDataContext())
        {
            var linq =
                from l in db.Component
                where l.TowerID.Equals(TowerID)
                orderby l.Section, l.Number
                select l;
            return linq.ToList();
        }
    }
    [OperationContract]
    public void UpdateComponentList(Guid tid, List<Component> source)
    {
        using (var db = new LINQDataContext())
        {
            ...
        }
    }

    在官方论坛上我看到了N种解释, 总结如下:

    1. 跨域安全问题, 也就是传说中的 clientaccesspolicy.xml 和 crossdomain.xml 两个文件

      clientaccesspolicy.xml

      <?xml version="1.0" encoding="utf-8" ?>
      <access-policy>
          <cross-domain-access>
      <policy>
                  <allow-from http-request-headers="*">
                      <domain uri="*"/>
                  </allow-from>
                  <grant-to>
                      <resource path="/" include-subpaths="true"/>
                  </grant-to>
              </policy>
          </cross-domain-access>
      </access-policy>

      clientaccesspolicy.xml

      <?xml version="1.0"?>
      <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
      <cross-domain-policy>
          <allow-http-request-headers-from domain="*" headers="*"/>
      </cross-domain-policy>

      试试, 虽然我知道不会奏效的.
       

    2. Silverlight 项目中的 ServiceReferences.ClientConfig 文件, 增大 maxBufferSize 和 maxReceivedMessageSize
      <binding name="BasicHttpBinding_WCF" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>

      我加到了 2147483647, 也就是 2G, 结果不行.
       

    3. 网站中的 web.config 文件, 增大若干个 max 开头的属性:
      <bindings>
          <basicHttpBinding>
              <binding name="BasicHttpBinding_WCF" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                  <readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
                  <security mode="None" />
              </binding>
          </basicHttpBinding>
      </bindings>
      <services>
          <service behaviorConfiguration="WCFBehavior" name="WCF">
              <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_WCF" contract="WCF" />
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
          </service>
      </services>

      我估计有几项是客户端根本无法识别的 设置了也没用...
       

    4. 在 web.config 文件中的 system.web/httpRuntime 节点下, 设置 POST 允许的最大长度, 以kb为单位, 那就是 int.MaxValue/1024=2097151
      <httpRuntime maxRequestLength="2097151"/>

      早就知道问题不在这...
       

    5. web.config 中关于 WCF 还有个秘密, 那就是 system.serviceModel/behaviors/serviceBehaviors/behavior/dataContractSerializer
      <behaviors>
          <serviceBehaviors>
              <behavior name="WCFBehavior">
                  <serviceMetadata httpGetEnabled="true" />
                  <serviceDebug includeExceptionDetailInFaults="false" />
                  <dataContractSerializer maxItemsInObjectGraph="2147483647" ignoreExtensionDataObject="true" />
              </behavior>
          </serviceBehaviors>
      </behaviors>

      天啊, 连这个都有人挖出来啦! 兴奋了几秒钟, 发现还是没搞定!

    仔细回忆到底是哪里出了问题, 我发现当数据少于 176 行时是没有问题的, 只要一超过这个数量, 就会弹出异常, 而且感觉上是在异步传递数据之后立即发生的, 比能够上传成功的 176 行数据响应的还快许多, 更奇怪的是虽然 VS2008 跳出异常, 接收到了 404 错误, 但此时任务管理器的 WebDev.WebServer.EXE 和 sqlserver.exe 都正忙着, 查看 SQL 发现数据也是成功写入了...

    那这 404 是哪里来的鬼东西? 无意中直接打开 IE 不经过调试, 结果我也没接收到 404 错误, 真的无奈了, 最后决定死马当活马医. 把上传数据那个函数从 void 类型改成 bool 类型, 让它具备一个布尔型的返回结果, 以确认上传是否成功(之前一直感觉这是多余的).

    [OperationContract]
    public bool UpdateComponentList(Guid tid, List<Component> source)
    {
        try
        {
            using (var db = new LINQDataContext())
            {
                ...
            }
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }

    古怪的问题就这样华丽的消失了...

    别问我为什么, 我也不知道!

    1 Comment