Has there ever been a more confusing/difficult time to be a web developer using the Microsoft stack? That's not really my question... I know that the answer is a categorical no. :)
The single page app template that comes with VS 2013 is deplorable.
I've been working on building up a similar project template that uses Angular JS on the client, but I'm starting to spin my wheels a bit porting over the external (openId/oauth) login features.
I believe this is because of the lack of good, single-point-of-truth, and current documentation for Katana's auth/security bits and also because of how unreadable the client side code is in the S.P.A. template in visual studio 2013.
I know that I can get through it, but while I'm struggling with it, I'm wondering:
Are there any good community provided project templates or example code bases in existence that use .NET 4.5 (MVC5/Web Api 2), Angular JS, the new ASP.NET Identity stuff, and the Katana packages?
There's HotTowel.Angular, but it takes no stance on security. Besides, it's a Nuget package, which can't or shouldn't dictate as much as a proper project template can.
I agree with your observations. I have found the following setup that seems to meet your requirements and I think works very well (I don't have a template), I would suggest the following:
Create an empty WebApi2 project and adopt authentication/authorization depicted here
Use a regular index.html in the base directory as a launching point for your angular application. You can either maintain your client packages with nuget, npm, or bower.
Use whatever technique you like for organization of client code.
Personally, I would create 3 projects, One for client code, (mydomain.com) One for your api (api.mydomain.com) and one for your Model/Repository/Data Access layer.
update
Here is an open-source project that might be what you're looking for!
What is Oracle ADF?
On the Internet I found the following definition:
ADF integrates a mix of subframeworks to provide the key functions for
object-relational mapping and other forms of service access, data
bindings, and user interface, along with the functional glue to hold
it all together. ADF stands for 'Applications Development Framework'
and it's developed by Oracle. ADF is a framework and it'll help you
build your applications easily as many of the redundant things that we
do while we develop our applications are taken care by the framework.
But I still have a couple of questions with respect to understanding ADF:
ADF is an extension to the Java EE Framework, and can things that can be done using ADF (including SOA Development) be done by normal Java EE programming? (Please correct me if I am wrong.)
Is it mandatory to learn ADF for doing SOA applications?
It is a web development framework based on JSF. But heavier!!
If you plan doing web development with this, be warned that this framework is not very flexible. It feels like developing web software as in the 1999 with Visual Studio!!
You build everything in the Oracle IDE JDeveloper (incuding UI!) drag and dropping UI widget already made... If you can live with the default look and feel and do not want to include popular JavaScript libraries (jQUery) you should be fine. For example, building intranet applications could be OK. But if you want to do a public web application (Internet) I would not recommend this framework!
ADF is actually 4 "parts":
ADF Business Components is a declarative, meta-data based object relational mapping solution. It provides robust database read/write/update capabilities without the developer having to use Java (hence declarative) though the framework scan be extended with Java to add custom behavior.
ADF Model is a binding layer to bind the UI (ADF Faces based on JSF) without tight coupling UI components to the back end data model.
ADFController implements task flows, an advance on JSF page flows that allow you to break your application up into reusable sets of pages, called task flows, declarative transaction management.
ADF Faces is based on JSF and built on top of Trinidad, an open source JSF framework.
Yes, you can do almost everything ADF provides (not ADF C) in custom Java EE code. But it's a framework - it handles a lot of the repetitive, predictable, redundant code. Also, one can argue that once learned, you can be more productive in ADF than hand coding Java EE applications.
Oracle adf allows you to develop mvc applications that can support enterprise needs mainly.
There are few specific things that you must consider here:
entity objects
These are the core elements of database interaction. They correspond with model layer and business services.
I.e.business logic is implemented here.
view objects
These are the elements that are considered as display elements.
View objects can be updatable or read only.
Updatable view objects are derived from entity objects as any changes in the view objects will reflect in entity object and then reflect in database.
Read only view objects can be developed using standard SQL queries.
application module
These are the core parts of any adf application as they include the view objects those need to be displayed.
Any view that needs to be displayed must be added to application module.
It can also be used for testing the business services as business services need to be validated for correct results before attaching them in the view part.
SOA (Service oriented architecture)
This helps you to develop web services using BPEL language and java .
These web services contain business processes which can be used in adf application which further describe any enterprise application.
Pros:
you can develop enterprise applications really fast as all the operations on the database tables are provided to you in data models itself.
rich set of UI components which can interact in various ways.eg. panel splitter, panel tabbed, decorative box etc.
web services can be consumed within adf easily.
it makes the development faster.
Cons :
heavier compared to other alternatives.
cannot use popular JavaScript libraries like jQuery, Ajax etc.
UI components look too old compared to latest frameworks like Bootstrap,jQuery etc.
ADF just makes development easier.
Yes, you can still develop what you need using the regular Java EE framework
It is not mandatory but it might make your life easier and your development time shorter
Please read http://www.oracle.com/technetwork/developer-tools/adf/overview/index.html
There's also an ADF overview video which may help you understand this technology better.
Oracle ADF (framework) + Oracle Jdeveloper(IDE) make web application very easy and in rapid way.
1.Oracle ADF is a framework on top of JEE stack.
2.it's not required.but if you want to work with oracle SOA suite yes it's required
You can think of ADF as an enhancement to standard Java EE. It has enhancements to multiple layers including data access, business logic and user interface.
SOA is more like a concept and you can implement it with or without ADF.
For your query on Oracle ADF,
In layman terms this is what it means...: ADF provides a commercial Java framework for building enterprise applications. It provides visual and declarative approaches to Java EE development. It supports rapid application development based on ready-to-use design patterns, metadata-driven and visual tools.
1) It is possible to develop by normal Java EE programming, but the complexitity is reduced with ADF (Using jDeveloper IDE) as it follows an MVC architecture.
2) No, ADF knowledge is not that mandatory for SOA.
ADF is a framework to create complex enterprise application based on the JSF framework at easier pace. for some coding sample look at my blog below
adf-webcenter.blogspot.com
Oracle ADF is an end-to-end Java EE framework to make in a simple way the application development using out-of-the-box infrastructure services.
As relevant information:
Use MVC pattern.
Developed (an easily) integrated with Java EE applications.
Some of the out of the box functionality doesn't need codification.
Similar to a BPM tool with TaskFlows
And about your questions:
ADF is an extension to the Java EE Framework, and can things that can be done using ADF (including SOA Development) be done by normal Java EE programming? Yes, you're right, also you can work with JavaEE 7 and JavaEE 6.
Is it mandatory to learn ADF for doing SOA applications? A user action or other activity in an Oracle ADF web application needs to invoke a SOA composite. The invocation is asynchronous and does not require a response. Inside the SOA composite, an Oracle Mediator component can provide routing and transformation, a BPEL component can provide business process orchestration, a human task service can provide workflows, and a decision service can provide complex business rules based decision making.
The Oracle ADF is a 4th Generation Language. In the sense one can create a full fledged Java Web Application in few seconds.
Everything is drag-drop behavior right from database table to modelling views in the pages.
The strong part of ADF is task flows. With task flows we can actually organize thousands of fragments in a single page/flow.
One no need to be an expert in any technology to build an application using jDeveloper/ADF. That will make any Web Developers work simple and easy.
I am trying to find out what is the alternative to using the Web Deployment projects in VS2011 as they do not seem to be supported anymore.
We have a number of projects where we are using them to share .ascx components among different projects.
What is the recommended way to do that now?
We have not yet finalized our plans for Web Deployment Projects for VS 11. We will be working on finalizing those plans in the coming week. If you have a specific scenario that you are trying to unblock I can try and help you. Feel free to send me an email at sayedha {at}[microsoft{dotcom}.
We are using pretty straight-up MsBuild to do stuff. The secret is a hidden target called _CopyWebApplication -- that actually copies the built web application and such to a folder.
I have no idea why something this useful is hidden and undocumented.
Q. We're looking for a way to automate
build process, run test cases and
store build results.
A problem could be raise as the application on which we want to setup this process is an ajax application -- a one page operation application highly rely on JavaScript. The QA team is using QTP to automate their testing.
Q. Now as we're moved to Team Foundation
Server we would like to be in the box
instead to use some other tool for
functions that can also be done in
Team Foundation. Will it a good choice to use Team Foundation instead
of other tool for defining test cases.
Once, they adopt and will generate test cases for the app.
Q. We would like to attach the test
cases with the daily build and also
like to have log/report for monitoring
build progress.
This, I assume, but you can also suggest a practice which can make the aforementioned process more effective and quick.
Thanks.
TFS has a built in test runner but it is aimed at MSTest. What test framework are you using? TFS uses MSBuild in the background and has a template build script with hooks to allow you to customize the process. Read up more about it here.
There is an TFS Web Test but I haven't looked into it much there is nothing stopping you hooking in some open source framework like Selenium into the build process
3.TFS keeps a log of all the builds done much the same as CruiseControl would.
I would recommned "Team Foundation Server 2008 in Action" as it is a very good book that explains a lot about TFS.
Are there any replacements for NUnitAsp that anyone knows of for testing ASP.NET pages?
You can use WatiN or IEUnit.
You can try Selenium.
Please note that both IeUnit and WatiN are discontinued.
Using Selenium directly in tests is not a good idea, as you may probably need to encapsulate page objects.
I'd recommend to use the Playwright for .NET as a web UI automation test tool.
You may also consider using one of these tools:
Atata Framework
Canopy (F#)
Coypu
Test.Automation
TestStack.Seleno
See also
See also the list of Web Application Testing frameworks for .NET that is maintained and up-to-date:
List of Automated Testing Tools and Frameworks for .NET: Web Application Testing.