Martin Fowler于那个墨宝《重构》一开,提到了Message
Chains坏味道。这种坏味道的见特征是当调用者需要履行有意义时,需要调用连续的大都单点子,才会最终达成目的。这种调用方法的消息传递就比如链条一样,因此Fowler将那个命名为Message
Chains。

  这是咱介绍SharePoint开发入门的第一首,在当时同一篇里,我们会介绍SharePoint开发的几乎独第一物理路径,一些开技巧及极端基础的WebPart开发。

 

开发工具

这种坏味道暴露了了多实现细节。它将获得最后结出的所有过程暴露无遗。它不厌其烦地陈述在:首先该得到什么目标,然后再调用返回结果的啊办法获得中对象,接着,再调用中间对象的对应措施去得结果,如此传递下去,直到抵达我们的目的地。服务之提供者弄错了调用者的角色。调用者不是旅游者,需要导游展示沿途的景色;调用者更像是饭堂的门客,只在乎菜品的色香味,却连无体贴及时道菜品是怎做下的,那是厨师的天职。

  在SharePoint 2013开发中,我们运用的凡Visual Studio
2012/2013清一色只是,但是VS2012只要格外安装Microsoft Office Develop Tools for
Visual Studio 2012,可以使Microsoft Web PlatForm Install进行安装。

 

几个重要职位

招Message
Chains坏味道之原由是设计者没有充分好地领悟封装的概念,他愿意劳动更周全有,可这种全面带来的结果是自讨没趣。

  SharePoint开发中,不仅仅是WebPart,我们都常常会面使用的几个主要岗位,如下:

 

GAC:

于筹划受到,有另外一栽常见的模式及的相似,却能够取得不同之职能,那便是Fluent
Interface模式,它便给翻译为“连贯接口”。Fluent
Interface主要用在DSL(Domain Specific Language)中。Martin
Fowler将其定义也“能够为平文山会海措施调用中转或保护指令上下文的一言一行”。Fluent
Interface中定义之措施常常是返回该品种我之实例。Fluent
Interface模式于许多动态语言如php、ruby中落大量用到。C#的LINQ也使了该模式。ThoughtWorks的见领袖Neal
Ford在那系列文章Evolutionary architecture and emergent
design中,介绍了该模式的以。文中提供了之类代码,以演示Java中哪兑现Fluent
Interface:

  C:\Windows\assembly,也即是布置的岗位;

public class Appointment {
    private String _name;
    private String _location;
    private Calendar _startTime;
    private Calendar _endTime;

    public Appointment(String name) {
        this._name = name;
    }

    public Appointment() {
    }

    public Appointment name(String name) {
        _name = name;
        return this;
    }
    public Appointment at(String location) {
        _location = location;
        return this;
    }

    public Appointment at(Calendar startTime) {
        _startTime = startTime;
        return this;
    }

    public Appointment from(Calendar startTime) {
        _startTime = startTime;
        return this;
    }

    public Appointment to(Calendar endTime) {
        _endTime = endTime;
        return this;
    }

    public String toString() {
        return "Appointment:"+ _name +
                ((_location != null && _location.length() > 0) ? 
                    ", location:" + _location : "") +
                ", Start time:" + _startTime.get(Calendar.HOUR_OF_DAY) +
                (_endTime != null? ", End time: " + 
                _endTime.get(Calendar.HOUR_OF_DAY) : "");
    }
}

ISAPI位置,SharePoint API:

 

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\ISAPI;

以下是Fluent Interface的使用:

CONTROLTEMPLATES位置,SharePoint控件/模板:

AppointmentCalendarChained calendar =
            new AppointmentCalendarChained();
calendar.add("dentist").
         from(fourPM).
         to(fivePM).
         at("123 main street");

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\TEMPLATE\CONTROLTEMPLATES;

个中,AppointmentCalendarChained类的add()方法返回的凡实现了Fluent
Interface模式之Appointment对象。

XML位置,SharePoint描述性文件位置:

 

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\TEMPLATE\XML;

用Fluent
Interface模式之代码,具有自身阐述领域逻辑的力,它不同于Message
Chains,因为它们的作用并无是一旦表现消息传递的经过。Fluent
Interface中每个方法都是调用者需要关怀的。而且,Fluent
Interface方法好自由组合,并无便于封装。由于调用方式是完全一致的,只要有矣合理之命名,代码的连贯性就设行云流水。领域让设计之布道者Eric
Evans曾提及,他所点到的Fluent Interface都是故来装配Value Object。Value
Object没有具备业务领域意义的实业和之对应,它们得以为随心创建随心抛掉。本例中的Appointment正是如此的Value
Object。有关Value Object的知,请参考Eric Evans的经名篇Domain Driven
Design-Tackling Complexsity in the Heart of Software。

Layouts位置,SharePoint发布页面:

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\TEMPLATE\LAYOUTS;

Feature位置,SharePoint功能布局位置:

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\TEMPLATE\FEATURES;

Images位置,SharePoint图片素材库:

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\TEMPLATE\IMAGES;

LOGS位置,SharePoint日志文件:

  C:\Program Files\Common Files\microsoft shared\Web Server
Extensions\15\LOGS

WebPart简介

  WebPart,顾名思义就是Web部件的意思,简单明了就是是页面及贯彻自然成效的一个个局部;SharePoint的WebPart,是用应用程序集部署到GAC或者Bin目录下,在Web.Config加入大称(SharePoint不识别未提高名称的WebPart),下面,我们简要介绍下什么样创造一个WebPart。

WebPart创建过程

1、创建项目,项目类别为SharePoint2013空项目,如下图:

逻辑学 1

2、选择解决方案类型,这里选择会解决方案,如下图:

逻辑学 2

3、在档次里补充加新项,选择Web部件,如下图:

逻辑学 3

4、添加新项后,项目如下所示:

逻辑学 4

  如齐图,右侧目录包括:一个Feature文件,WebPart文件,强名称;左侧包括,一个创办控件方法,一个输出方法。

5、修改Feature文件,如下图:

逻辑学 5

6、修改WebPart属性(标题和讲述),如下图:

逻辑学 6

7、添加相应措施的代码,然后部署,如下图:

逻辑学 7

8、在页面及上加webpart,如下图:

逻辑学 8

9、添加后,保存页面,如下图:

逻辑学 9

10、点击Button测试,如下图:

逻辑学 10

  如达到图,点击测试后行事件,将Label的Text修改了,说明程序执行成功。当然,这就是一个测试WebPart的Demo,你可以描绘简单的图纸轮播部件,复制的逻辑处理部件,都是从未有过问题的,只是丰富之中的艺术罢了。

而外测试Demo,还有几触及使说明的是:

  项目文件里CustomWebPart.webpart部署于网站设置,Web部件库,如下图:

逻辑学 11

WebPart属性面板配置

  当然,我们尚可以吗WebPart添加右侧的性质面板,方便将来于WebPart的配置,我们只有待以CustomWebPart.cs文件之中,声明一下变量即可:

private string url = "http://www.cnblogs.com/jianyus";
[WebBrowsable(true)]
[WebDisplayName("Url")]
[WebDescription("This is Site Url...")]
[Category("设置")]
[Personalizable(true)]
public string myurl
{
    get
    {
        return url;
    }
    set
    {
        url = value;
    }
}

  声明如下图:

逻辑学 12

  效果使下图:

逻辑学 13

  当然,我这边测试是一个单行文本,你可试枚举类型逻辑学(下拉选项),布尔类型(选项)等,只要以地方的法子宣示即可。

  如果,你待分外复杂的特性面板,或者需要带有联动的面板,那么,你得参考EditorPart或者ToolsPart,在此处不开展深入介绍,我之博客有相关内容的博文,欢迎参考。

  最后,介绍下一个webpart的配置过程,dll文件是安排及GAC或者bin目录下的,如果你需要丰富配置文件,可以添加到彼此关联应用程序(端口下)web.config,然后在webpart里依照.net的点子读取,即可。

  由于本文是付出入门级别的博文,请大神勿喷,如产生观点,欢迎在博客后留言进行追究,特别说一样名声:谢谢!

  以上,基本就是WebPart开发的基础知识,现在,你可以参见者,开发一个大概的WebPart练练手了,记得,不要光写代码,要效仿着思想与掌握。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图