Permalink
Browse files

replaced links with https version

  • Loading branch information...
biohazard999 committed Feb 9, 2019
1 parent 02b1c2b commit 8650e529a6f25839754c2f0a12e2e03a9ae5219a
@@ -24,10 +24,10 @@ include:
author: Manuel Grundner
author-email: m.grundner@delegate.at
disqus-shortname: delegateat
main-url: http://www.delegate.at
main-url: https://www.delegate.at
site-name: blog.delegate.at
feed-name: blog.delegate.at
site-url: http://blog.delegate.at
site-url: https://blog.delegate.at
version: 0.1.0+164
commit: 6647645fef71cb7041a9f48db5ca7bf17cca79fd
last-update: 2018-10-13
@@ -11,7 +11,7 @@
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Raleway:400,300,600" />
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/styles/github-gist.min.css" />
<link rel="stylesheet" type="text/css" href="//cdn.rawgit.com/noelboss/featherlight/1.3.5/release/featherlight.min.css" />
<link rel="stylesheet" href="http://vjs.zencdn.net/6.6.3/video-js.css" />
<link rel="stylesheet" href="https://vjs.zencdn.net/6.6.3/video-js.css" />
<link rel="stylesheet" type="text/css" href="https://use.fontawesome.com/releases/v5.0.9/css/all.css" integrity="sha384-5SOiIsAziJl6AWe0HWRKTXlfcSHKmYV4RBF18PPJ173Kzn7jzMyFuTtk8JA7QQG1" crossorigin="anonymous">

<link rel="stylesheet" type="text/css" href="/css/normalize.css" />
@@ -43,7 +43,7 @@
<script>hljs.initHighlightingOnLoad();</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="//cdn.rawgit.com/noelboss/featherlight/1.3.5/release/featherlight.min.js"></script>
<script src="http://vjs.zencdn.net/6.6.3/video.js"></script>
<script src="https://vjs.zencdn.net/6.6.3/video.js"></script>
<script id="dsq-count-scr" src="//delegateat.disqus.com/count.js" async></script>
<script src="/js/fastclick.js"></script>
<script src="/js/app.js"></script>
@@ -48,5 +48,5 @@ <h1> {{page.title}} </h1>
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}
@@ -324,23 +324,23 @@ If you could provide a set of instructions (maybe covered by FxCOP rules) we cou

If you like to refer to eXpand i have do disagree. eXpand is great, but the reintegration of modules takes partially weeks... or is simply not reinterateable cause of dependencies. We CAN make a plugin able architecture. we only have to work on it.

[1]: http://www.devexpress.com/
[2]: http://www.devexpress.com/Subscriptions/DXperience/WhatsNew2012v1/xaf.xml
[3]: http://xamarin.com/monoforandroid
[4]: http://xamarin.com/monotouch
[5]: http://xamarin.com/
[6]: http://msdn.microsoft.com/en-us/netframework/aa663324.aspx
[7]: http://www.w3.org/TR/soap/
[8]: http://www.odata.org/
[9]: http://xpo.codeplex.com/
[10]: http://www.devexpress.com/Products/NET/ORM/
[11]: http://www.devexpress.com/Subscriptions/DXperience/WhatsNew2012v1/index.xml?page=58
[12]: http://www.devexpress.com/Support/Center/p/Q408635.aspx
[1]: https://www.devexpress.com/
[2]: https://www.devexpress.com/Subscriptions/DXperience/WhatsNew2012v1/xaf.xml
[3]: https://xamarin.com/monoforandroid
[4]: https://xamarin.com/monotouch
[5]: https://xamarin.com/
[6]: https://msdn.microsoft.com/en-us/netframework/aa663324.aspx
[7]: https://www.w3.org/TR/soap/
[8]: https://www.odata.org/
[9]: https://xpo.codeplex.com/
[10]: https://www.devexpress.com/Products/NET/ORM/
[11]: https://www.devexpress.com/Subscriptions/DXperience/WhatsNew2012v1/index.xml?page=58
[12]: https://www.devexpress.com/Support/Center/p/Q408635.aspx
[13]: /img/posts/2013/MultitierSolution_OData_Project.png
[14]: /img/posts/2013/Add_Service_Reference.png
[15]: http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/c699fd8e-6178-4e1c-9a02-6db7a2b4db87
[16]: http://fizzylogic.azurewebsites.net/2011/05/06/using-odata-with-mono-for-android/
[15]: https://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/c699fd8e-6178-4e1c-9a02-6db7a2b4db87
[16]: https://fizzylogic.azurewebsites.net/2011/05/06/using-odata-with-mono-for-android/
[17]: /img/posts/2013/External_Tools.png
[18]: http://www.mono-project.com/WCF_Development
[19]: http://docs.xamarin.com/ios/tutorials/Working_with_Web_Services
[18]: https://www.mono-project.com/WCF_Development
[19]: https://docs.xamarin.com/ios/tutorials/Working_with_Web_Services
[20]: https://bitbucket.org/biohazard999/multitiersolutionxaf
@@ -7,20 +7,20 @@
---
XAF has the ability to provide DependencyInjection over Domain-Componants, we use XPO so we don't have a chance to use this feature (and yes, i **hate static** methods! (**testing testing testing**))

[http://en.wikipedia.org/wiki/Dependency_injection](http://en.wikipedia.org/wiki/Dependency_injection)
[https://en.wikipedia.org/wiki/Dependency_injection](https://en.wikipedia.org/wiki/Dependency_injection)

# Why? #
It's simple. We have a legacy model with a lot of customers, and can't affort to recreate the model all and all over.

Testing abilities are also a huge factor for our development.

# How? #
It was a really *tricky* task to tell XAF & XPO the trick of DI (or IOC [http://en.wikipedia.org/wiki/Inversion_of_control](http://en.wikipedia.org/wiki/Inversion_of_control))
It was a really *tricky* task to tell XAF & XPO the trick of DI (or IOC [https://en.wikipedia.org/wiki/Inversion_of_control](https://en.wikipedia.org/wiki/Inversion_of_control))


# Okay Let's start #

First of all: The sample uses Unity ([http://unity.codeplex.com](http://unity.codeplex.com)) cause it's well known and supported from microsoft (and fits our needs perfect), but it's also possible to extract this hard dependency through the Service Locator Pattern if you like to. ([http://en.wikipedia.org/wiki/Service_locator_pattern](http://en.wikipedia.org/wiki/Service_locator_pattern))
First of all: The sample uses Unity ([https://unity.codeplex.com](https://unity.codeplex.com)) cause it's well known and supported from microsoft (and fits our needs perfect), but it's also possible to extract this hard dependency through the Service Locator Pattern if you like to. ([https://en.wikipedia.org/wiki/Service_locator_pattern](https://en.wikipedia.org/wiki/Service_locator_pattern))

## The key interfaces! ##

@@ -414,8 +414,8 @@ public partial class XAFDISolutionWindowsFormsApplication : UnityWinApplication
"To avoid this error, you should either start the application under Visual Studio in debug mode, or modify the " +
"source code of the 'DatabaseVersionMismatch' event handler to enable automatic database update, " +
"or manually create a database using the 'DBUpdater' tool.\r\n" +
"Anyway, refer to the 'Update Application and Database Versions' help topic at http://www.devexpress.com/Help/?document=ExpressApp/CustomDocument2795.htm " +
"for more detailed information. If this doesn't help, please contact our Support Team at http://www.devexpress.com/Support/Center/");
"Anyway, refer to the 'Update Application and Database Versions' help topic at https://www.devexpress.com/Help/?document=ExpressApp/CustomDocument2795.htm " +
"for more detailed information. If this doesn't help, please contact our Support Team at https://www.devexpress.com/Support/Center/");
}
}
@@ -623,7 +623,7 @@ It seems like you are making the container available to business objects? I beli

I'm suggesting that you rework the solution by introducing dependencies in your classes, as opposed to having _container.Resolve calls, preferably initialized in a constructor (along with Session) or as injectable properties, and build the object graph in the Composition Root, i.e. at application startup.
Take a look at the following: http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/ http://blog.ploeh.dk/2011/07/28/CompositionRoot/
Take a look at the following: https://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/ https://blog.ploeh.dk/2011/07/28/CompositionRoot/
Thanks. Petre
@@ -638,5 +638,5 @@ The main reason we use this in XPO Objects is to use some services like logging
Cause the fact that the lifetime of objects is controlled by XAF & XPO we didn't find a better way to do this.
[1]: http://www.screencast.com/users/Paragraph-Software/folders/Jing/media/0fd30e6c-8757-4293-91e9-29a1a67e5443
[1]: https://www.screencast.com/users/Paragraph-Software/folders/Jing/media/0fd30e6c-8757-4293-91e9-29a1a67e5443
[2]: https://bitbucket.org/biohazard999/xafdisolution
@@ -250,7 +250,7 @@ public static class IDGenerator
}
```

It also provides support for [Moq](http://code.google.com/p/moq/ "Moq"), and [Unity](http://unity.codeplex.com/ "Unity") based [AutoMoq](https://github.com/darrencauthon/AutoMoq "AutoMoq").
It also provides support for [Moq](https://code.google.com/p/moq/ "Moq"), and [Unity](https://unity.codeplex.com/ "Unity") based [AutoMoq](https://github.com/darrencauthon/AutoMoq "AutoMoq").

```cs
public static class MoqExtensions
@@ -10,7 +10,7 @@ It is not quite complicated, but took me also some hours of work to get it runni
## Why? ##
We'd like to provide a WebAPI to other companies to reduce our amount of work, when handling with other companies data.

Microsoft's [WebAPI](http://www.asp.net/web-api)/[MVC4](http://www.asp.net/mvc) are great frameworks to easily write such platforms. [XPO](http://www.devexpress.com/) and [XAF](http://www.devexpress.com/Products/NET/Application_Framework/) are great products. So let's combine them.
Microsoft's [WebAPI](https://www.asp.net/web-api)/[MVC4](https://www.asp.net/mvc) are great frameworks to easily write such platforms. [XPO](https://www.devexpress.com/) and [XAF](https://www.devexpress.com/Products/NET/Application_Framework/) are great products. So let's combine them.

## How? ##

@@ -22,7 +22,7 @@ The first one is the WebApi project. The second one is the WebMvc Project. The t
In this project goes the whole big stuff (domain logic & co).
Let's start:

First of all we need to install the [Unity.WebAPI](http://nuget.org/packages/Unity.WebAPI/) nuget package. (Attention: if your project is strong signed, this will fail, but the source is not that hard ;))
First of all we need to install the [Unity.WebAPI](https://nuget.org/packages/Unity.WebAPI/) nuget package. (Attention: if your project is strong signed, this will fail, but the source is not that hard ;))

We get this nice little bootstrapper class that allowes us to configure our UnityContainer.

@@ -344,7 +344,7 @@ public class MyBo1

## Back to the future, ahm WebApi ##

We know use a simple pattern called the [RepositoryPattern](http://msdn.microsoft.com/en-us/library/ff649690.aspx) to access our Database via XPO and keep testablility and [Seperation of Conserns](http://en.wikipedia.org/wiki/Separation_of_concerns):
We know use a simple pattern called the [RepositoryPattern](https://msdn.microsoft.com/en-us/library/ff649690.aspx) to access our Database via XPO and keep testablility and [Seperation of Conserns](https://en.wikipedia.org/wiki/Separation_of_concerns):

```cs
public interface IBusinessObjectRepository
@@ -931,7 +931,7 @@ public class MyBusinessObjectControllerTests

### Ready to rock! ###

Starting up our [projects](http://msdn.microsoft.com/en-us/library/ms165413(v=vs.80).aspx) and see something in action.
Starting up our [projects](https://msdn.microsoft.com/en-us/library/ms165413(v=vs.80).aspx) and see something in action.

Hit the page from our controller (http://localhost:3786/api/MyBusinessObject) we get this result:

@@ -954,7 +954,7 @@ Hit the page from our controller (http://localhost:3786/api/MyBusinessObject) we

Nice or is it? :)

Let's check out [fiddler](http://www.fiddler2.com/fiddler2/) an see if we can get some [JSON](http://www.json.org/) from our api.
Let's check out [fiddler](https://www.fiddler2.com/fiddler2/) an see if we can get some [JSON](https://www.json.org/) from our api.

![Fiddler input](/img/posts/2013/fiddler_input.png)

@@ -986,7 +986,7 @@ And delete it:
> As you maybe noticed, i've never startet the application so far. The unit-testing works like a charm.
## WebMvc ##
Here we need a little different package from nuget. Install [Unity.WebMvc3](http://nuget.org/packages/Unity.Mvc3/1.2) This will also work in Mvc4.
Here we need a little different package from nuget. Install [Unity.WebMvc3](https://nuget.org/packages/Unity.Mvc3/1.2) This will also work in Mvc4.


Our little friend the `Bootstrapper` is also present here:
@@ -1139,7 +1139,7 @@ public class HTTPEndpointProvider : IEndpointProvider
}
```

If you need to implement SSL this [post](http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx) from [Scott Hanselmann](http://www.hanselman.com) will help you, and you can use a SSLEndpointProvider:
If you need to implement SSL this [post](https://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx) from [Scott Hanselmann](https://www.hanselman.com) will help you, and you can use a SSLEndpointProvider:

```cs
public class SSLEndpointProvider : IEndpointProvider
@@ -4,9 +4,9 @@
comments: false
tags: ["XAF", "XPO", "Web", "Unity", "UnitTesting", "async", "await", "WebApi", "MVC"]
---
Now we get to the interesting part. Dependency Injection for an [ApiAction](http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection).
Now we get to the interesting part. Dependency Injection for an [ApiAction](https://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection).

The interface of the [first blog post](http://blog.paraoffice.at/how-to-use-dependency-injection-in-xaf) `IRenamer` looks like this:
The interface of the [first blog post](https://blog.paraoffice.at/how-to-use-dependency-injection-in-xaf) `IRenamer` looks like this:

```cs
public interface IRenamer
@@ -6,7 +6,7 @@ tags: ["XPO", "XAF", "WebApi", "Web", "WebMvc", "MVC", "Unity", "UnitTesting", "
---
## XAF Dependency Injection - bring the stuff together #

Somebody of you know that we actually use [FunnelWeb](http://www.funnelweblog.com/). Don't get me wrong, it is a good blog engine, but it's buggy, and it is a playground.
Somebody of you know that we actually use [FunnelWeb](https://www.funnelweblog.com/). Don't get me wrong, it is a good blog engine, but it's buggy, and it is a playground.

I like opensource projects, and i like to contribute to FunnelWeb to make it a better blog engine. But my spare time is really, ...hmm rare? I try to make the best out of this problem and try to write a blog engine (oh no, not another one) that uses all the XPO/XAF/WebApi/WebMvc/Unity/DI/async/await features i blogged about earlier and get the thing into a real working application.

@@ -22,7 +22,7 @@ Some facts i want to keep in mind when i implement this thing:
* I **have to** use *TFSService* or *TFS* with `GIT` or `TFS-SCC`
* I *like* to use *Continious deployment*
* I *like* that other XAF users *can* contribute, and *are able to* learn from my experiences
* I like code [kata's](http://osherove.com/tdd-kata-1/) & I like [trains](http://www.youtube.com/watch?v=hHkKJfcBXcw) ;)
* I like code [kata's](https://osherove.com/tdd-kata-1/) & I like [trains](https://www.youtube.com/watch?v=hHkKJfcBXcw) ;)

In the next weeks i will try to code every WE till this thing is done.

@@ -33,7 +33,7 @@ Inspired by EntityFramework it can provide the metadata and attributes required
## But How? ##


Based on the [Fluent-Interface-Pattern](http://www.martinfowler.com/bliki/FluentInterface.html) it will cure the problem of dealing with String-Magic in Attributes for Criterias, PropertyNames and other ugly stuff in your ModelCode.
Based on the [Fluent-Interface-Pattern](https://www.martinfowler.com/bliki/FluentInterface.html) it will cure the problem of dealing with String-Magic in Attributes for Criterias, PropertyNames and other ugly stuff in your ModelCode.


## Show me, Show me! ##
@@ -383,7 +383,7 @@ Feel free to contact, fork or ask me for questions on twitter, facebook or Email
# Imported Comments #
## Tolis 19 Jul, 2013 ##

Looks great but i do have a question, what about the Application Model it self? There you can do much more than any framework, it is more flexible and multilayered. I m interested to know why your team prefers to invent a code replacement of the amazing XAF application model. You can simply have many models and apply them as you wish. In eXpand as you probably know there are Global Application and Role models as well. Even multiple design time models are possible as you can see in http://apobekiaris.blogspot.gr/2010/08/xaf-models-xaf-models-and-again-xaf.html
Looks great but i do have a question, what about the Application Model it self? There you can do much more than any framework, it is more flexible and multilayered. I m interested to know why your team prefers to invent a code replacement of the amazing XAF application model. You can simply have many models and apply them as you wish. In eXpand as you probably know there are Global Application and Role models as well. Even multiple design time models are possible as you can see in https://apobekiaris.blogspot.gr/2010/08/xaf-models-xaf-models-and-again-xaf.html

## Manuel 20 Jul, 2013 ##
Tolis, It is not a code replacement :) cause it is applied to the TypesInfo before the Model is calculated, it supports the Model. We choose this approach for easier refactoring and code completition reasons. writing attributes lead us to very clutter design, and much errors in our main app is based on typos in string declarations (like spelled a PropertyName / Criterias wrong. ConditionalAppearance for example).
Oops, something went wrong.

0 comments on commit 8650e52

Please sign in to comment.